i64.extend16_s
Pops an i64 value off the stack, only looks at the first 16 bits, converts it into an i64 value, and then pushes it back on to the stack. This only looks at the first 16 bits of the 64 bit integer. The other bits are lost. The 16th bit is used as a sign flag, therefore it is treated as a signed 16 bit number.

Syntax

i64.extend16_s

Stack In

i64 The value to be converted.

Stack Out

i64 The i64 version of the first 16 bits of the i64 value.

Examples

;; Convert i64 0b00000000_00000001 (1) into an i64 value
i64.const 1
i64.extend16_s

;; The stack contains an i64 value of 0b00000001
;; Convert i64 0xAB124129 into an i64 value
i64.const 0xAB124129
i64.extend16_s

;; The stack contains an i64 value of 0x00004129
;; Convert i64 0xAB12F129 (0xF129 = -3799 as signed 16 bit) into
;; an i64 value
i64.const 0xAB12F129
i64.extend16_s

;; The stack contains an i64 value of 0xFFFFF129 (-3799 as signed
;; 64 bit integer)