i64.shr_s
Pops two i64 values off the stack, shift the first value to the right by the second number of bits, and then pushes the result back on to the stack. This looks at the value as a signed integer (can be negative). The new bit on the left (the most significant bit) will be a 1 if the number is negative, or 0 if the number is positive.
$result = $first >> $second

Syntax

i64.shr_s

Stack In

i64 The first value to be shifted right.
i64 The second value to shift the bits by.

Stack Out

i64 The result of shifting the first value right by the second value's number of bits.

Examples

;; Push the i64 value 0b00101011 (43) onto the stack
i64.const 43

;; Push the i64 value 2 onto the stack
i64.const 2

;; Pop the two i64 values off the stack, shift the first value right
;; by the second value's number of bits and push the result
;; back onto the stack
i64.shr_s

;; The stack contains an i64 value of 0b00001010 (10)
;; Push the i64 value 0xFEDCBA9876543210 = (-81985529216486896)
;; onto the stack
i64.const 0xFEDCBA9876543210

;; Push the i64 value 4 onto the stack
i64.const 4

;; Shift right again but this time the value is negative
i64.shr_s

;; The stack contains an i64 value of 0xFFEDCBA987654321
;; = (-5124095576030431)