diff --git a/crates/cpu/src/decoder/simple_power_isa.rs b/crates/cpu/src/decoder/simple_power_isa.rs index f768904..32be787 100644 --- a/crates/cpu/src/decoder/simple_power_isa.rs +++ b/crates/cpu/src/decoder/simple_power_isa.rs @@ -2044,6 +2044,37 @@ impl DecodeState<'_> { ); } } + /// for `extswsli[.]` + #[hdl] + fn decode_extswsli(&mut self) { + self.decode_scope( + |this, (FieldRA(ra), FieldRS(rs), FieldSh(sh), FieldRc(rc))| { + connect( + ArrayVec::len(this.output), + 1usize.cast_to_static::>(), + ); + connect( + this.output[0], + ShiftRotateMOp::shift_rotate( + MOpDestReg::new([gpr(ra)], [(MOpRegNum::POWER_ISA_CR_0_REG_NUM, rc)]), + [ + gpr(rs).value, + MOpRegNum::const_zero().value, + MOpRegNum::const_zero().value, + ], + #[hdl] + ShiftRotateMOpImm { + shift_rotate_amount: HdlSome(sh.rotate_right(1)), + shift_rotate_right: false, + dest_logic_op: HdlNone(), + }, + OutputIntegerMode.Full64(), + ShiftRotateMode.SignExt32To64BitThenShift(), + ), + ); + }, + ); + } /// for `mcrxrx` #[hdl] fn decode_mcrxrx(&mut self) { @@ -2279,8 +2310,8 @@ const DECODE_FNS: &[(&[&str], DecodeFn)] = &[ ], |state| DecodeState::decode_shift(state), ), - (&["extswsli", "extswsli."], |_state| { - // TODO + (&["extswsli", "extswsli."], |state| { + DecodeState::decode_extswsli(state) }), (&["cdtbcd", "cbcdtd", "addg6s"], |_state| { // TODO diff --git a/crates/cpu/tests/simple_power_isa_decoder/expected/decode_one_insn.vcd b/crates/cpu/tests/simple_power_isa_decoder/expected/decode_one_insn.vcd index 81de934..8835ca6 100644 --- a/crates/cpu/tests/simple_power_isa_decoder/expected/decode_one_insn.vcd +++ b/crates/cpu/tests/simple_power_isa_decoder/expected/decode_one_insn.vcd @@ -8305,8 +8305,18 @@ $var string 1 3= \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end +$scope struct flag_reg_1_92 $end +$var string 1 4= \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct flag_reg_1_93 $end +$var string 1 5= \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end $scope struct power_isa_cr_reg_43 $end -$var wire 8 4= value $end +$var wire 8 6= value $end $upscope $end $upscope $end $enddefinitions $end @@ -10962,7 +10972,9 @@ sHdlNone\x20(0) 0= sHdlSome\x20(1) 1= sHdlNone\x20(0) 2= sHdlSome\x20(1) 3= -b11111111 4= +sHdlNone\x20(0) 4= +sHdlSome\x20(1) 5= +b11111111 6= $end #1000000 00 @@ -13643,7 +13655,7 @@ b1001 ^< b1001 `< b1001 a< b100 -= -b1001 4= +b1001 6= #11000000 sAddSubI\x20(1) " b10 $ @@ -14114,7 +14126,7 @@ b1010 ^< b1010 `< b1010 a< b1000 -= -b1010 4= +b1010 6= #12000000 0&# 05# @@ -14660,7 +14672,7 @@ b1011 ^< b1011 `< b1011 a< b1100 -= -b1011 4= +b1011 6= #14000000 sAddSubI\x20(1) " b10 $ @@ -15295,7 +15307,7 @@ b1100 ^< b1100 `< b1100 a< b10000 -= -b1100 4= +b1100 6= #15000000 0&# 05# @@ -15761,7 +15773,7 @@ b1101 ^< b1101 `< b1101 a< b10100 -= -b1101 4= +b1101 6= #17000000 sAddSubI\x20(1) " b10 $ @@ -16509,7 +16521,7 @@ b11111111 ^< b11111111 `< b11111111 a< b0 -= -b11111111 4= +b11111111 6= #18000000 sDupLow32\x20(1) $# 1%# @@ -18664,7 +18676,7 @@ b1001 ^< b1001 `< b1001 a< b100 -= -b1001 4= +b1001 6= #24000000 sAddSubI\x20(1) " b10 $ @@ -19160,7 +19172,7 @@ b1010 ^< b1010 `< b1010 a< b1000 -= -b1010 4= +b1010 6= #25000000 0&# 05# @@ -19731,7 +19743,7 @@ b1011 ^< b1011 `< b1011 a< b1100 -= -b1011 4= +b1011 6= #27000000 sAddSubI\x20(1) " b10 $ @@ -20391,7 +20403,7 @@ b1100 ^< b1100 `< b1100 a< b10000 -= -b1100 4= +b1100 6= #28000000 0&# 05# @@ -20882,7 +20894,7 @@ b1101 ^< b1101 `< b1101 a< b10100 -= -b1101 4= +b1101 6= #30000000 sAddSubI\x20(1) " b10 $ @@ -21612,7 +21624,7 @@ b11111111 `< b11111111 a< b101 += b0 -= -b11111111 4= +b11111111 6= #31000000 sDupLow32\x20(1) $# 1%# @@ -23727,7 +23739,7 @@ b1001 ^< b1001 `< b1001 a< b100 -= -b1001 4= +b1001 6= #37000000 sAddSubI\x20(1) " b10 $ @@ -24186,7 +24198,7 @@ b1010 ^< b1010 `< b1010 a< b1000 -= -b1010 4= +b1010 6= #38000000 0&# 05# @@ -24717,7 +24729,7 @@ b1011 ^< b1011 `< b1011 a< b1100 -= -b1011 4= +b1011 6= #40000000 sAddSubI\x20(1) " b10 $ @@ -25340,7 +25352,7 @@ b1100 ^< b1100 `< b1100 a< b10000 -= -b1100 4= +b1100 6= #41000000 0&# 05# @@ -25788,7 +25800,7 @@ b1101 ^< b1101 `< b1101 a< b10100 -= -b1101 4= +b1101 6= #43000000 sAddSubI\x20(1) " b10 $ @@ -26521,7 +26533,7 @@ b11111111 ^< b11111111 `< b11111111 a< b0 -= -b11111111 4= +b11111111 6= #44000000 sDupLow32\x20(1) $# 1%# @@ -28663,7 +28675,7 @@ b1001 ^< b1001 `< b1001 a< b100 -= -b1001 4= +b1001 6= #50000000 sAddSubI\x20(1) " b10 $ @@ -29147,7 +29159,7 @@ b1010 ^< b1010 `< b1010 a< b1000 -= -b1010 4= +b1010 6= #51000000 0&# 05# @@ -29705,7 +29717,7 @@ b1011 ^< b1011 `< b1011 a< b1100 -= -b1011 4= +b1011 6= #53000000 sAddSubI\x20(1) " b10 $ @@ -30353,7 +30365,7 @@ b1100 ^< b1100 `< b1100 a< b10000 -= -b1100 4= +b1100 6= #54000000 0&# 05# @@ -30830,7 +30842,7 @@ b1101 ^< b1101 `< b1101 a< b10100 -= -b1101 4= +b1101 6= #56000000 sAddSubI\x20(1) " b10 $ @@ -31619,7 +31631,7 @@ b11111111 a< b0 $= b0 += b0 -= -b11111111 4= +b11111111 6= #57000000 sDupLow32\x20(1) $# 1%# @@ -33751,7 +33763,7 @@ b1001 ^< b1001 `< b1001 a< b100 -= -b1001 4= +b1001 6= #63000000 sAddSubI\x20(1) " b10 $ @@ -34227,7 +34239,7 @@ b1010 ^< b1010 `< b1010 a< b1000 -= -b1010 4= +b1010 6= #64000000 0&# 05# @@ -34775,7 +34787,7 @@ b1011 ^< b1011 `< b1011 a< b1100 -= -b1011 4= +b1011 6= #66000000 sAddSubI\x20(1) " b10 $ @@ -35415,7 +35427,7 @@ b1100 ^< b1100 `< b1100 a< b10000 -= -b1100 4= +b1100 6= #67000000 0&# 05# @@ -35880,7 +35892,7 @@ b1101 ^< b1101 `< b1101 a< b10100 -= -b1101 4= +b1101 6= #69000000 sAddSubI\x20(1) " b10 $ @@ -36630,7 +36642,7 @@ b11111111 ^< b11111111 `< b11111111 a< b0 -= -b11111111 4= +b11111111 6= #70000000 sDupLow32\x20(1) $# 1%# @@ -38789,7 +38801,7 @@ b1001 ^< b1001 `< b1001 a< b100 -= -b1001 4= +b1001 6= #76000000 sAddSubI\x20(1) " b10 $ @@ -39290,7 +39302,7 @@ b1010 ^< b1010 `< b1010 a< b1000 -= -b1010 4= +b1010 6= #77000000 0&# 05# @@ -39865,7 +39877,7 @@ b1011 ^< b1011 `< b1011 a< b1100 -= -b1011 4= +b1011 6= #79000000 sAddSubI\x20(1) " b10 $ @@ -40530,7 +40542,7 @@ b1100 ^< b1100 `< b1100 a< b10000 -= -b1100 4= +b1100 6= #80000000 0&# 05# @@ -41024,7 +41036,7 @@ b1101 ^< b1101 `< b1101 a< b10100 -= -b1101 4= +b1101 6= #82000000 sBranch\x20(8) " b0 $ @@ -41561,7 +41573,7 @@ b1001 ^< b1001 `< b1001 a< b100 -= -b1001 4= +b1001 6= #83000000 sZeroExt8\x20(6) - sZeroExt8\x20(6) < @@ -41727,7 +41739,7 @@ b1011 ^< b1011 `< b1011 a< b1100 -= -b1011 4= +b1011 6= #84000000 sBranchI\x20(9) " b0 ( @@ -42223,7 +42235,7 @@ b1101 ^< b1101 `< b1101 a< b10100 -= -b1101 4= +b1101 6= #85000000 sBranch\x20(8) " b1 $ @@ -42690,7 +42702,7 @@ b1001 ^< b1001 `< b1001 a< b100 -= -b1001 4= +b1001 6= #86000000 sZeroExt8\x20(6) - sZeroExt8\x20(6) < @@ -42856,7 +42868,7 @@ b1011 ^< b1011 `< b1011 a< b1100 -= -b1011 4= +b1011 6= #87000000 sBranchI\x20(9) " b0 ( @@ -43352,7 +43364,7 @@ b1101 ^< b1101 `< b1101 a< b10100 -= -b1101 4= +b1101 6= #88000000 sAddSubI\x20(1) " b10 $ @@ -43789,7 +43801,7 @@ b1100 ^< b1100 `< b1100 a< b10010 -= -b1100 4= +b1100 6= #89000000 sLogicalFlags\x20(2) " b1011 $ @@ -44695,7 +44707,7 @@ b10100 $= b101001 += b101 ,= b1111 -= -b1011 4= +b1011 6= #90000000 b11111111 $ b11111111 ( @@ -45490,7 +45502,7 @@ b10 $= b101 += b1 ,= b0 -= -b11111111 4= +b11111111 6= #91000000 b1110000111000 + b1110000111000 : @@ -46347,7 +46359,7 @@ b10100 $= b101001 += b101 ,= b1111 -= -b1011 4= +b1011 6= #93000000 b11111111 $ b11111111 ( @@ -47142,7 +47154,7 @@ b10 $= b101 += b1 ,= b0 -= -b11111111 4= +b11111111 6= #94000000 b1110000111000 + b1110000111000 : @@ -47995,7 +48007,7 @@ b10100 $= b101001 += b101 ,= b1111 -= -b1011 4= +b1011 6= #96000000 b11111111 $ b11111111 ( @@ -48790,7 +48802,7 @@ b10 $= b101 += b1 ,= b0 -= -b11111111 4= +b11111111 6= #97000000 b1110000111000 + b1110000111000 : @@ -49631,7 +49643,7 @@ b10100 $= b101001 += b101 ,= b1111 -= -b1011 4= +b1011 6= #99000000 b11111111 $ b11111111 ( @@ -50426,7 +50438,7 @@ b10 $= b101 += b1 ,= b0 -= -b11111111 4= +b11111111 6= #100000000 b1110000111000 + b1110000111000 : @@ -51275,7 +51287,7 @@ b10100 $= b101001 += b101 ,= b1111 -= -b1011 4= +b1011 6= #102000000 b11111111 $ b11111111 ( @@ -52070,7 +52082,7 @@ b10 $= b101 += b1 ,= b0 -= -b11111111 4= +b11111111 6= #103000000 b1110000111000 + b1110000111000 : @@ -52911,7 +52923,7 @@ b10100 $= b101001 += b101 ,= b1111 -= -b1011 4= +b1011 6= #105000000 b11111111 $ b11111111 ( @@ -53706,7 +53718,7 @@ b10 $= b101 += b1 ,= b0 -= -b11111111 4= +b11111111 6= #106000000 b1110000111000 + b1110000111000 : @@ -54560,7 +54572,7 @@ b10100 $= b101001 += b101 ,= b1111 -= -b1011 4= +b1011 6= #108000000 b11111111 $ b11111111 ( @@ -55355,7 +55367,7 @@ b10 $= b101 += b1 ,= b0 -= -b11111111 4= +b11111111 6= #109000000 b1110000111000 + b1110000111000 : @@ -56208,7 +56220,7 @@ b10100 $= b101001 += b101 ,= b1111 -= -b1011 4= +b1011 6= #111000000 b11111111 $ b11111111 ( @@ -57003,7 +57015,7 @@ b10 $= b101 += b1 ,= b0 -= -b11111111 4= +b11111111 6= #112000000 b1110000111000 + b1110000111000 : @@ -58136,7 +58148,7 @@ b1101 `< b1101 a< b11100 ,= b10100 -= -b1101 4= +b1101 6= #115000000 b11111111 ( b11111111 7 @@ -58913,7 +58925,7 @@ b10 $= b100 += b100 ,= b11 -= -b11111111 4= +b11111111 6= #117000000 b0 ( b0 7 @@ -59718,7 +59730,7 @@ b100 $= b1000 += b1 ,= b10000 -= -b1100 4= +b1100 6= #119000000 b0 ( b0 7 @@ -60440,7 +60452,7 @@ b101 $= b1011 += b100 ,= b11 -= -b11111111 4= +b11111111 6= #122000000 b0 ( b0 7 @@ -62066,7 +62078,7 @@ b100 $= b1000 += b1 ,= b10000 -= -b1100 4= +b1100 6= #128000000 b0 ( b0 7 @@ -62788,7 +62800,7 @@ b101 $= b1011 += b100 ,= b11 -= -b11111111 4= +b11111111 6= #131000000 b0 ( b0 7 @@ -64414,7 +64426,7 @@ b100 $= b1000 += b1 ,= b10000 -= -b1100 4= +b1100 6= #137000000 b0 ( b0 7 @@ -65136,7 +65148,7 @@ b101 $= b1011 += b100 ,= b11 -= -b11111111 4= +b11111111 6= #140000000 b0 ( b0 7 @@ -66768,7 +66780,7 @@ b100 $= b1000 += b1 ,= b10000 -= -b1100 4= +b1100 6= #146000000 b0 ( b0 7 @@ -67490,7 +67502,7 @@ b101 $= b1011 += b100 ,= b11 -= -b11111111 4= +b11111111 6= #149000000 b0 ( b0 7 @@ -73951,7 +73963,7 @@ b100 $= b1000 += b1 ,= b10000 -= -b1100 4= +b1100 6= #172000000 b0 ( b0 7 @@ -74673,7 +74685,7 @@ b101 $= b1011 += b100 ,= b11 -= -b11111111 4= +b11111111 6= #175000000 b0 ( b0 7 @@ -78159,7 +78171,7 @@ b100 $= b1000 += b1 ,= b10000 -= -b1100 4= +b1100 6= #183000000 b0 ( b0 7 @@ -78881,7 +78893,7 @@ b101 $= b1011 += b100 ,= b11 -= -b11111111 4= +b11111111 6= #186000000 b0 ( b0 7 @@ -82370,7 +82382,7 @@ b100 $= b1000 += b1 ,= b10000 -= -b1100 4= +b1100 6= #194000000 b0 ( b0 7 @@ -83092,7 +83104,7 @@ b101 $= b1011 += b100 ,= b11 -= -b11111111 4= +b11111111 6= #197000000 b0 ( b0 7 @@ -90739,7 +90751,7 @@ b100 $= b1000 += b1 ,= b10000 -= -b1100 4= +b1100 6= #215000000 b0 ( 11 @@ -91455,7 +91467,7 @@ b10 $= b100 += b100 ,= b11 -= -b11111111 4= +b11111111 6= #217000000 b0 ( b1101000000000000000100 + @@ -94224,7 +94236,7 @@ b1011 a< b10 $= b100 += b1100 -= -b1011 4= +b1011 6= #232000000 b11111111 * b1111111111000100110101011 + @@ -96084,7 +96096,7 @@ b10001 $= b100011 += b11 ,= b100 -= -b1001 4= +b1001 6= #243000000 b1000100 * b1101010110000000000000000 + @@ -96772,7 +96784,7 @@ b0 $= b0 += b0 ,= b0 -= -b11111111 4= +b11111111 6= #246000000 b100011 $ b100100 ( @@ -97389,7 +97401,7 @@ b10001 $= b100011 += b11 ,= b100 -= -b1001 4= +b1001 6= #247000000 b0 * b1000100110101011 + @@ -98028,7 +98040,7 @@ b0 $= b0 += b0 ,= b0 -= -b11111111 4= +b11111111 6= #249000000 b100011 $ b100100 ( @@ -98644,7 +98656,7 @@ b10001 $= b100011 += b11 ,= b100 -= -b1001 4= +b1001 6= #250000000 sLogical\x20(3) " b100101 ) @@ -103006,53 +103018,1030 @@ b110010111000110101 J; 1N; b10111000110101 Z< #306000000 +b0 % +sHdlNone\x20(0) ' +b0 * +b1 + +0. +b0 4 +sHdlNone\x20(0) 6 +b0 9 +b1 : +0= +b0 C +sHdlNone\x20(0) E +b0 H +b1 I +0N +b0 Q +sHdlNone\x20(0) S +b0 V +b1 W +0Z +b0 ` +sHdlNone\x20(0) b +b0 e +b1 f +0i +b0 o +sHdlNone\x20(0) q +b0 t +b1 u +sSignExt32To64BitThenShift\x20(6) x +b0 { +sHdlNone\x20(0) } +b0 "" +b1 #" +sU8\x20(6) &" +b0 )" +sHdlNone\x20(0) +" +b0 ." +b1 /" +sU8\x20(6) 2" +b0 5" +sHdlNone\x20(0) 7" +b0 :" +b1 ;" +sEq\x20(0) >" +b0 E" +sHdlNone\x20(0) G" +b0 J" +b1 K" +sEq\x20(0) N" +b0 U" +sHdlNone\x20(0) W" +b0 Z" +b1 [" +b0 `" +sHdlNone\x20(0) b" +b0 e" +b1 f" +b0 l" +sHdlNone\x20(0) n" +b0 q" +b1 r" +b1111100100000110000011011110100 g& +b1000001100000110111101 k& +b110111101 l& +b11011110100 z& +b11011110100 +' +b11011110100 :' +b11011110100 H' +b11011110100 W' +b11011110100 f' +b11011110100 r' +b11011110100 ~' +b11011110100 ,( +b11011110100 <( +b11011110100 L( +b11011110100 W( +b11011110100 c( +b11011110100 t( +b11011110100 %) +b11011110100 4) +b11011110100 B) +b11011110100 Q) +b11011110100 `) +b11011110100 l) +b11011110100 x) +b11011110100 &* +b11011110100 6* +b11011110100 F* +b11011110100 Q* +b11011110100 ]* +b11011110100 n* +b11011110100 }* +b11011110100 .+ +b11011110100 <+ +b11011110100 K+ +b11011110100 Z+ +b11011110100 f+ +b11011110100 r+ +b11011110100 ~+ +b11011110100 0, +b11011110100 @, +b11011110100 K, +b11011110100 W, +b11011110100 h, +b11011110100 w, +b11011110100 (- +b11011110100 6- +b11011110100 E- +b11011110100 T- +b11011110100 `- +b11011110100 l- +b11011110100 x- +b11011110100 *. +b11011110100 :. +b11011110100 E. +b11011110100 Q. +b0 W. +1|/ +1.0 +1v1 +1(2 +b0 6: +b11111111 ;: +b11111111 >: +b11111111 A: +b11111111 D: +b11111111 G: +b11111111 J: +b11111111 M: +b11111111 P: +b11011110100 U: +b110000011011110100 Y: +b0 _: +b110111101 t: +b110000011011110100 x: +b11011110100 H; +b110000011011110100 J; +0N; +b11011 O; +b0 R; +b11011110100 Z< +b0 $= +b0 += +#307000000 +sHdlSome\x20(1) ' +sHdlSome\x20(1) 6 +sHdlSome\x20(1) E +sHdlSome\x20(1) S +sHdlSome\x20(1) b +sHdlSome\x20(1) q +sHdlSome\x20(1) } +sHdlSome\x20(1) +" +sHdlSome\x20(1) 7" +sHdlSome\x20(1) G" +sHdlSome\x20(1) W" +sHdlSome\x20(1) b" +sHdlSome\x20(1) n" +b1111100100000110000011011110101 g& +b11011110101 U: +b110000011011110101 Y: +b110000011011110101 x: +b11011110101 H; +b110000011011110101 J; +1N; +b11011110101 Z< +#308000000 +sHdlNone\x20(0) ' +b1011 + +sHdlNone\x20(0) 6 +b1011 : +sHdlNone\x20(0) E +b1011 I +sHdlNone\x20(0) S +b1011 W +sHdlNone\x20(0) b +b1011 f +sHdlNone\x20(0) q +b1011 u +sHdlNone\x20(0) } +b1011 #" +sHdlNone\x20(0) +" +b1011 /" +sHdlNone\x20(0) 7" +b1011 ;" +sHdlNone\x20(0) G" +b1011 K" +sHdlNone\x20(0) W" +b1011 [" +sHdlNone\x20(0) b" +b1011 f" +sHdlNone\x20(0) n" +b1011 r" +b1111100100000110010111011110100 g& +b1000001100101110111101 k& +b101110111101 l& +b10111011110100 z& +b10111011110100 +' +b10111011110100 :' +b10111011110100 H' +b10111011110100 W' +b10111011110100 f' +b10111011110100 r' +b10111011110100 ~' +b10111011110100 ,( +b10111011110100 <( +b10111011110100 L( +b10111011110100 W( +b10111011110100 c( +b10111011110100 t( +b10111011110100 %) +b10111011110100 4) +b10111011110100 B) +b10111011110100 Q) +b10111011110100 `) +b10111011110100 l) +b10111011110100 x) +b10111011110100 &* +b10111011110100 6* +b10111011110100 F* +b10111011110100 Q* +b10111011110100 ]* +b10111011110100 n* +b10111011110100 }* +b10111011110100 .+ +b10111011110100 <+ +b10111011110100 K+ +b10111011110100 Z+ +b10111011110100 f+ +b10111011110100 r+ +b10111011110100 ~+ +b10111011110100 0, +b10111011110100 @, +b10111011110100 K, +b10111011110100 W, +b10111011110100 h, +b10111011110100 w, +b10111011110100 (- +b10111011110100 6- +b10111011110100 E- +b10111011110100 T- +b10111011110100 `- +b10111011110100 l- +b10111011110100 x- +b10111011110100 *. +b10111011110100 :. +b10111011110100 E. +b10111011110100 Q. +b1 W. +0|/ +0.0 +0v1 +0(2 +b101 6: +b1001 ;: +b1001 >: +b1001 A: +b1001 D: +b1001 G: +b1001 J: +b1001 M: +b1001 P: +b10111011110100 U: +b110010111011110100 Y: +b101 _: +b101110111101 t: +b110010111011110100 x: +b10111011110100 H; +b110010111011110100 J; +0N; +b10111011 O; +b101 R; +b10111011110100 Z< +b101 $= +b1010 += +#309000000 +sHdlSome\x20(1) ' +sHdlSome\x20(1) 6 +sHdlSome\x20(1) E +sHdlSome\x20(1) S +sHdlSome\x20(1) b +sHdlSome\x20(1) q +sHdlSome\x20(1) } +sHdlSome\x20(1) +" +sHdlSome\x20(1) 7" +sHdlSome\x20(1) G" +sHdlSome\x20(1) W" +sHdlSome\x20(1) b" +sHdlSome\x20(1) n" +b1111100100000110010111011110101 g& +b10111011110101 U: +b110010111011110101 Y: +b110010111011110101 x: +b10111011110101 H; +b110010111011110101 J; +1N; +b10111011110101 Z< +#310000000 +sHdlNone\x20(0) ' +b100001 + +sHdlNone\x20(0) 6 +b100001 : +sHdlNone\x20(0) E +b100001 I +sHdlNone\x20(0) S +b100001 W +sHdlNone\x20(0) b +b100001 f +sHdlNone\x20(0) q +b100001 u +sHdlNone\x20(0) } +b100001 #" +sHdlNone\x20(0) +" +b100001 /" +sHdlNone\x20(0) 7" +b100001 ;" +sHdlNone\x20(0) G" +b100001 K" +sHdlNone\x20(0) W" +b100001 [" +sHdlNone\x20(0) b" +b100001 f" +sHdlNone\x20(0) n" +b100001 r" +b1111100100000111000011011110100 g& +b1000001110000110111101 k& +b10000110111101 l& +b1111111111000011011110100 z& +1{& +b1111111111000011011110100 +' +1,' +b1111111111000011011110100 :' +1;' +b1111111111000011011110100 H' +1I' +b1111111111000011011110100 W' +1X' +b1111111111000011011110100 f' +1g' +b1111111111000011011110100 r' +1s' +b1111111111000011011110100 ~' +1!( +b1111111111000011011110100 ,( +1-( +b1111111111000011011110100 <( +1=( +b1111111111000011011110100 L( +1M( +b1111111111000011011110100 W( +1X( +b1111111111000011011110100 c( +1d( +b1111111111000011011110100 t( +1u( +b1111111111000011011110100 %) +1&) +b1111111111000011011110100 4) +15) +b1111111111000011011110100 B) +1C) +b1111111111000011011110100 Q) +1R) +b1111111111000011011110100 `) +1a) +b1111111111000011011110100 l) +1m) +b1111111111000011011110100 x) +1y) +b1111111111000011011110100 &* +1'* +b1111111111000011011110100 6* +17* +b1111111111000011011110100 F* +1G* +b1111111111000011011110100 Q* +1R* +b1111111111000011011110100 ]* +1^* +b1111111111000011011110100 n* +1o* +b1111111111000011011110100 }* +1~* +b1111111111000011011110100 .+ +1/+ +b1111111111000011011110100 <+ +1=+ +b1111111111000011011110100 K+ +1L+ +b1111111111000011011110100 Z+ +1[+ +b1111111111000011011110100 f+ +1g+ +b1111111111000011011110100 r+ +1s+ +b1111111111000011011110100 ~+ +1!, +b1111111111000011011110100 0, +11, +b1111111111000011011110100 @, +1A, +b1111111111000011011110100 K, +1L, +b1111111111000011011110100 W, +1X, +b1111111111000011011110100 h, +1i, +b1111111111000011011110100 w, +1x, +b1111111111000011011110100 (- +1)- +b1111111111000011011110100 6- +17- +b1111111111000011011110100 E- +1F- +b1111111111000011011110100 T- +1U- +b1111111111000011011110100 `- +1a- +b1111111111000011011110100 l- +1m- +b1111111111000011011110100 x- +1y- +b1111111111000011011110100 *. +1+. +b1111111111000011011110100 :. +1;. +b1111111111000011011110100 E. +1F. +b1111111111000011011110100 Q. +1R. +b0 W. +1|/ +1.0 +1v1 +1(2 +b10000 6: +b1100 ;: +b1100 >: +b1100 A: +b1100 D: +b1100 G: +b1100 J: +b1100 M: +b1100 P: +b1000011011110100 U: +b111000011011110100 Y: +b10000 _: +b10000110111101 t: +b111000011011110100 x: +b1000011011110100 H; +b111000011011110100 J; +0N; +b1000011011 O; +b10000 R; +b1000011011110100 Z< +b10000 $= +b100000 += +#311000000 +sHdlSome\x20(1) ' +sHdlSome\x20(1) 6 +sHdlSome\x20(1) E +sHdlSome\x20(1) S +sHdlSome\x20(1) b +sHdlSome\x20(1) q +sHdlSome\x20(1) } +sHdlSome\x20(1) +" +sHdlSome\x20(1) 7" +sHdlSome\x20(1) G" +sHdlSome\x20(1) W" +sHdlSome\x20(1) b" +sHdlSome\x20(1) n" +b1111100100000111000011011110101 g& +b1000011011110101 U: +b111000011011110101 Y: +b111000011011110101 x: +b1000011011110101 H; +b111000011011110101 J; +1N; +b1000011011110101 Z< +#312000000 +sHdlNone\x20(0) ' +b111111 + +sHdlNone\x20(0) 6 +b111111 : +sHdlNone\x20(0) E +b111111 I +sHdlNone\x20(0) S +b111111 W +sHdlNone\x20(0) b +b111111 f +sHdlNone\x20(0) q +b111111 u +sHdlNone\x20(0) } +b111111 #" +sHdlNone\x20(0) +" +b111111 /" +sHdlNone\x20(0) 7" +b111111 ;" +sHdlNone\x20(0) G" +b111111 K" +sHdlNone\x20(0) W" +b111111 [" +sHdlNone\x20(0) b" +b111111 f" +sHdlNone\x20(0) n" +b111111 r" +b1111100100000111111111011110100 g& +b1000001111111110111101 k& +b11111110111101 l& +b1111111111111111011110100 z& +b1111111111111111011110100 +' +b1111111111111111011110100 :' +b1111111111111111011110100 H' +b1111111111111111011110100 W' +b1111111111111111011110100 f' +b1111111111111111011110100 r' +b1111111111111111011110100 ~' +b1111111111111111011110100 ,( +b1111111111111111011110100 <( +b1111111111111111011110100 L( +b1111111111111111011110100 W( +b1111111111111111011110100 c( +b1111111111111111011110100 t( +b1111111111111111011110100 %) +b1111111111111111011110100 4) +b1111111111111111011110100 B) +b1111111111111111011110100 Q) +b1111111111111111011110100 `) +b1111111111111111011110100 l) +b1111111111111111011110100 x) +b1111111111111111011110100 &* +b1111111111111111011110100 6* +b1111111111111111011110100 F* +b1111111111111111011110100 Q* +b1111111111111111011110100 ]* +b1111111111111111011110100 n* +b1111111111111111011110100 }* +b1111111111111111011110100 .+ +b1111111111111111011110100 <+ +b1111111111111111011110100 K+ +b1111111111111111011110100 Z+ +b1111111111111111011110100 f+ +b1111111111111111011110100 r+ +b1111111111111111011110100 ~+ +b1111111111111111011110100 0, +b1111111111111111011110100 @, +b1111111111111111011110100 K, +b1111111111111111011110100 W, +b1111111111111111011110100 h, +b1111111111111111011110100 w, +b1111111111111111011110100 (- +b1111111111111111011110100 6- +b1111111111111111011110100 E- +b1111111111111111011110100 T- +b1111111111111111011110100 `- +b1111111111111111011110100 l- +b1111111111111111011110100 x- +b1111111111111111011110100 *. +b1111111111111111011110100 :. +b1111111111111111011110100 E. +b1111111111111111011110100 Q. +b11 W. +0|/ +0.0 +0v1 +0(2 +b11111 6: +b1111 ;: +b1111 >: +b1111 A: +b1111 D: +b1111 G: +b1111 J: +b1111 M: +b1111 P: +b1111111011110100 U: +b111111111011110100 Y: +b11111 _: +b11111110111101 t: +b111111111011110100 x: +b1111111011110100 H; +b111111111011110100 J; +0N; +b1111111011 O; +b11111 R; +b1111111011110100 Z< +b11111 $= +b111110 += +#313000000 +sHdlSome\x20(1) ' +sHdlSome\x20(1) 6 +sHdlSome\x20(1) E +sHdlSome\x20(1) S +sHdlSome\x20(1) b +sHdlSome\x20(1) q +sHdlSome\x20(1) } +sHdlSome\x20(1) +" +sHdlSome\x20(1) 7" +sHdlSome\x20(1) G" +sHdlSome\x20(1) W" +sHdlSome\x20(1) b" +sHdlSome\x20(1) n" +b1111100100000111111111011110101 g& +b1111111011110101 U: +b111111111011110101 Y: +b111111111011110101 x: +b1111111011110101 H; +b111111111011110101 J; +1N; +b1111111011110101 Z< +#314000000 +sHdlNone\x20(0) ' +b1000001 + +sHdlNone\x20(0) 6 +b1000001 : +sHdlNone\x20(0) E +b1000001 I +sHdlNone\x20(0) S +b1000001 W +sHdlNone\x20(0) b +b1000001 f +sHdlNone\x20(0) q +b1000001 u +sHdlNone\x20(0) } +b1000001 #" +sHdlNone\x20(0) +" +b1000001 /" +sHdlNone\x20(0) 7" +b1000001 ;" +sHdlNone\x20(0) G" +b1000001 K" +sHdlNone\x20(0) W" +b1000001 [" +sHdlNone\x20(0) b" +b1000001 f" +sHdlNone\x20(0) n" +b1000001 r" +b1111100100000110000011011110110 g& +b1000001100000110111101 k& +b110111101 l& +b11011110100 z& +0{& +b11011110100 +' +0,' +b11011110100 :' +0;' +b11011110100 H' +0I' +b11011110100 W' +0X' +b11011110100 f' +0g' +b11011110100 r' +0s' +b11011110100 ~' +0!( +b11011110100 ,( +0-( +b11011110100 <( +0=( +b11011110100 L( +0M( +b11011110100 W( +0X( +b11011110100 c( +0d( +b11011110100 t( +0u( +b11011110100 %) +0&) +b11011110100 4) +05) +b11011110100 B) +0C) +b11011110100 Q) +0R) +b11011110100 `) +0a) +b11011110100 l) +0m) +b11011110100 x) +0y) +b11011110100 &* +0'* +b11011110100 6* +07* +b11011110100 F* +0G* +b11011110100 Q* +0R* +b11011110100 ]* +0^* +b11011110100 n* +0o* +b11011110100 }* +0~* +b11011110100 .+ +0/+ +b11011110100 <+ +0=+ +b11011110100 K+ +0L+ +b11011110100 Z+ +0[+ +b11011110100 f+ +0g+ +b11011110100 r+ +0s+ +b11011110100 ~+ +0!, +b11011110100 0, +01, +b11011110100 @, +0A, +b11011110100 K, +0L, +b11011110100 W, +0X, +b11011110100 h, +0i, +b11011110100 w, +0x, +b11011110100 (- +0)- +b11011110100 6- +07- +b11011110100 E- +0F- +b11011110100 T- +0U- +b11011110100 `- +0a- +b11011110100 l- +0m- +b11011110100 x- +0y- +b11011110100 *. +0+. +b11011110100 :. +0;. +b11011110100 E. +0F. +b11011110100 Q. +0R. +b0 W. +1|/ +1.0 +1v1 +1(2 +b0 6: +b11111111 ;: +b11111111 >: +b11111111 A: +b11111111 D: +b11111111 G: +b11111111 J: +b11111111 M: +b11111111 P: +b11011110110 U: +b110000011011110110 Y: +b0 _: +b110111101 t: +b110000011011110110 x: +b11011110110 H; +b110000011011110110 J; +0N; +b11011 O; +b0 R; +b11011110110 Z< +b0 $= +b1 += +#315000000 +sHdlSome\x20(1) ' +sHdlSome\x20(1) 6 +sHdlSome\x20(1) E +sHdlSome\x20(1) S +sHdlSome\x20(1) b +sHdlSome\x20(1) q +sHdlSome\x20(1) } +sHdlSome\x20(1) +" +sHdlSome\x20(1) 7" +sHdlSome\x20(1) G" +sHdlSome\x20(1) W" +sHdlSome\x20(1) b" +sHdlSome\x20(1) n" +b1111100100000110000011011110111 g& +b11011110111 U: +b110000011011110111 Y: +b110000011011110111 x: +b11011110111 H; +b110000011011110111 J; +1N; +b11011110111 Z< +#316000000 +sHdlNone\x20(0) ' +b1111111 + +sHdlNone\x20(0) 6 +b1111111 : +sHdlNone\x20(0) E +b1111111 I +sHdlNone\x20(0) S +b1111111 W +sHdlNone\x20(0) b +b1111111 f +sHdlNone\x20(0) q +b1111111 u +sHdlNone\x20(0) } +b1111111 #" +sHdlNone\x20(0) +" +b1111111 /" +sHdlNone\x20(0) 7" +b1111111 ;" +sHdlNone\x20(0) G" +b1111111 K" +sHdlNone\x20(0) W" +b1111111 [" +sHdlNone\x20(0) b" +b1111111 f" +sHdlNone\x20(0) n" +b1111111 r" +b1111100100000111111111011110110 g& +b1000001111111110111101 k& +b11111110111101 l& +b1111111111111111011110100 z& +1{& +b1111111111111111011110100 +' +1,' +b1111111111111111011110100 :' +1;' +b1111111111111111011110100 H' +1I' +b1111111111111111011110100 W' +1X' +b1111111111111111011110100 f' +1g' +b1111111111111111011110100 r' +1s' +b1111111111111111011110100 ~' +1!( +b1111111111111111011110100 ,( +1-( +b1111111111111111011110100 <( +1=( +b1111111111111111011110100 L( +1M( +b1111111111111111011110100 W( +1X( +b1111111111111111011110100 c( +1d( +b1111111111111111011110100 t( +1u( +b1111111111111111011110100 %) +1&) +b1111111111111111011110100 4) +15) +b1111111111111111011110100 B) +1C) +b1111111111111111011110100 Q) +1R) +b1111111111111111011110100 `) +1a) +b1111111111111111011110100 l) +1m) +b1111111111111111011110100 x) +1y) +b1111111111111111011110100 &* +1'* +b1111111111111111011110100 6* +17* +b1111111111111111011110100 F* +1G* +b1111111111111111011110100 Q* +1R* +b1111111111111111011110100 ]* +1^* +b1111111111111111011110100 n* +1o* +b1111111111111111011110100 }* +1~* +b1111111111111111011110100 .+ +1/+ +b1111111111111111011110100 <+ +1=+ +b1111111111111111011110100 K+ +1L+ +b1111111111111111011110100 Z+ +1[+ +b1111111111111111011110100 f+ +1g+ +b1111111111111111011110100 r+ +1s+ +b1111111111111111011110100 ~+ +1!, +b1111111111111111011110100 0, +11, +b1111111111111111011110100 @, +1A, +b1111111111111111011110100 K, +1L, +b1111111111111111011110100 W, +1X, +b1111111111111111011110100 h, +1i, +b1111111111111111011110100 w, +1x, +b1111111111111111011110100 (- +1)- +b1111111111111111011110100 6- +17- +b1111111111111111011110100 E- +1F- +b1111111111111111011110100 T- +1U- +b1111111111111111011110100 `- +1a- +b1111111111111111011110100 l- +1m- +b1111111111111111011110100 x- +1y- +b1111111111111111011110100 *. +1+. +b1111111111111111011110100 :. +1;. +b1111111111111111011110100 E. +1F. +b1111111111111111011110100 Q. +1R. +b11 W. +0|/ +0.0 +0v1 +0(2 +b11111 6: +b1111 ;: +b1111 >: +b1111 A: +b1111 D: +b1111 G: +b1111 J: +b1111 M: +b1111 P: +b1111111011110110 U: +b111111111011110110 Y: +b11111 _: +b11111110111101 t: +b111111111011110110 x: +b1111111011110110 H; +b111111111011110110 J; +0N; +b1111111011 O; +b11111 R; +b1111111011110110 Z< +b11111 $= +b111111 += +#317000000 +sHdlSome\x20(1) ' +sHdlSome\x20(1) 6 +sHdlSome\x20(1) E +sHdlSome\x20(1) S +sHdlSome\x20(1) b +sHdlSome\x20(1) q +sHdlSome\x20(1) } +sHdlSome\x20(1) +" +sHdlSome\x20(1) 7" +sHdlSome\x20(1) G" +sHdlSome\x20(1) W" +sHdlSome\x20(1) b" +sHdlSome\x20(1) n" +b1111100100000111111111011110111 g& +b1111111011110111 U: +b111111111011110111 Y: +b111111111011110111 x: +b1111111011110111 H; +b111111111011110111 J; +1N; +b1111111011110111 Z< +#318000000 sLogicalFlags\x20(2) " b1011 $ -b0 % sHdlNone\x20(0) ' b100 ( b11111110 * b110000100100100 + sZeroExt8\x20(6) - +1. 0/ 00 b1011 3 -b0 4 sHdlNone\x20(0) 6 b100 7 b11111110 9 b110000100100100 : sZeroExt8\x20(6) < +1= 0> 0? b1011 B -b0 C sHdlNone\x20(0) E b100 F b11111110 H b110000100100100 I 1L 1M +1N b1011 P -b0 Q sHdlNone\x20(0) S b100 T b11111110 V b110000100100100 W sZeroExt8\x20(6) Y +1Z 0[ 0\ b1011 _ -b0 ` sHdlNone\x20(0) b b100 c b11111110 e b110000100100100 f sZeroExt8\x20(6) h +1i 0j 0k b1011 n -b0 o sHdlNone\x20(0) q b100 r b11111110 t @@ -103060,7 +104049,6 @@ b110000100100100 u sZeroExt8\x20(6) w sFunnelShift2x16Bit\x20(1) x b1011 z -b0 { sHdlNone\x20(0) } b100 ~ b11111110 "" @@ -103068,7 +104056,6 @@ b110000100100100 #" sZeroExt8\x20(6) %" sS64\x20(1) &" b1011 (" -b0 )" sHdlNone\x20(0) +" b100 ," b11111110 ." @@ -103076,7 +104063,6 @@ b110000100100100 /" sZeroExt8\x20(6) 1" sS64\x20(1) 2" b1011 4" -b0 5" sHdlNone\x20(0) 7" b100 8" b11111110 :" @@ -103085,7 +104071,6 @@ sParity\x20(7) >" 0?" 0@" b1011 D" -b0 E" sHdlNone\x20(0) G" b100 H" b11111110 J" @@ -103095,7 +104080,6 @@ sParity\x20(7) N" 0P" b10 S" b1011 T" -b0 U" sHdlNone\x20(0) W" b100 X" b11111110 Z" @@ -103103,7 +104087,6 @@ b110000100100100 [" sLoad\x20(0) ]" b1 ^" b1011 _" -b0 `" sHdlNone\x20(0) b" b100 c" b11111110 e" @@ -103112,7 +104095,6 @@ sWidth32Bit\x20(2) h" sSignExt\x20(1) i" b1 j" b1011 k" -b0 l" sHdlNone\x20(0) n" b100 o" b11111110 q" @@ -103125,148 +104107,200 @@ b100100000 l& b0 m& b1100 n& b10010000000 z& +0{& sZeroExt8\x20(6) |& 0}& b10010000000 +' +0,' sZeroExt8\x20(6) -' 0.' b10010000000 :' +0;' 0<' 1=' 0?' b10010000000 H' +0I' sZeroExt8\x20(6) J' 0K' b10010000000 W' +0X' sZeroExt8\x20(6) Y' 0Z' b10010000000 f' +0g' sZeroExt8\x20(6) h' sSignExt32To64BitThenShift\x20(6) i' b10010000000 r' +0s' sZeroExt8\x20(6) t' sU8\x20(6) u' b10010000000 ~' +0!( sZeroExt8\x20(6) "( sU8\x20(6) #( b10010000000 ,( +0-( 0.( sSLt\x20(3) /( b10010000000 <( +0=( 0>( sSLt\x20(3) ?( b10010000000 L( +0M( b10010000000 W( +0X( sWidth32Bit\x20(2) Y( b10010000000 c( +0d( sWidth32Bit\x20(2) e( b10010000000 t( +0u( sZeroExt8\x20(6) v( 0w( b10010000000 %) +0&) sZeroExt8\x20(6) ') 0() b10010000000 4) +05) 06) 17) 09) b10010000000 B) +0C) sZeroExt8\x20(6) D) 0E) b10010000000 Q) +0R) sZeroExt8\x20(6) S) 0T) b10010000000 `) +0a) sZeroExt8\x20(6) b) sFunnelShift2x32Bit\x20(2) c) b10010000000 l) +0m) sZeroExt8\x20(6) n) sU32\x20(2) o) b10010000000 x) +0y) sZeroExt8\x20(6) z) sU32\x20(2) {) b10010000000 &* +0'* 0(* sSLt\x20(3) )* b10010000000 6* +07* 08* sSLt\x20(3) 9* b10010000000 F* +0G* b10010000000 Q* +0R* sWidth32Bit\x20(2) S* b10010000000 ]* +0^* sWidth32Bit\x20(2) _* b10010000000 n* +0o* sZeroExt8\x20(6) p* 0q* b10010000000 }* +0~* sZeroExt8\x20(6) !+ 0"+ b10010000000 .+ +0/+ 00+ 11+ 03+ b10010000000 <+ +0=+ sZeroExt8\x20(6) >+ 0?+ b10010000000 K+ +0L+ sZeroExt8\x20(6) M+ 0N+ b10010000000 Z+ +0[+ sZeroExt8\x20(6) \+ sSignExt32To64BitThenShift\x20(6) ]+ b10010000000 f+ +0g+ sZeroExt8\x20(6) h+ s\x20(14) i+ b10010000000 r+ +0s+ sZeroExt8\x20(6) t+ s\x20(14) u+ b10010000000 ~+ +0!, 0", sSLt\x20(3) #, b10010000000 0, +01, 02, sSLt\x20(3) 3, b10010000000 @, +0A, b10010000000 K, +0L, sWidth32Bit\x20(2) M, b10010000000 W, +0X, sWidth32Bit\x20(2) Y, b10010000000 h, +0i, sZeroExt8\x20(6) j, 0k, b10010000000 w, +0x, sZeroExt8\x20(6) y, 0z, b10010000000 (- +0)- 0*- 1+- 0-- b10010000000 6- +07- sZeroExt8\x20(6) 8- 09- b10010000000 E- +0F- sZeroExt8\x20(6) G- 0H- b10010000000 T- +0U- sZeroExt8\x20(6) V- sFunnelShift2x32Bit\x20(2) W- b10010000000 `- +0a- sZeroExt8\x20(6) b- sCmpEqB\x20(10) c- b10010000000 l- +0m- sZeroExt8\x20(6) n- sCmpEqB\x20(10) o- b10010000000 x- +0y- 0z- sSLt\x20(3) {- b10010000000 *. +0+. 0,. sSLt\x20(3) -. b10010000000 :. +0;. b10010000000 E. +0F. sWidth32Bit\x20(2) G. b10010000000 Q. +0R. sWidth32Bit\x20(2) S. b0 W. b0 X. @@ -103519,8 +104553,8 @@ b0 $= b0 += b0 ,= b1100 -= -b1011 4= -#307000000 +b1011 6= +#319000000 sAddSub\x20(0) " b0 $ b0 ( @@ -104136,5 +105170,5 @@ b1110 ^< b1110 `< b1110 a< b11000 -= -b1110 4= -#308000000 +b1110 6= +#320000000 diff --git a/crates/cpu/tests/simple_power_isa_decoder/test_cases/fixed_point_rotate_and_shift.rs b/crates/cpu/tests/simple_power_isa_decoder/test_cases/fixed_point_rotate_and_shift.rs index b94d732..99b6829 100644 --- a/crates/cpu/tests/simple_power_isa_decoder/test_cases/fixed_point_rotate_and_shift.rs +++ b/crates/cpu/tests/simple_power_isa_decoder/test_cases/fixed_point_rotate_and_shift.rs @@ -360,5 +360,86 @@ pub fn test_cases_book_i_3_3_14_fixed_point_rotate_and_shift(retval: &mut Vec {{ + retval.push(insn_single( + concat!( + $mnemonic, + " ", + stringify!($dest), + ", ", + stringify!($src), + ", ", + stringify!($amount) + ), + $encoding, + None, + ShiftRotateMOp::shift_rotate( + MOpDestReg::new_sim(&[MOpRegNum::power_isa_gpr_reg_num($dest)], &[]), + [ + MOpRegNum::power_isa_gpr_reg_imm($src).value, + MOpRegNum::const_zero().value, + MOpRegNum::const_zero().value, + ], + shift_imm(Some($amount), false), + OutputIntegerMode.Full64(), + ShiftRotateMode.SignExt32To64BitThenShift(), + ), + )); + retval.push(insn_single( + concat!( + $mnemonic, + ". ", + stringify!($dest), + ", ", + stringify!($src), + ", ", + stringify!($amount) + ), + $encoding | 1, + None, + ShiftRotateMOp::shift_rotate( + MOpDestReg::new_sim( + &[MOpRegNum::power_isa_gpr_reg_num($dest)], + &[MOpRegNum::POWER_ISA_CR_0_REG_NUM], + ), + [ + MOpRegNum::power_isa_gpr_reg_imm($src).value, + MOpRegNum::const_zero().value, + MOpRegNum::const_zero().value, + ], + shift_imm(Some($amount), false), + OutputIntegerMode.Full64(), + ShiftRotateMode.SignExt32To64BitThenShift(), + ), + )); + }}; + } + extswsli! { + "extswsli" 3, 4, 0; + 0x7c8306f4; + } + extswsli! { + "extswsli" 3, 4, 5; + 0x7c832ef4; + } + extswsli! { + "extswsli" 3, 4, 16; + 0x7c8386f4; + } + extswsli! { + "extswsli" 3, 4, 31; + 0x7c83fef4; + } + extswsli! { + "extswsli" 3, 4, 32; + 0x7c8306f6; + } + extswsli! { + "extswsli" 3, 4, 63; + 0x7c83fef6; + } }