i32.shr_s
Pops two i32 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

i32.shr_s

Stack In

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

Stack Out

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

Examples

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

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

;; Pop the two i32 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
i32.shr_s

;; The stack contains an i32 value of 0b00001010 (10)
;; Push the i32 value 0xF1234567 (-249346713) onto the stack
i32.const 0xF1234567

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

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

;; The stack contains an i32 value of 0xFF123456 (-15584170)