diff --git a/Ghidra/Processors/Hexagon/data/languages/hexagon.sinc b/Ghidra/Processors/Hexagon/data/languages/hexagon.sinc index 222de6ed07..3437c42c8c 100755 --- a/Ghidra/Processors/Hexagon/data/languages/hexagon.sinc +++ b/Ghidra/Processors/Hexagon/data/languages/hexagon.sinc @@ -2939,8 +2939,9 @@ define pcodeop aslSat; # 1 1 0 0 0 1 1 0 0 1 - s s s s s P P - t t t t t 1 0 - d d d d d :asl Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x19 & op0607=2 & Rd5 & rs5 & rt5 & $(END_PACKET) { - right:1 = rt5 s< 0; - Rd5 = (zext(right) * (rs5 s>> -rt5)) + (zext(!right) * (rs5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + Rd5 = (zext(right) * (rs5 s>> -shamt)) + (zext(!right) * (rs5 << shamt)); build EndPacket; } @@ -2980,8 +2981,9 @@ define pcodeop aslSat; # 1 1 0 0 0 0 1 1 1 0 - s s s s s P P - t t t t t 1 0 - d d d d d :asl Rdd5,rss5,rt5 EndPacket is iclass=12 & op2227=0xe & op0607=2 & Rdd5 & rss5 & rt5 & $(END_PACKET) { - right:1 = rt5 s< 0; - Rdd5 = (zext(right) * (rss5 s>> -rt5)) + (zext(!right) * (rss5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + Rdd5 = (zext(right) * (rss5 s>> -shamt)) + (zext(!right) * (rss5 << shamt)); build EndPacket; } @@ -3011,8 +3013,9 @@ define pcodeop aslSat; # 1 1 0 0 1 1 0 0 0 1 - s s s s s P P - t t t t t 1 0 - x x x x x :asl&= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x31 & op0607=2 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) { - right:1 = rt5 s< 0; - result:4 = (zext(right) * (rs5 s>> -rt5)) + (zext(!right) * (rs5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + result:4 = (zext(right) * (rs5 s>> -shamt)) + (zext(!right) * (rs5 << shamt)); Rd5 = rd5 & result; build EndPacket; } @@ -3043,8 +3046,9 @@ define pcodeop aslSat; # 1 1 0 0 1 1 0 0 1 1 - s s s s s P P - t t t t t 1 0 - x x x x x :asl+= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x33 & op0607=2 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) { - right:1 = rt5 s< 0; - result:4 = (zext(right) * (rs5 s>> -rt5)) + (zext(!right) * (rs5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + result:4 = (zext(right) * (rs5 s>> -shamt)) + (zext(!right) * (rs5 << shamt)); Rd5 = rd5 + result; build EndPacket; } @@ -3075,8 +3079,9 @@ define pcodeop aslSat; # 1 1 0 0 1 1 0 0 1 0 - s s s s s P P - t t t t t 1 0 - x x x x x :asl-= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x32 & op0607=2 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) { - right:1 = rt5 s< 0; - result:4 = (zext(right) * (rs5 s>> -rt5)) + (zext(!right) * (rs5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + result:4 = (zext(right) * (rs5 s>> -shamt)) + (zext(!right) * (rs5 << shamt)); Rd5 = rd5 - result; build EndPacket; } @@ -3127,8 +3132,9 @@ define pcodeop aslSat; # 1 1 0 0 1 1 0 0 0 0 - s s s s s P P - t t t t t 1 0 - x x x x x :asl|= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x30 & op0607=2 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) { - right:1 = rt5 s< 0; - result:4 = (zext(right) * (rs5 s>> -rt5)) + (zext(!right) * (rs5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + result:4 = (zext(right) * (rs5 s>> -shamt)) + (zext(!right) * (rs5 << shamt)); Rd5 = rd5 | result; build EndPacket; } @@ -3159,8 +3165,9 @@ define pcodeop aslSat; # 1 1 0 0 1 0 1 1 0 1 0 s s s s s P P - t t t t t 1 0 - x x x x x :asl&= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5a & op0607=2 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) { - right:1 = rt5 s< 0; - result:8 = (zext(right) * (rss5 s>> -rt5)) + (zext(!right) * (rss5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + result:8 = (zext(right) * (rss5 s>> -shamt)) + (zext(!right) * (rss5 << shamt)); Rdd5 = rdd5 & result; build EndPacket; } @@ -3191,8 +3198,9 @@ define pcodeop aslSat; # 1 1 0 0 1 0 1 1 1 1 0 s s s s s P P - t t t t t 1 0 - x x x x x :asl+= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5e & op0607=2 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) { - right:1 = rt5 s< 0; - result:8 = (zext(right) * (rss5 s>> -rt5)) + (zext(!right) * (rss5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + result:8 = (zext(right) * (rss5 s>> -shamt)) + (zext(!right) * (rss5 << shamt)); Rdd5 = rdd5 + result; build EndPacket; } @@ -3223,8 +3231,9 @@ define pcodeop aslSat; # 1 1 0 0 1 0 1 1 1 0 0 s s s s s P P - t t t t t 1 0 - x x x x x :asl-= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5c & op0607=2 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) { - right:1 = rt5 s< 0; - result:8 = (zext(right) * (rss5 s>> -rt5)) + (zext(!right) * (rss5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + result:8 = (zext(right) * (rss5 s>> -shamt)) + (zext(!right) * (rss5 << shamt)); Rdd5 = rdd5 - result; build EndPacket; } @@ -3255,8 +3264,9 @@ define pcodeop aslSat; # 1 1 0 0 1 0 1 1 0 1 1 s s s s s P P - t t t t t 1 0 - x x x x x :asl"^=" Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5b & op0607=2 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) { - right:1 = rt5 s< 0; - result:8 = (zext(right) * (rss5 s>> -rt5)) + (zext(!right) * (rss5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + result:8 = (zext(right) * (rss5 s>> -shamt)) + (zext(!right) * (rss5 << shamt)); Rdd5 = rdd5 ^ result; build EndPacket; } @@ -3287,8 +3297,9 @@ define pcodeop aslSat; # 1 1 0 0 1 0 1 1 0 0 0 s s s s s P P - t t t t t 1 0 - x x x x x :asl|= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x58 & op0607=2 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) { - right:1 = rt5 s< 0; - result:8 = (zext(right) * (rss5 s>> -rt5)) + (zext(!right) * (rss5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + result:8 = (zext(right) * (rss5 s>> -shamt)) + (zext(!right) * (rss5 << shamt)); Rdd5 = rdd5 | result; build EndPacket; } @@ -3374,8 +3385,9 @@ define pcodeop aslSat; # 1 1 0 0 0 1 1 0 0 1 - s s s s s P P - t t t t t 0 0 - d d d d d :asr Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x19 & op0607=0 & Rd5 & rs5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - Rd5 = (zext(!left) * (rs5 s>> rt5)) + (zext(left) * (rs5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + Rd5 = (zext(!left) * (rs5 s>> shamt)) + (zext(left) * (rs5 << -shamt)); build EndPacket; } @@ -3407,8 +3419,9 @@ define pcodeop asrSat; # 1 1 0 0 0 0 1 1 1 0 - s s s s s P P - t t t t t 0 0 - d d d d d :asr Rdd5,rss5,rt5 EndPacket is iclass=12 & op2227=0xe & op0607=0 & Rdd5 & rss5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - Rdd5 = (zext(!left) * (rss5 s>> rt5)) + (zext(left) * (rss5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + Rdd5 = (zext(!left) * (rss5 s>> shamt)) + (zext(left) * (rss5 << -shamt)); build EndPacket; } @@ -3428,8 +3441,9 @@ define pcodeop asrSat; # 1 1 0 0 1 1 0 0 0 1 - s s s s s P P - t t t t t 0 0 - x x x x x :asr&= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x31 & op0607=0 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - result:4 = (zext(!left) * (rs5 s>> rt5)) + (zext(left) * (rs5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + result:4 = (zext(!left) * (rs5 s>> shamt)) + (zext(left) * (rs5 << -shamt)); Rd5 = rd5 & result; build EndPacket; } @@ -3450,8 +3464,9 @@ define pcodeop asrSat; # 1 1 0 0 1 1 0 0 1 1 - s s s s s P P - t t t t t 0 0 - x x x x x :asr+= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x33 & op0607=0 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - result:4 = (zext(!left) * (rs5 s>> rt5)) + (zext(left) * (rs5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + result:4 = (zext(!left) * (rs5 s>> shamt)) + (zext(left) * (rs5 << -shamt)); Rd5 = rd5 + result; build EndPacket; } @@ -3472,8 +3487,9 @@ define pcodeop asrSat; # 1 1 0 0 1 1 0 0 1 0 - s s s s s P P - t t t t t 0 0 - x x x x x :asr-= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x32 & op0607=0 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - result:4 = (zext(!left) * (rs5 s>> rt5)) + (zext(left) * (rs5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + result:4 = (zext(!left) * (rs5 s>> shamt)) + (zext(left) * (rs5 << -shamt)); Rd5 = rd5 - result; build EndPacket; } @@ -3494,8 +3510,9 @@ define pcodeop asrSat; # 1 1 0 0 1 1 0 0 0 0 - s s s s s P P - t t t t t 0 0 - x x x x x :asr|= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x30 & op0607=0 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - result:4 = (zext(!left) * (rs5 s>> rt5)) + (zext(left) * (rs5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + result:4 = (zext(!left) * (rs5 s>> shamt)) + (zext(left) * (rs5 << -shamt)); Rd5 = rd5 | result; build EndPacket; } @@ -3516,8 +3533,9 @@ define pcodeop asrSat; # 1 1 0 0 1 0 1 1 0 1 0 s s s s s P P - t t t t t 0 0 - x x x x x :asr&= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5a & op0607=0 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - result:8 = (zext(!left) * (rss5 s>> rt5)) + (zext(left) * (rss5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + result:8 = (zext(!left) * (rss5 s>> shamt)) + (zext(left) * (rss5 << -shamt)); Rdd5 = rdd5 & result; build EndPacket; } @@ -3538,8 +3556,9 @@ define pcodeop asrSat; # 1 1 0 0 1 0 1 1 1 1 0 s s s s s P P - t t t t t 0 0 - x x x x x :asr+= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5e & op0607=0 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - result:8 = (zext(!left) * (rss5 s>> rt5)) + (zext(left) * (rss5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + result:8 = (zext(!left) * (rss5 s>> shamt)) + (zext(left) * (rss5 << -shamt)); Rdd5 = rdd5 + result; build EndPacket; } @@ -3560,8 +3579,9 @@ define pcodeop asrSat; # 1 1 0 0 1 0 1 1 1 0 0 s s s s s P P - t t t t t 0 0 - x x x x x :asr-= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5c & op0607=0 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - result:8 = (zext(!left) * (rss5 s>> rt5)) + (zext(left) * (rss5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + result:8 = (zext(!left) * (rss5 s>> shamt)) + (zext(left) * (rss5 << -shamt)); Rdd5 = rdd5 - result; build EndPacket; } @@ -3572,8 +3592,9 @@ define pcodeop asrSat; # 1 1 0 0 1 0 1 1 0 1 1 s s s s s P P - t t t t t 0 0 - x x x x x :asr"^=" Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5b & op0607=0 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - result:8 = (zext(!left) * (rss5 s>> rt5)) + (zext(left) * (rss5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + result:8 = (zext(!left) * (rss5 s>> shamt)) + (zext(left) * (rss5 << -shamt)); Rdd5 = rdd5 ^ result; build EndPacket; } @@ -3594,8 +3615,9 @@ define pcodeop asrSat; # 1 1 0 0 1 0 1 1 0 0 0 s s s s s P P - t t t t t 0 0 - x x x x x :asr|= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x58 & op0607=0 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - result:8 = (zext(!left) * (rss5 s>> rt5)) + (zext(left) * (rss5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + result:8 = (zext(!left) * (rss5 s>> shamt)) + (zext(left) * (rss5 << -shamt)); Rdd5 = rdd5 | result; build EndPacket; } @@ -4211,7 +4233,8 @@ define pcodeop clip; # 1 1 0 0 0 1 1 0 1 0 - s s s s s P P - t t t t t 0 1 - d d d d d :clrbit Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x1a & op0607=1 & Rd5 & rs5 & rt5 & $(END_PACKET) { - mask:4 = 1 << rt5; + shamt:4 = (rt5 << 25) s>> 25; + mask:4 = zext(shamt s>= 0) * (1 << shamt); Rd5 = rs5 & ~mask; build EndPacket; } @@ -6922,7 +6945,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 0 1 1 0 1 0 - i i i i i P P - t t t t t 1 1 i d d d d d :lsl Rd5,Simm8_1620_05,rt5 EndPacket is iclass=12 & op2227=0x1a & op0607=3 & Rd5 & rt5 & Simm8_1620_05 & $(END_PACKET) { - Rd5 = sext(Simm8_1620_05) << rt5; + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + Rd5 = (zext(right) * (sext(Simm8_1620_05) >> -shamt)) + (zext(!right) * (sext(Simm8_1620_05) << shamt)); build EndPacket; } @@ -6932,8 +6957,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 0 1 1 0 0 1 - s s s s s P P - t t t t t 1 1 - d d d d d :lsl Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x19 & op0607=3 & Rd5 & rt5 & rs5 & $(END_PACKET) { - right:1 = rt5 s< 0; - Rd5 = (zext(right) * (rs5 >> -rt5)) + (zext(!right) * (rs5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + Rd5 = (zext(right) * (rs5 >> -shamt)) + (zext(!right) * (rs5 << shamt)); build EndPacket; } @@ -6943,8 +6969,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 0 0 1 1 1 0 - s s s s s P P - t t t t t 1 1 - d d d d d :lsl Rdd5,rss5,rt5 EndPacket is iclass=12 & op2227=0xe & op0607=3 & Rdd5 & rt5 & rss5 & $(END_PACKET) { - right:1 = rt5 s< 0; - Rdd5 = (zext(right) * (rss5 >> -rt5)) + (zext(!right) * (rss5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + Rdd5 = (zext(right) * (rss5 >> -shamt)) + (zext(!right) * (rss5 << shamt)); build EndPacket; } @@ -6954,8 +6981,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 1 1 0 0 0 1 - s s s s s P P - t t t t t 1 1 - x x x x x :lsl&= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x31 & op0607=3 & Rd5 & rd5 & rt5 & rs5 & $(END_PACKET) { - right:1 = rt5 s< 0; - result:4 = (zext(right) * (rs5 >> -rt5)) + (zext(!right) * (rs5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + result:4 = (zext(right) * (rs5 >> -shamt)) + (zext(!right) * (rs5 << shamt)); Rd5 = rd5 & result; build EndPacket; } @@ -6966,8 +6994,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 1 1 0 0 1 1 - s s s s s P P - t t t t t 1 1 - x x x x x :lsl+= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x33 & op0607=3 & Rd5 & rd5 & rt5 & rs5 & $(END_PACKET) { - right:1 = rt5 s< 0; - result:4 = (zext(right) * (rs5 >> -rt5)) + (zext(!right) * (rs5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + result:4 = (zext(right) * (rs5 >> -shamt)) + (zext(!right) * (rs5 << shamt)); Rd5 = rd5 + result; build EndPacket; } @@ -6978,8 +7007,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 1 1 0 0 1 0 - s s s s s P P - t t t t t 1 1 - x x x x x :lsl-= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x32 & op0607=3 & Rd5 & rd5 & rt5 & rs5 & $(END_PACKET) { - right:1 = rt5 s< 0; - result:4 = (zext(right) * (rs5 >> -rt5)) + (zext(!right) * (rs5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + result:4 = (zext(right) * (rs5 >> -shamt)) + (zext(!right) * (rs5 << shamt)); Rd5 = rd5 - result; build EndPacket; } @@ -6990,8 +7020,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 1 1 0 0 0 0 - s s s s s P P - t t t t t 1 1 - x x x x x :lsl|= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x30 & op0607=3 & Rd5 & rd5 & rt5 & rs5 & $(END_PACKET) { - right:1 = rt5 s< 0; - result:4 = (zext(right) * (rs5 >> -rt5)) + (zext(!right) * (rs5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + result:4 = (zext(right) * (rs5 >> -shamt)) + (zext(!right) * (rs5 << shamt)); Rd5 = rd5 | result; build EndPacket; } @@ -7002,7 +7033,10 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 1 0 1 1 0 1 0 s s s s s P P - t t t t t 1 1 - x x x x x :lsl&= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5a & op0607=3 & Rdd5 & rdd5 & rt5 & rss5 & $(END_PACKET) { - Rdd5 = rdd5 & (rss5 << rt5); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + result:8 = (zext(right) * (rss5 >> -shamt)) + (zext(!right) * (rss5 << shamt)); + Rdd5 = rdd5 & result; build EndPacket; } @@ -7012,8 +7046,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 1 0 1 1 1 1 0 s s s s s P P - t t t t t 1 1 - x x x x x :lsl+= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5e & op0607=3 & Rdd5 & rdd5 & rt5 & rss5 & $(END_PACKET) { - right:1 = rt5 s< 0; - result:8 = (zext(right) * (rss5 >> -rt5)) + (zext(!right) * (rss5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + result:8 = (zext(right) * (rss5 >> -shamt)) + (zext(!right) * (rss5 << shamt)); Rdd5 = rdd5 + result; build EndPacket; } @@ -7024,8 +7059,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 1 0 1 1 1 0 0 s s s s s P P - t t t t t 1 1 - x x x x x :lsl-= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5c & op0607=3 & Rdd5 & rdd5 & rt5 & rss5 & $(END_PACKET) { - right:1 = rt5 s< 0; - result:8 = (zext(right) * (rss5 >> -rt5)) + (zext(!right) * (rss5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + result:8 = (zext(right) * (rss5 >> -shamt)) + (zext(!right) * (rss5 << shamt)); Rdd5 = rdd5 - result; build EndPacket; } @@ -7036,8 +7072,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 1 0 1 1 0 1 1 s s s s s P P - t t t t t 1 1 - x x x x x :lsl"^=" Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5b & op0607=3 & Rdd5 & rdd5 & rt5 & rss5 & $(END_PACKET) { - right:1 = rt5 s< 0; - result:8 = (zext(right) * (rss5 >> -rt5)) + (zext(!right) * (rss5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + result:8 = (zext(right) * (rss5 >> -shamt)) + (zext(!right) * (rss5 << shamt)); Rdd5 = rdd5 ^ result; build EndPacket; } @@ -7048,8 +7085,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 1 0 1 1 0 0 0 s s s s s P P - t t t t t 1 1 - x x x x x :lsl|= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x58 & op0607=3 & Rdd5 & rdd5 & rt5 & rss5 & $(END_PACKET) { - right:1 = rt5 s< 0; - result:8 = (zext(right) * (rss5 >> -rt5)) + (zext(!right) * (rss5 << rt5)); + shamt:4 = (rt5 << 25) s>> 25; + right:1 = shamt s< 0; + result:8 = (zext(right) * (rss5 >> -shamt)) + (zext(!right) * (rss5 << shamt)); Rdd5 = rdd5 | result; build EndPacket; } @@ -7070,8 +7108,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 0 1 1 0 0 1 - s s s s s P P - t t t t t 0 1 - d d d d d :lsr Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x19 & op0607=1 & Rd5 & rs5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - Rd5 = (zext(!left) * (rs5 >> rt5)) + (zext(left) * (rs5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + Rd5 = (zext(!left) * (rs5 >> shamt)) + (zext(left) * (rs5 << -shamt)); build EndPacket; } @@ -7091,8 +7130,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 0 0 1 1 1 0 - s s s s s P P - t t t t t 0 1 - d d d d d :lsr Rdd5,rss5,rt5 EndPacket is iclass=12 & op2227=0xe & op0607=1 & Rdd5 & rss5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - Rdd5 = (zext(!left) * (rss5 >> rt5)) + (zext(left) * (rss5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + Rdd5 = (zext(!left) * (rss5 >> shamt)) + (zext(left) * (rss5 << -shamt)); build EndPacket; } @@ -7112,8 +7152,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 1 1 0 0 0 1 - s s s s s P P - t t t t t 0 1 - x x x x x :lsr&= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x31 & op0607=1 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - result:4 = (zext(!left) * (rs5 >> rt5)) + (zext(left) * (rs5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + result:4 = (zext(!left) * (rs5 >> shamt)) + (zext(left) * (rs5 << -shamt)); Rd5 = rd5 & result; build EndPacket; } @@ -7134,8 +7175,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 1 1 0 0 1 1 - s s s s s P P - t t t t t 0 1 - x x x x x :lsr+= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x33 & op0607=1 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - result:4 = (zext(!left) * (rs5 >> rt5)) + (zext(left) * (rs5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + result:4 = (zext(!left) * (rs5 >> shamt)) + (zext(left) * (rs5 << -shamt)); Rd5 = rd5 + result; build EndPacket; } @@ -7156,8 +7198,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 1 1 0 0 1 0 - s s s s s P P - t t t t t 0 1 - x x x x x :lsr-= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x32 & op0607=1 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - result:4 = (zext(!left) * (rs5 >> rt5)) + (zext(left) * (rs5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + result:4 = (zext(!left) * (rs5 >> shamt)) + (zext(left) * (rs5 << -shamt)); Rd5 = rd5 - result; build EndPacket; } @@ -7188,8 +7231,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 1 1 0 0 0 0 - s s s s s P P - t t t t t 0 1 - x x x x x :lsr|= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x30 & op0607=1 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - result:4 = (zext(!left) * (rs5 >> rt5)) + (zext(left) * (rs5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + result:4 = (zext(!left) * (rs5 >> shamt)) + (zext(left) * (rs5 << -shamt)); Rd5 = rd5 | result; build EndPacket; } @@ -7210,8 +7254,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 1 0 1 1 0 1 0 s s s s s P P - t t t t t 0 1 - x x x x x :lsr&= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5a & op0607=1 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - result:8 = (zext(!left) * (rss5 >> rt5)) + (zext(left) * (rss5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + result:8 = (zext(!left) * (rss5 >> shamt)) + (zext(left) * (rss5 << -shamt)); Rdd5 = rdd5 & result; build EndPacket; } @@ -7232,8 +7277,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 1 0 1 1 1 1 0 s s s s s P P - t t t t t 0 1 - x x x x x :lsr+= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5e & op0607=1 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - result:8 = (zext(!left) * (rss5 >> rt5)) + (zext(left) * (rss5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + result:8 = (zext(!left) * (rss5 >> shamt)) + (zext(left) * (rss5 << -shamt)); Rdd5 = rdd5 + result; build EndPacket; } @@ -7254,8 +7300,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 1 0 1 1 1 0 0 s s s s s P P - t t t t t 0 1 - x x x x x :lsr-= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5c & op0607=1 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - result:8 = (zext(!left) * (rss5 >> rt5)) + (zext(left) * (rss5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + result:8 = (zext(!left) * (rss5 >> shamt)) + (zext(left) * (rss5 << -shamt)); Rdd5 = rdd5 - result; build EndPacket; } @@ -7276,8 +7323,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 1 0 1 1 0 1 1 s s s s s P P - t t t t t 0 1 - x x x x x :lsr"^=" Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5b & op0607=1 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - result:8 = (zext(!left) * (rss5 >> rt5)) + (zext(left) * (rss5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + result:8 = (zext(!left) * (rss5 >> shamt)) + (zext(left) * (rss5 << -shamt)); Rdd5 = rdd5 ^ result; build EndPacket; } @@ -7298,8 +7346,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 << # 1 1 0 0 1 0 1 1 0 0 0 s s s s s P P - t t t t t 0 1 - x x x x x :lsr|= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x58 & op0607=1 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) { - left:1 = rt5 s< 0; - result:8 = (zext(!left) * (rss5 >> rt5)) + (zext(left) * (rss5 << -rt5)); + shamt:4 = (rt5 << 25) s>> 25; + left:1 = shamt s< 0; + result:8 = (zext(!left) * (rss5 >> shamt)) + (zext(left) * (rss5 << -shamt)); Rdd5 = rdd5 | result; build EndPacket; } @@ -13630,7 +13679,8 @@ define pcodeop roundArithmeticPSat; # 1 1 0 0 0 1 1 0 1 0 - s s s s s P P - t t t t t 0 0 - d d d d d :setbit Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x1a & op0607=0 & Rd5 & rs5 & rt5 & $(END_PACKET) { - mask:4 = 1 << rt5; + shamt:4 = (rt5 << 25) s>> 25; + mask:4 = zext(shamt s>= 0) * (1 << shamt); Rd5 = rs5 | mask; build EndPacket; } @@ -14395,7 +14445,8 @@ define pcodeop tlbw; # 1 1 0 0 0 1 1 0 1 0 - s s s s s P P - t t t t t 1 0 - d d d d d :togglebit Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x1a & op0607=2 & Rd5 & rs5 & rt5 & $(END_PACKET) { - mask:4 = 1 << rt5; + shamt:4 = (rt5 << 25) s>> 25; + mask:4 = zext(shamt s>= 0) * (1 << shamt); Rd5 = rs5 ^ mask; build EndPacket; } @@ -14493,7 +14544,8 @@ define pcodeop getTrap1Vector; # 1 1 0 0 0 1 1 1 0 0 0 s s s s s P P - t t t t t - - - - - - d d :tstbit Pd2,rs5,rt5 EndPacket is iclass=12 & op2127=0x38 & rs5 & rt5 & Pd2 & $(END_PACKET) { - mask:4 = 1 << rt5; + shamt:4 = (rt5 << 25) s>> 25; + mask:4 = zext(shamt s>= 0) * (1 << shamt); bool:1 = (rs5 & mask) != 0; Pd2 = Pd2 & (bool * 0xff); build EndPacket; @@ -14505,7 +14557,8 @@ define pcodeop getTrap1Vector; # 1 1 0 0 0 1 1 1 0 0 1 s s s s s P P - t t t t t - - - - - - d d :"!tstbit" Pd2,rs5,rt5 EndPacket is iclass=12 & op2127=0x39 & rs5 & rt5 & Pd2 & $(END_PACKET) { - mask:4 = 1 << rt5; + shamt:4 = (rt5 << 25) s>> 25; + mask:4 = zext(shamt s>= 0) * (1 << shamt); bool:1 = (rs5 & mask) == 0; Pd2 = Pd2 & (bool * 0xff); build EndPacket;