hexagon: model sxt7 shift amount in register-form shifts

This commit is contained in:
Shawn Hoffman
2026-05-07 18:56:59 -07:00
committed by ghidra1
parent 0402ed5476
commit d29b9c718f

View File

@@ -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;