Sign-extend `val` (a value in the low `bits` bits) to `i64`.
(val: u32, bits: u32)
| 888 | |
| 889 | // Sign-extend `val` (a value in the low `bits` bits) to `i64`. |
| 890 | fn sign_ext(val: u32, bits: u32) -> i64 { |
| 891 | let shift = 32 - bits; |
| 892 | ((val << shift) as i32 >> shift) as i64 |
| 893 | } |
| 894 | |
| 895 | // I-type immediate: bits[31:20], sign-extended to 64 bits. |
| 896 | fn i_imm(word: u32) -> i64 { |