1 require_extension('C');
4 switch ((insn
.bits() >> 10) & 7) {
6 switch ((insn
.bits() >> 5) & 3) {
7 case 0: res
= RVC_RS1S
^ RVC_RS2S
; // c.xor
8 case 1: res
= int32_t(RVC_RS1S
) >> (RVC_RS2S
& 0x1f); // c.sra
15 switch ((insn
.bits() >> 5) & 3) {
16 case 0: res
= RVC_RS1S
<< (RVC_RS2S
& 0x1f); // c.sll
17 case 1: res
= uint32_t(RVC_RS1S
) >> (RVC_RS2S
& 0x1f); // c.srl
18 case 2: res
= int32_t(RVC_RS1S
) < int32_t(RVC_RS2S
); // c.slt
19 case 3: res
= uint32_t(RVC_RS1S
) < uint32_t(RVC_RS2S
); // c.sltu
25 switch ((insn
.bits() >> 5) & 3) {
26 case 0: res
= RVC_RS1S
<< (RVC_RS2S
& 0x1f); // c.sllr
27 case 1: res
= uint32_t(RVC_RS1S
) >> (RVC_RS2S
& 0x1f); // c.srlr
28 case 2: res
= int32_t(RVC_RS1S
) < int32_t(RVC_RS2S
); // c.sltr
29 case 3: res
= uint32_t(RVC_RS1S
) < uint32_t(RVC_RS2S
); // c.sltur
37 MMU
.store_uint64(RVC_RS1S
+ insn
.rvc_ld_imm(), RVC_RS2S
);