diff --git a/pypcode/processors/68000/data/languages/68000.ldefs b/pypcode/processors/68000/data/languages/68000.ldefs
index 5115f2d8..7fe13fc6 100644
--- a/pypcode/processors/68000/data/languages/68000.ldefs
+++ b/pypcode/processors/68000/data/languages/68000.ldefs
@@ -73,4 +73,17 @@
+
+ Motorola 32-bit CPU32 (MC68340)
+
+
+
diff --git a/pypcode/processors/68000/data/languages/68000.sinc b/pypcode/processors/68000/data/languages/68000.sinc
index 674c9d06..b6a8b957 100644
--- a/pypcode/processors/68000/data/languages/68000.sinc
+++ b/pypcode/processors/68000/data/languages/68000.sinc
@@ -59,6 +59,10 @@ define register offset=0x746 size=10 [ FP7 ];
@define DAT_DIR_CTL_ADDR_MODES2 "(mode2=0 | mode2=2 | mode2=5 | mode2=6 | mode=7)" # Data direct and control addressing modes
@define CTL_ADDR_MODES2 "(mode2=2 | mode2=5 | mode2=6 | mode2=7)" # Control addressing modes
+@ifdef CPU32
+@define TBL_ADDR_MODES "(tbl_mode=2 | tbl_mode=4 | tbl_mode=5 | tbl_mode=6 | tbl_mode=7)"
+@endif
+
# Floating-point condition code bits within FPSR
@define N_FP "FPSR[27,1]"
@define Z_FP "FPSR[26,1]"
@@ -173,9 +177,29 @@ define token extword (16)
reg12x = (12,15)
reg12xwu = (12,15)
reg12xwl = (12,15)
-@endif
+@endif
+@ifdef CPU32
+ tbl_dr_size = (6,7)
+ tbl_dr_round = (10,10)
+ tbl_dr_sign = (11,11)
+ tbl_dr_reg = (0,2)
+@endif
;
+@ifdef CPU32
+define token tbl_instrA(32)
+ tbl_regan=(16,18)
+ tbl_mode=(19,21)
+ tbl_op37=(19,23)
+ tbl_op67=(22,23)
+ tbl_opbig=(24,31)
+ tbl_size=(6,7)
+ tbl_round=(10,10)
+ tbl_sign=(11,11)
+ tbl_regxdn=(12,14)
+;
+@endif
+
define token extword2 (16)
regda2 = (12,15)
ext2_911 = (9,11)
@@ -307,12 +331,20 @@ define context contextreg
extGUARD = (14,14) # guard for saving off modes before starting instructions
;
+@ifdef CPU32
+attach variables [ regdn regxdn reg9dn regdr regdq regsdn regdu regdc regdu2 regdc2 tbl_regxdn tbl_dr_reg ] [ D0 D1 D2 D3 D4 D5 D6 D7 ];
+@else
attach variables [ regdn regxdn reg9dn regdr regdq regsdn regdu regdc regdu2 regdc2 ] [ D0 D1 D2 D3 D4 D5 D6 D7 ];
+@endif
attach variables [ fldoffreg fldwdreg f_reg fcnt fkfacreg fldynreg ] [ D0 D1 D2 D3 D4 D5 D6 D7 ];
attach variables [ regdnw regxdnw reg9dnw regsdnw regduw regdcw regdu2w regdc2w ] [ D0w D1w D2w D3w D4w D5w D6w D7w ];
attach variables [ regdnb reg9dnb regsdnb regdub regdcb ] [ D0b D1b D2b D3b D4b D5b D6b D7b ];
attach variables [ regda regda2 ] [ D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 A2 A3 A4 A5 A6 SP ];
+@ifdef CPU32
+attach variables [ regan regxan reg9an regfan regsan aregx tbl_regan ] [ A0 A1 A2 A3 A4 A5 A6 SP ];
+@else
attach variables [ regan regxan reg9an regfan regsan aregx ] [ A0 A1 A2 A3 A4 A5 A6 SP ];
+@endif
attach variables [ reganw regxanw regsanw ] [ A0w A1w A2w A3w A4w A5w A6w A7w ];
attach variables [ reganb regsanb ] [ A0b A1b A2b A3b A4b A5b A6b A7b ];
@@ -1051,6 +1083,7 @@ with : extGUARD=1 {
local source = regdn; mask:4 = 1 << (const8 & 31); ZF = (source & mask) == 0; regdn = source & (~mask);
}
+@ifndef CPU32
bfOffWd: {f_off:f_wd} is f_off & f_wd { }
:bfchg e2l^bfOffWd is opbig=0xea & op67=3 & $(DAT_DIR_CTL_ADDR_MODES); bfOffWd & f_off & f_wd; e2l [ savmod2=savmod1; regtsan=regtfan; ] {
logflags();
@@ -1144,6 +1177,7 @@ bfOffWd: {f_off:f_wd} is f_off & f_wd { }
getbitfield(tmp, f_off, f_wd);
resbitflags(tmp, f_wd-1);
}
+@endif # CPU32 - no bitfield instructions
define pcodeop breakpoint;
:bkpt "#"op02 is opbig=0x48 & op67=1 & op5=0 & op34=1 & op02 { breakpoint(); }
@@ -1205,7 +1239,8 @@ define pcodeop breakpoint;
}
@endif # COLDFIRE
-# TODO: Determine layout of a module descriptor
+@ifndef CPU32
+# TODO: Determine layout of a module descriptor
define pcodeop callm;
:callm const8,e2l is opbig=6 & op67=3 & $(CTL_ADDR_MODES); const8; e2l [ savmod2=savmod1; regtsan=regtfan; ] {
PC = callm(const8, e2l);
@@ -1283,6 +1318,7 @@ define pcodeop callm;
ZF = 1;
NF = 0;
}
+@endif # CPU32 - no CALLM, CAS, CAS2
:chk.w eaw,reg9dnw is (op=4 & reg9dnw & op68=6 & $(DAT_ALTER_ADDR_MODES))... & eaw {
build eaw;
@@ -1771,37 +1807,37 @@ r2mfl0: { r2mfl1} is mvm15=0 & r2mfl1 { }
# Register to memory, backward direction, via word
-r2mbwf: A7w is A7w & mvm0=1 { movemptr = movemptr - 4; *movemptr = A7w; }
+r2mbwf: A7w is A7w & mvm0=1 { movemptr = movemptr - 2; *movemptr = A7w; }
r2mbwf: is mvm0=0 { }
-r2mbwe: r2mbwf" "A6w is A6w & mvm1=1 & r2mbwf { movemptr = movemptr - 4; *movemptr = A6w; }
+r2mbwe: r2mbwf" "A6w is A6w & mvm1=1 & r2mbwf { movemptr = movemptr - 2; *movemptr = A6w; }
r2mbwe: r2mbwf is mvm1=0 & r2mbwf { }
-r2mbwd: r2mbwe" "A5w is A5w & mvm2=1 & r2mbwe { movemptr = movemptr - 4; *movemptr = A5w; }
+r2mbwd: r2mbwe" "A5w is A5w & mvm2=1 & r2mbwe { movemptr = movemptr - 2; *movemptr = A5w; }
r2mbwd: r2mbwe is mvm2=0 & r2mbwe { }
-r2mbwc: r2mbwd" "A4w is A4w & mvm3=1 & r2mbwd { movemptr = movemptr - 4; *movemptr = A4w; }
+r2mbwc: r2mbwd" "A4w is A4w & mvm3=1 & r2mbwd { movemptr = movemptr - 2; *movemptr = A4w; }
r2mbwc: r2mbwd is mvm3=0 & r2mbwd { }
-r2mbwb: r2mbwc" "A3w is A3w & mvm4=1 & r2mbwc { movemptr = movemptr - 4; *movemptr = A3w; }
+r2mbwb: r2mbwc" "A3w is A3w & mvm4=1 & r2mbwc { movemptr = movemptr - 2; *movemptr = A3w; }
r2mbwb: r2mbwc is mvm4=0 & r2mbwc { }
-r2mbwa: r2mbwb" "A2w is A2w & mvm5=1 & r2mbwb { movemptr = movemptr - 4; *movemptr = A2w; }
+r2mbwa: r2mbwb" "A2w is A2w & mvm5=1 & r2mbwb { movemptr = movemptr - 2; *movemptr = A2w; }
r2mbwa: r2mbwb is mvm5=0 & r2mbwb { }
-r2mbw9: r2mbwa" "A1w is A1w & mvm6=1 & r2mbwa { movemptr = movemptr - 4; *movemptr = A1w; }
+r2mbw9: r2mbwa" "A1w is A1w & mvm6=1 & r2mbwa { movemptr = movemptr - 2; *movemptr = A1w; }
r2mbw9: r2mbwa is mvm6=0 & r2mbwa { }
-r2mbw8: r2mbw9" "A0w is A0w & mvm7=1 & r2mbw9 { movemptr = movemptr - 4; *movemptr = A0w; }
+r2mbw8: r2mbw9" "A0w is A0w & mvm7=1 & r2mbw9 { movemptr = movemptr - 2; *movemptr = A0w; }
r2mbw8: r2mbw9 is mvm7=0 & r2mbw9 { }
-r2mbw7: r2mbw8" "D7w is D7w & mvm8=1 & r2mbw8 { movemptr = movemptr - 4; *movemptr = D7w; }
+r2mbw7: r2mbw8" "D7w is D7w & mvm8=1 & r2mbw8 { movemptr = movemptr - 2; *movemptr = D7w; }
r2mbw7: r2mbw8 is mvm8=0 & r2mbw8 { }
-r2mbw6: r2mbw7" "D6w is D6w & mvm9=1 & r2mbw7 { movemptr = movemptr - 4; *movemptr = D6w; }
+r2mbw6: r2mbw7" "D6w is D6w & mvm9=1 & r2mbw7 { movemptr = movemptr - 2; *movemptr = D6w; }
r2mbw6: r2mbw7 is mvm9=0 & r2mbw7 { }
-r2mbw5: r2mbw6" "D5w is D5w & mvm10=1 & r2mbw6 { movemptr = movemptr - 4; *movemptr = D5w; }
+r2mbw5: r2mbw6" "D5w is D5w & mvm10=1 & r2mbw6 { movemptr = movemptr - 2; *movemptr = D5w; }
r2mbw5: r2mbw6 is mvm10=0 & r2mbw6 { }
-r2mbw4: r2mbw5" "D4w is D4w & mvm11=1 & r2mbw5 { movemptr = movemptr - 4; *movemptr = D4w; }
+r2mbw4: r2mbw5" "D4w is D4w & mvm11=1 & r2mbw5 { movemptr = movemptr - 2; *movemptr = D4w; }
r2mbw4: r2mbw5 is mvm11=0 & r2mbw5 { }
-r2mbw3: r2mbw4" "D3w is D3w & mvm12=1 & r2mbw4 { movemptr = movemptr - 4; *movemptr = D3w; }
+r2mbw3: r2mbw4" "D3w is D3w & mvm12=1 & r2mbw4 { movemptr = movemptr - 2; *movemptr = D3w; }
r2mbw3: r2mbw4 is mvm12=0 & r2mbw4 { }
-r2mbw2: r2mbw3" "D2w is D2w & mvm13=1 & r2mbw3 { movemptr = movemptr - 4; *movemptr = D2w; }
+r2mbw2: r2mbw3" "D2w is D2w & mvm13=1 & r2mbw3 { movemptr = movemptr - 2; *movemptr = D2w; }
r2mbw2: r2mbw3 is mvm13=0 & r2mbw3 { }
-r2mbw1: r2mbw2" "D1w is D1w & mvm14=1 & r2mbw2 { movemptr = movemptr - 4; *movemptr = D1w; }
+r2mbw1: r2mbw2" "D1w is D1w & mvm14=1 & r2mbw2 { movemptr = movemptr - 2; *movemptr = D1w; }
r2mbw1: r2mbw2 is mvm14=0 & r2mbw2 { }
-r2mbw0: { r2mbw1" "D0w} is D0w & mvm15=1 & r2mbw1 { movemptr = movemptr - 4; *movemptr = D0w; }
+r2mbw0: { r2mbw1" "D0w} is D0w & mvm15=1 & r2mbw1 { movemptr = movemptr - 2; *movemptr = D0w; }
r2mbw0: { r2mbw1} is mvm15=0 & r2mbw1 { }
@@ -2060,6 +2096,7 @@ macro negResFlags(result) {
:ori const8,"CCR" is opbig=0 & op37=7 & op02=4; const8 { packflags(SR); SR=SR|zext(const8); unpackflags(SR); }
:ori const16,SR is SR; opbig=0x00 & d8base=0x7c; const16 { packflags(SR); SR=SR|const16; unpackflags(SR); }
+@ifndef CPU32
:pack Tyw,Txw,const16 is op=8 & op48=20 & Txw & Tyw & rmbit=0; const16 {
local value = (Tyw & 0x0F0F) + const16;
Txw = (Txw & 0xFF00) | ((value & 0x0F00) >> 4) | (value & 0x000F);
@@ -2070,6 +2107,7 @@ macro negResFlags(result) {
local result:2 = ((value & 0x0F00) >> 4) | (value & 0x000F);
Txb = result:1;
}
+@endif # CPU32 - no PACK
:pea eaptr is (opbig=0x48 & op67=1 & $(CTL_ADDR_MODES))... & eaptr { value:4 = eaptr; SP = SP-4; *SP = value; }
@@ -2227,9 +2265,11 @@ ptestLevel: "#"^mregn is mregn { export *[const]:1 mregn; }
:rtd const16 is opbig=0x4e & op37=14 & op02=4; const16 { PC = *SP; SP = SP + 4 + zext(const16); return [PC]; }
:rte is d16=0x4e73 { tmp:4 = 0; return [tmp]; }
+@ifndef CPU32
define pcodeop rtm;
:rtm regdn is opbig=0x06 & op37=24 & regdn { PC = rtm(regdn); return [PC]; }
:rtm regan is opbig=0x06 & op37=25 & regan { PC = rtm(regan); return [PC];}
+@endif # CPU32 - no RTM
:rtr is opbig=0x4e & op37=14 & op02=7 { SR = *SP; SP = SP+2; PC = *SP; SP = SP+4; unpackflags(SR); return [PC]; }
@@ -2306,6 +2346,7 @@ define pcodeop stop;
:unlk regan is opbig=0x4e & op37=11 & regan { SP = regan; regan = *SP; SP = SP+4; }
+@ifndef CPU32
:unpk Tyw,Txw,const16 is op=8 & Txw & op48=24 & Tyw & rmbit=0; const16 {
Txw = (Txw & 0xF0F0) | ((((Tyw & 0x00F0) << 4) | (Tyw & 0x000F)) + const16);
}
@@ -2315,7 +2356,9 @@ define pcodeop stop;
source = (((source & 0x00F0) << 4) | (source & 0x000F)) + const16;
Txw = (Txw & 0xF0F0) | source;
}
+@endif # CPU32 - no UNPK
+@ifndef CPU32
# Floating Point Instructions
# 68040 directly implements Floating Point instructions but requires Coprocessor ID be 001
@@ -2883,6 +2926,7 @@ fsubrnd: "d" is fdst & fopmode=0x6c { tmp:4 = float2float(fdst); fdst = float2f
:ftwotox.x fsrc, fdst is op=15 & $(FP_COP) & op68=0 & mode=0 & regan=0; frm=0 & f1515=0 & f1313=0 & fsrc & fdst & fopmode=0x11
{ fdst = ftwotox(fsrc); }
+@endif # CPU32 - no FPU instructions
@ifdef COLDFIRE
@@ -3151,4 +3195,97 @@ moveaccreg2: ACC3 is ACC3 & op01=3 { export ACC3; }
@endif
+@ifdef CPU32
+
+tbl_eal: (tbl_regan) is tbl_mode=2 & tbl_regan { export *:4 tbl_regan; }
+tbl_eal: -(tbl_regan) is tbl_mode=4 & tbl_regan { tbl_regan = tbl_regan - 4; export *:4 tbl_regan; }
+tbl_eal: (d16,tbl_regan) is tbl_mode=5 & tbl_regan; d16 { local tmp = tbl_regan + d16; export *:4 tmp; }
+tbl_eal: (extw) is tbl_mode=6 & tbl_regan; extw [ regtfan = tbl_regan; pcmode = 0; ] { build extw; export *:4 extw; }
+tbl_eal: (d16,PC) is PC & tbl_mode=7 & tbl_regan=2; d16 { tmp:4 = inst_start + 2 + d16; export *:4 tmp; }
+tbl_eal: (extw) is tbl_mode=7 & tbl_regan=3; extw [ pcmode=1; ] { build extw; export *:4 extw; }
+tbl_eal: (d16)".w" is tbl_mode=7 & tbl_regan=0; d16 { export *:4 d16; }
+tbl_eal: (d32)".l" is tbl_mode=7 & tbl_regan=1; d32 { export *:4 d32; }
+tbl_eal: "#"^d32 is tbl_mode=7 & tbl_regan=4; d32 { export *[const]:4 d32; }
+
+tbl_eaw: (tbl_regan) is tbl_mode=2 & tbl_regan { export *:2 tbl_regan; }
+tbl_eaw: -(tbl_regan) is tbl_mode=4 & tbl_regan { tbl_regan = tbl_regan - 2; export *:2 tbl_regan; }
+tbl_eaw: (d16,tbl_regan) is tbl_mode=5 & tbl_regan; d16 { local tmp = tbl_regan + d16; export *:2 tmp; }
+tbl_eaw: (extw) is tbl_mode=6 & tbl_regan; extw [ pcmode=0; regtfan=tbl_regan; ] { build extw; export *:2 extw; }
+tbl_eaw: (d16,PC) is PC & tbl_mode=7 & tbl_regan=2; d16 { tmp:4 = inst_start + 2 + d16; export *:2 tmp; }
+tbl_eaw: (extw) is tbl_mode=7 & tbl_regan=3; extw [ pcmode=1; ] { build extw; export *:2 extw; }
+tbl_eaw: (d16)".w" is tbl_mode=7 & tbl_regan=0; d16 { export *:2 d16; }
+tbl_eaw: (d32)".l" is tbl_mode=7 & tbl_regan=1; d32 { export *:2 d32; }
+tbl_eaw: "#"^d16 is tbl_mode=7 & tbl_regan=4; d16 { export *[const]:2 d16; }
+
+tbl_eab: (tbl_regan) is tbl_mode=2 & tbl_regan { export *:1 tbl_regan; }
+tbl_eab: -(tbl_regan) is tbl_mode=4 & tbl_regan { tbl_regan = tbl_regan - 1; export *:1 tbl_regan; }
+tbl_eab: (d16,tbl_regan) is tbl_mode=5 & tbl_regan; d16 { local tmp = tbl_regan + d16; export *:1 tmp; }
+tbl_eab: (extw) is tbl_mode=6 & tbl_regan; extw [ pcmode=0; regtfan=tbl_regan; ] { build extw; export *:1 extw; }
+tbl_eab: (d16,PC) is PC & tbl_mode=7 & tbl_regan=2; d16 { tmp:4 = inst_start + 2 + d16; export *:1 tmp; }
+tbl_eab: (extw) is tbl_mode=7 & tbl_regan=3; extw [ pcmode=1; ] { build extw; export *:1 extw; }
+tbl_eab: (d16)".w" is tbl_mode=7 & tbl_regan=0; d16 { export *:1 d16; }
+tbl_eab: (d32)".l" is tbl_mode=7 & tbl_regan=1; d32 { export *:1 d32; }
+tbl_eab: "#"^d8 is tbl_mode=7 & tbl_regan=4; d8 { export *[const]:1 d8; }
+
+tblsign: "u" is tbl_sign=0 { }
+tblsign: "s" is tbl_sign=1 { }
+
+tbldrsign: "u" is tbl_dr_sign=0 { }
+tbldrsign: "s" is tbl_dr_sign=1 { }
+
+define pcodeop tableLookup;
+
+# Rounded Table Lookup and Interpolate
+
+:tbl^tblsign^".b" tbl_eab,tbl_regxdn is (tbl_opbig=0xF8 & tbl_op67=0 & $(TBL_ADDR_MODES) & tbl_size=0 & tblsign & tbl_round=0 & tbl_regxdn) ... & tbl_eab
+ { tbl_regxdn = tableLookup(tbl_regxdn, tbl_eab); }
+
+:tbl^tblsign^".w" tbl_eaw,tbl_regxdn is (tbl_opbig=0xF8 & tbl_op67=0 & $(TBL_ADDR_MODES) & tbl_size=1 & tblsign & tbl_round=0 & tbl_regxdn) ... & tbl_eaw
+ { tbl_regxdn = tableLookup(tbl_regxdn, tbl_eaw); }
+
+:tbl^tblsign^".l" tbl_eal,tbl_regxdn is (tbl_opbig=0xF8 & tbl_op67=0 & $(TBL_ADDR_MODES) & tbl_size=2 & tblsign & tbl_round=0 & tbl_regxdn) ... & tbl_eal
+ { tbl_regxdn = tableLookup(tbl_regxdn, tbl_eal); }
+
+# Unrounded Table Lookup and Interpolate
+
+:tbl^tblsign^"n.b" tbl_eab,tbl_regxdn is (tbl_opbig=0xF8 & tbl_op67=0 & $(TBL_ADDR_MODES) & tbl_size=0 & tblsign & tbl_round=1 & tbl_regxdn) ... & tbl_eab
+ { tbl_regxdn = tableLookup(tbl_regxdn, tbl_eab); }
+
+:tbl^tblsign^"n.w" tbl_eaw,tbl_regxdn is (tbl_opbig=0xF8 & tbl_op67=0 & $(TBL_ADDR_MODES) & tbl_size=1 & tblsign & tbl_round=1 & tbl_regxdn) ... & tbl_eaw
+ { tbl_regxdn = tableLookup(tbl_regxdn, tbl_eaw); }
+
+:tbl^tblsign^"n.l" tbl_eal,tbl_regxdn is (tbl_opbig=0xF8 & tbl_op67=0 & $(TBL_ADDR_MODES) & tbl_size=2 & tblsign & tbl_round=1 & tbl_regxdn) ... & tbl_eal
+ { tbl_regxdn = tableLookup(tbl_regxdn, tbl_eal); }
+
+define pcodeop interpolate;
+
+# Rounded Data Register Interpolate
+
+:tbl^tbldrsign^".b" regdn:tbl_dr_reg,regxdn is opbig=0xF8 & op37=0 & mode=0 & regdn ; tbl_dr_size=0 & tbldrsign & tbl_dr_round=0 & tbl_dr_reg & regxdn
+ { regxdn = interpolate(regdn, tbl_dr_reg); }
+
+:tbl^tbldrsign^".w" regdn:tbl_dr_reg,regxdn is opbig=0xF8 & op37=0 & mode=0 & regdn ; tbl_dr_size=1 & tbldrsign & tbl_dr_round=0 & tbl_dr_reg & regxdn
+ { regxdn = interpolate(regdn, tbl_dr_reg); }
+
+:tbl^tbldrsign^".l" regdn:tbl_dr_reg,regxdn is opbig=0xF8 & op37=0 & mode=0 & regdn ; tbl_dr_size=2 & tbldrsign & tbl_dr_round=0 & tbl_dr_reg & regxdn
+ { regxdn = interpolate(regdn, tbl_dr_reg); }
+
+# Unrounded Data Register Interpolate
+
+:tbl^tbldrsign^"n.b" regdn:tbl_dr_reg,regxdn is opbig=0xF8 & op37=0 & mode=0 & regdn ; tbl_dr_size=0 & tbldrsign & tbl_dr_round=1 & tbl_dr_reg & regxdn
+ { regxdn = interpolate(regdn, tbl_dr_reg); }
+
+:tbl^tbldrsign^"n.w" regdn:tbl_dr_reg,regxdn is opbig=0xF8 & op37=0 & mode=0 & regdn ; tbl_dr_size=1 & tbldrsign & tbl_dr_round=1 & tbl_dr_reg & regxdn
+ { regxdn = interpolate(regdn, tbl_dr_reg); }
+
+:tbl^tbldrsign^"n.l" regdn:tbl_dr_reg,regxdn is opbig=0xF8 & op37=0 & mode=0 & regdn ; tbl_dr_size=2 & tbldrsign & tbl_dr_round=1 & tbl_dr_reg & regxdn
+ { regxdn = interpolate(regdn, tbl_dr_reg); }
+
+define pcodeop low_power_stop;
+:lpstop "#"^d16 is opbig=0xf8 & d8base=0x00; opbig=0x01 & d8base=0xC0; d16 { SR = d16; low_power_stop(); }
+
+define pcodeop background_mode;
+:bgnd is opbig=0x4A & d8base=0xFA { background_mode(); }
+
+@endif # CPU32
} # end with : extGUARD=1
diff --git a/pypcode/processors/68000/data/languages/CPU32.slaspec b/pypcode/processors/68000/data/languages/CPU32.slaspec
new file mode 100644
index 00000000..dc2c54ab
--- /dev/null
+++ b/pypcode/processors/68000/data/languages/CPU32.slaspec
@@ -0,0 +1,6 @@
+# Motorola's CPU32 processor
+
+@define CPU32 ""
+@define MC68332 ""
+
+@include "68000.sinc"
diff --git a/pypcode/processors/8051/data/languages/8051.ldefs b/pypcode/processors/8051/data/languages/8051.ldefs
index 7c2700ff..ef4f11cc 100644
--- a/pypcode/processors/8051/data/languages/8051.ldefs
+++ b/pypcode/processors/8051/data/languages/8051.ldefs
@@ -50,4 +50,16 @@
+
+ Silicon Labs CIP-51 Microcontroller Family
+
+
diff --git a/pypcode/processors/8051/data/languages/cip-51.pspec b/pypcode/processors/8051/data/languages/cip-51.pspec
new file mode 100644
index 00000000..d342b938
--- /dev/null
+++ b/pypcode/processors/8051/data/languages/cip-51.pspec
@@ -0,0 +1,389 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pypcode/processors/8051/data/languages/keil-cx51.cspec b/pypcode/processors/8051/data/languages/keil-cx51.cspec
index 14efe890..b74d9548 100644
--- a/pypcode/processors/8051/data/languages/keil-cx51.cspec
+++ b/pypcode/processors/8051/data/languages/keil-cx51.cspec
@@ -1,118 +1,77 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
diff --git a/pypcode/processors/AARCH64/data/languages/AARCH64base.sinc b/pypcode/processors/AARCH64/data/languages/AARCH64base.sinc
index 2811de5d..e7568c50 100644
--- a/pypcode/processors/AARCH64/data/languages/AARCH64base.sinc
+++ b/pypcode/processors/AARCH64/data/languages/AARCH64base.sinc
@@ -5659,7 +5659,7 @@ is size.ldstr=2 & b_2429=0x8 & b_23=1 & L=0 & b_21=0 & b_15=1 & addrReg & Rt_GPR
:stlrb Rt_GPR32, addrReg
is size.ldstr=0 & b_2429=0x8 & b_23=1 & L=0 & b_21=0 & b_15=1 & addrReg & Rt_GPR32
{
- *addrReg = Rt_GPR32;
+ *:1 addrReg = Rt_GPR32:1;
}
# C6.2.312 STLRH page C6-1849 line 108967 MATCH x48808000/mask=xffe08000
@@ -5670,7 +5670,7 @@ is size.ldstr=0 & b_2429=0x8 & b_23=1 & L=0 & b_21=0 & b_15=1 & addrReg & Rt_GPR
:stlrh Rt_GPR32, addrReg
is size.ldstr=1 & b_2429=0x8 & b_23=1 & L=0 & b_21=0 & b_15=1 & addrReg & Rt_GPR32
{
- *addrReg = Rt_GPR32;
+ *:2 addrReg = Rt_GPR32:2;
}
# C6.2.313 STLUR page C6-1850 line 109030 MATCH x99000000/mask=xbfe00c00
@@ -6355,7 +6355,7 @@ is sf=0 & op=1 & S=1 & b_2428=0xb & opt=0 & b_2121=1 & ExtendRegShift32 & Rn_GPR
# AUNIT --inst xeb000000/mask=xffc00000 --status pass --comment "flags"
:subs Rd_GPR64, Rn_GPR64xsp, ExtendRegShift64
-is sf=1 & op=1 & S=1 & b_2428=0xb & opt=0 & ExtendRegShift64 & Rn_GPR64xsp & Rd_GPR64
+is sf=1 & op=1 & S=1 & b_2428=0xb & opt=0 & b_2121=1 & ExtendRegShift64 & Rn_GPR64xsp & Rd_GPR64
{
tmp_2:8 = ExtendRegShift64;
subflags(Rn_GPR64xsp, tmp_2);
diff --git a/pypcode/processors/AARCH64/data/languages/AARCH64instructions.sinc b/pypcode/processors/AARCH64/data/languages/AARCH64instructions.sinc
index 03afdd10..ceeb9efa 100644
--- a/pypcode/processors/AARCH64/data/languages/AARCH64instructions.sinc
+++ b/pypcode/processors/AARCH64/data/languages/AARCH64instructions.sinc
@@ -2190,17 +2190,19 @@ RegShiftVal64: "" is aa_extreg_imm3=0 { export 0:8; }
LSL_Sp_Special64: Rm_GPR64, "LSL " is Rm_GPR64 & aa_extreg_imm3 { export Rm_GPR64; }
LSL_Sp_Special64: Rm_GPR64 is Rm_GPR64 & aa_extreg_imm3=0 { export Rm_GPR64; }
-ExtendReg64: Rm_GPR32, "UXTB " is Rm_GPR32 & b_2121=1 & aa_extreg_option=0 { tmp0:4 = Rm_GPR32; tmp:8 = zext(tmp0:1); export tmp; }
-ExtendReg64: Rm_GPR32, "UXTH " is Rm_GPR32 & b_2121=1 & aa_extreg_option=1 { tmp0:4 = Rm_GPR32; tmp:8 = zext(tmp0:2); export tmp; }
-ExtendReg64: Rm_GPR32, "UXTW " is Rm_GPR32 & b_2121=1 & aa_extreg_option=2 { tmp:8 = zext(Rm_GPR32); export tmp; }
-ExtendReg64: LSL_Sp_Special64 is Rm_GPR64 & b_2121=1 & aa_extreg_option=3 & b_29=1 & b_25=1 & (Rn=0x1f) & LSL_Sp_Special64 { tmp:8 = Rm_GPR64; export tmp; }
-ExtendReg64: LSL_Sp_Special64 is Rm_GPR64 & b_2121=1 & aa_extreg_option=3 & b_29=0 & b_25=1 & (Rd=0x1f | Rn=0x1f) & LSL_Sp_Special64 { tmp:8 = Rm_GPR64; export tmp; }
-ExtendReg64: Rm_GPR64, "LSL " is Rm_GPR64 & b_2121=1 & aa_extreg_option=3 & b_29 & b_25=0 { tmp:8 = Rm_GPR64; export tmp; }
-ExtendReg64: Rm_GPR64, "UXTX " is Rm_GPR64 & b_2121=1 & aa_extreg_option=3 { tmp:8 = Rm_GPR64; export tmp; }
-ExtendReg64: Rm_GPR32, "SXTB " is Rm_GPR32 & b_2121=1 & aa_extreg_option=4 { tmp0:4 = Rm_GPR32; tmp:8 = sext(tmp0:1); export tmp; }
-ExtendReg64: Rm_GPR32, "SXTH " is Rm_GPR32 & b_2121=1 & aa_extreg_option=5 { tmp0:4 = Rm_GPR32; tmp:8 = sext(tmp0:2); export tmp; }
-ExtendReg64: Rm_GPR32, "SXTW " is Rm_GPR32 & b_2121=1 & aa_extreg_option=6 { tmp:8 = sext(Rm_GPR32); export tmp; }
-ExtendReg64: Rm_GPR64, "SXTX " is Rm_GPR64 & b_2121=1 & aa_extreg_option=7 { tmp:8 = Rm_GPR64; export tmp; }
+ExtendReg64: Rm_GPR32, "UXTB " is Rm_GPR32 & aa_extreg_option=0 { tmp0:4 = Rm_GPR32; tmp:8 = zext(tmp0:1); export tmp; }
+ExtendReg64: Rm_GPR32, "UXTH " is Rm_GPR32 & aa_extreg_option=1 { tmp0:4 = Rm_GPR32; tmp:8 = zext(tmp0:2); export tmp; }
+ExtendReg64: Rm_GPR32, "UXTW " is Rm_GPR32 & aa_extreg_option=2 { tmp:8 = zext(Rm_GPR32); export tmp; }
+ExtendReg64: LSL_Sp_Special64 is Rm_GPR64 & aa_extreg_option=3 & b_29=1 & b_25=1 & (Rn=0x1f) & LSL_Sp_Special64 { tmp:8 = Rm_GPR64; export tmp; }
+ExtendReg64: LSL_Sp_Special64 is Rm_GPR64 & aa_extreg_option=3 & b_29=0 & b_25=1 & (Rd=0x1f | Rn=0x1f) & LSL_Sp_Special64 { tmp:8 = Rm_GPR64; export tmp; }
+# These two are only used by load/store (register) instructions
+ExtendReg64: Rm_GPR64, "LSL " is Rm_GPR64 & b_1212=1 & aa_extreg_option=3 & b_25=0 { tmp:8 = Rm_GPR64; export tmp; }
+ExtendReg64: Rm_GPR64 is Rm_GPR64 & b_1212=0 & aa_extreg_option=3 & b_25=0 { tmp:8 = Rm_GPR64; export tmp; }
+ExtendReg64: Rm_GPR64, "UXTX " is Rm_GPR64 & aa_extreg_option=3 { tmp:8 = Rm_GPR64; export tmp; }
+ExtendReg64: Rm_GPR32, "SXTB " is Rm_GPR32 & aa_extreg_option=4 { tmp0:4 = Rm_GPR32; tmp:8 = sext(tmp0:1); export tmp; }
+ExtendReg64: Rm_GPR32, "SXTH " is Rm_GPR32 & aa_extreg_option=5 { tmp0:4 = Rm_GPR32; tmp:8 = sext(tmp0:2); export tmp; }
+ExtendReg64: Rm_GPR32, "SXTW " is Rm_GPR32 & aa_extreg_option=6 { tmp:8 = sext(Rm_GPR32); export tmp; }
+ExtendReg64: Rm_GPR64, "SXTX " is Rm_GPR64 & aa_extreg_option=7 { tmp:8 = Rm_GPR64; export tmp; }
ExtendRegShift64: ExtendReg64^RegShiftVal64
is aa_extreg_shift = 0 & aa_extreg_option & aa_extreg_imm3 & ExtendReg64 & RegShiftVal64
diff --git a/pypcode/processors/AARCH64/data/languages/AARCH64neon.sinc b/pypcode/processors/AARCH64/data/languages/AARCH64neon.sinc
index 4ff3386c..9da59d17 100644
--- a/pypcode/processors/AARCH64/data/languages/AARCH64neon.sinc
+++ b/pypcode/processors/AARCH64/data/languages/AARCH64neon.sinc
@@ -734,7 +734,7 @@ is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x18 & b_1216=0x
Rd_FPR8 = Rd_FPR8 + Rn_VPR128.16B[104,8];
Rd_FPR8 = Rd_FPR8 + Rn_VPR128.16B[112,8];
Rd_FPR8 = Rd_FPR8 + Rn_VPR128.16B[120,8];
- zext_zq(Zd); # zero upper 31 bytes of Zd
+ zext_zb(Zd); # zero upper bytes of Zd
}
# C7.2.6 ADDV page C7-2027 line 118452 MATCH x0e31b800/mask=xbf3ffc00
@@ -753,7 +753,7 @@ is b_3131=0 & q=0 & u=0 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x18 & b_1216=0x
Rd_FPR8 = Rd_FPR8 + Rn_VPR64.8B[40,8];
Rd_FPR8 = Rd_FPR8 + Rn_VPR64.8B[48,8];
Rd_FPR8 = Rd_FPR8 + Rn_VPR64.8B[56,8];
- zext_zq(Zd); # zero upper 31 bytes of Zd
+ zext_zb(Zd); # zero upper bytes of Zd
}
# C7.2.6 ADDV page C7-2027 line 118452 MATCH x0e31b800/mask=xbf3ffc00
@@ -7275,6 +7275,7 @@ is b_1031=0b0001111001111110000000 & Rd_GPR32 & Rn_FPR64 & Rd_GPR64
is m=0 & b_3030=0 & s=0 & b_2428=0x1f & ftype=1 & b_21=0 & Rm_FPR64 & b_15=0 & Ra_FPR64 & Rn_FPR64 & Rd_FPR64 & Zd
{
Rd_FPR64 = Ra_FPR64 f+ (Rm_FPR64 f* Rn_FPR64); #NEON_fmadd(Rn_FPR64, Rm_FPR64, Ra_FPR64);
+ zext_zd(Zd); # zero upper bytes of Zd
}
# C7.2.100 FMADD page C7-2246 line 131323 MATCH x1f000000/mask=xff208000
@@ -7286,6 +7287,7 @@ is m=0 & b_3030=0 & s=0 & b_2428=0x1f & ftype=1 & b_21=0 & Rm_FPR64 & b_15=0 & R
is m=0 & b_3030=0 & s=0 & b_2428=0x1f & ftype=0 & b_21=0 & Rm_FPR32 & b_15=0 & Ra_FPR32 & Rn_FPR32 & Rd_FPR32 & Zd
{
Rd_FPR32 = Ra_FPR32 f+ (Rm_FPR32 f* Rn_FPR32); #NEON_fmadd(Rn_FPR32, Rm_FPR32, Ra_FPR32);
+ zext_zs(Zd); # zero upper bytes of Zd
}
# C7.2.100 FMADD page C7-2246 line 131323 MATCH x1f000000/mask=xff208000
@@ -7297,6 +7299,7 @@ is m=0 & b_3030=0 & s=0 & b_2428=0x1f & ftype=0 & b_21=0 & Rm_FPR32 & b_15=0 & R
is m=0 & b_3030=0 & s=0 & b_2428=0x1f & ftype=3 & b_21=0 & Rm_FPR16 & b_15=0 & Ra_FPR16 & Rn_FPR16 & Rd_FPR16 & Zd
{
Rd_FPR16 = Ra_FPR16 f+ (Rm_FPR16 f* Rn_FPR16); #NEON_fmadd(Rn_FPR16, Rm_FPR16, Ra_FPR16);
+ zext_zh(Zd); # zero upper bytes of Zd
}
# C7.2.101 FMAX (vector) page C7-2248 line 131451 MATCH x0e20f400/mask=xbfa0fc00
@@ -9562,6 +9565,7 @@ is m=0 & b_3030=0 & s=0 & b_2428=0x1e & ftype=3 & b_2121=1 & Imm8_fmov16_operand
is m=0 & b_3030=0 & s=0 & b_2428=0x1f & ftype=1 & b_21=0 & Rm_FPR64 & b_15=1 & Ra_FPR64 & Rn_FPR64 & Rd_FPR64 & Zd
{
Rd_FPR64 = Ra_FPR64 f- (Rm_FPR64 f* Rn_FPR64);
+ zext_zd(Zd); # zero upper bytes of Zd
}
@@ -9574,6 +9578,7 @@ is m=0 & b_3030=0 & s=0 & b_2428=0x1f & ftype=1 & b_21=0 & Rm_FPR64 & b_15=1 & R
is m=0 & b_3030=0 & s=0 & b_2428=0x1f & ftype=0 & b_21=0 & Rm_FPR32 & b_15=1 & Ra_FPR32 & Rn_FPR32 & Rd_FPR32 & Zd
{
Rd_FPR32 = Ra_FPR32 f- (Rm_FPR32 f* Rn_FPR32);
+ zext_zs(Zd); # zero upper bytes of Zd
}
# C7.2.133 FMSUB page C7-2318 line 135582 MATCH x1f008000/mask=xff208000
@@ -9585,6 +9590,7 @@ is m=0 & b_3030=0 & s=0 & b_2428=0x1f & ftype=0 & b_21=0 & Rm_FPR32 & b_15=1 & R
is m=0 & b_3030=0 & s=0 & b_2428=0x1f & ftype=3 & b_21=0 & Rm_FPR16 & b_15=1 & Ra_FPR16 & Rn_FPR16 & Rd_FPR16 & Zd
{
Rd_FPR16 = Ra_FPR16 f- (Rm_FPR16 f* Rn_FPR16);
+ zext_zh(Zd); # zero upper bytes of Zd
}
# C7.2.134 FMUL (by element) page C7-2320 line 135711 MATCH x5f009000/mask=xffc0f400
@@ -17093,6 +17099,7 @@ is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=1 & b_2121=1 & Rm_VPR128.8H
is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x18 & b_1216=0xa & b_1011=2 & Rn_VPR128.16B & Rd_FPR8 & Zd
{
Rd_FPR8 = NEON_smaxv(Rn_VPR128.16B, 1:1);
+ zext_zb(Zd); # zero upper bytes of Zd
}
# C7.2.270 SMAXV page C7-2616 line 152715 MATCH x0e30a800/mask=xbf3ffc00
@@ -17104,6 +17111,7 @@ is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x18 & b_1216=0x
is b_3131=0 & q=0 & u=0 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x18 & b_1216=0xa & b_1011=2 & Rn_VPR64.8B & Rd_FPR8 & Zd
{
Rd_FPR8 = NEON_smaxv(Rn_VPR64.8B, 1:1);
+ zext_zb(Zd); # zero upper bytes of Zd
}
# C7.2.270 SMAXV page C7-2616 line 152715 MATCH x0e30a800/mask=xbf3ffc00
@@ -17115,6 +17123,7 @@ is b_3131=0 & q=0 & u=0 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x18 & b_1216=0x
is b_3131=0 & q=0 & u=0 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x18 & b_1216=0xa & b_1011=2 & Rn_VPR64.4H & Rd_FPR16 & Zd
{
Rd_FPR16 = NEON_smaxv(Rn_VPR64.4H, 2:1);
+ zext_zh(Zd); # zero upper bytes of Zd
}
# C7.2.270 SMAXV page C7-2616 line 152715 MATCH x0e30a800/mask=xbf3ffc00
@@ -17126,6 +17135,7 @@ is b_3131=0 & q=0 & u=0 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x18 & b_1216=0x
is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x18 & b_1216=0xa & b_1011=2 & Rn_VPR128.8H & Rd_FPR16 & Zd
{
Rd_FPR16 = NEON_smaxv(Rn_VPR128.8H, 2:1);
+ zext_zh(Zd); # zero upper bytes of Zd
}
# C7.2.270 SMAXV page C7-2616 line 152715 MATCH x0e30a800/mask=xbf3ffc00
@@ -17137,6 +17147,7 @@ is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x18 & b_1216=0x
is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=2 & b_1721=0x18 & b_1216=0xa & b_1011=2 & Rn_VPR128.4S & Rd_FPR32 & Zd
{
Rd_FPR32 = NEON_smaxv(Rn_VPR128.4S, 4:1);
+ zext_zs(Zd); # zero upper bytes of Zd
}
# C7.2.271 SMIN page C7-2618 line 152818 MATCH x0e206c00/mask=xbf20fc00
@@ -17280,6 +17291,7 @@ is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=1 & b_2121=1 & Rm_VPR128.8H
is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x18 & b_1216=0x1a & b_1011=2 & Rn_VPR128.16B & Rd_FPR8 & Zd
{
Rd_FPR8 = NEON_sminv(Rn_VPR128.16B, 1:1);
+ zext_zb(Zd); # zero upper bytes of Zd
}
# C7.2.273 SMINV page C7-2622 line 153024 MATCH x0e31a800/mask=xbf3ffc00
@@ -17291,6 +17303,7 @@ is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x18 & b_1216=0x
is b_3131=0 & q=0 & u=0 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x18 & b_1216=0x1a & b_1011=2 & Rn_VPR64.8B & Rd_FPR8 & Zd
{
Rd_FPR8 = NEON_sminv(Rn_VPR64.8B, 1:1);
+ zext_zb(Zd); # zero upper bytes of Zd
}
# C7.2.273 SMINV page C7-2622 line 153024 MATCH x0e31a800/mask=xbf3ffc00
@@ -17302,6 +17315,7 @@ is b_3131=0 & q=0 & u=0 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x18 & b_1216=0x
is b_3131=0 & q=0 & u=0 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x18 & b_1216=0x1a & b_1011=2 & Rn_VPR64.4H & Rd_FPR16 & Zd
{
Rd_FPR16 = NEON_sminv(Rn_VPR64.4H, 2:1);
+ zext_zh(Zd); # zero upper bytes of Zd
}
# C7.2.273 SMINV page C7-2622 line 153024 MATCH x0e31a800/mask=xbf3ffc00
@@ -17313,6 +17327,7 @@ is b_3131=0 & q=0 & u=0 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x18 & b_1216=0x
is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x18 & b_1216=0x1a & b_1011=2 & Rn_VPR128.8H & Rd_FPR16 & Zd
{
Rd_FPR16 = NEON_sminv(Rn_VPR128.8H, 2:1);
+ zext_zh(Zd); # zero upper bytes of Zd
}
# C7.2.273 SMINV page C7-2622 line 153024 MATCH x0e31a800/mask=xbf3ffc00
@@ -17324,6 +17339,7 @@ is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x18 & b_1216=0x
is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=2 & b_1721=0x18 & b_1216=0x1a & b_1011=2 & Rn_VPR128.4S & Rd_FPR32 & Zd
{
Rd_FPR32 = NEON_sminv(Rn_VPR128.4S, 4:1);
+ zext_zs(Zd); # zero upper bytes of Zd
}
# C7.2.274 SMLAL, SMLAL2 (by element) page C7-2624 line 153127 MATCH x0f002000/mask=xbf00f400
@@ -26673,6 +26689,7 @@ is b_3131=0 & q=1 & u=1 & b_2428=0xe & advSIMD3.size=1 & b_2121=1 & Rm_VPR128.8H
is b_3131=0 & q=1 & u=1 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x18 & b_1216=0xa & b_1011=2 & Rn_VPR128.16B & Rd_FPR8 & Zd
{
Rd_FPR8 = NEON_umaxv(Rn_VPR128.16B, 1:1);
+ zext_zb(Zd); # zero upper bytes of Zd
}
# C7.2.362 UMAXV page C7-2849 line 166369 MATCH x2e30a800/mask=xbf3ffc00
@@ -26684,6 +26701,7 @@ is b_3131=0 & q=1 & u=1 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x18 & b_1216=0x
is b_3131=0 & q=0 & u=1 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x18 & b_1216=0xa & b_1011=2 & Rn_VPR64.8B & Rd_FPR8 & Zd
{
Rd_FPR8 = NEON_umaxv(Rn_VPR64.8B, 1:1);
+ zext_zb(Zd); # zero upper bytes of Zd
}
# C7.2.362 UMAXV page C7-2849 line 166369 MATCH x2e30a800/mask=xbf3ffc00
@@ -26695,6 +26713,7 @@ is b_3131=0 & q=0 & u=1 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x18 & b_1216=0x
is b_3131=0 & q=0 & u=1 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x18 & b_1216=0xa & b_1011=2 & Rn_VPR64.4H & Rd_FPR16 & Zd
{
Rd_FPR16 = NEON_umaxv(Rn_VPR64.4H, 2:1);
+ zext_zh(Zd); # zero upper bytes of Zd
}
# C7.2.362 UMAXV page C7-2849 line 166369 MATCH x2e30a800/mask=xbf3ffc00
@@ -26706,6 +26725,7 @@ is b_3131=0 & q=0 & u=1 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x18 & b_1216=0x
is b_3131=0 & q=1 & u=1 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x18 & b_1216=0xa & b_1011=2 & Rn_VPR128.8H & Rd_FPR16 & Zd
{
Rd_FPR16 = NEON_umaxv(Rn_VPR128.8H, 2:1);
+ zext_zh(Zd); # zero upper bytes of Zd
}
# C7.2.362 UMAXV page C7-2849 line 166369 MATCH x2e30a800/mask=xbf3ffc00
@@ -26717,6 +26737,7 @@ is b_3131=0 & q=1 & u=1 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x18 & b_1216=0x
is b_3131=0 & q=1 & u=1 & b_2428=0xe & advSIMD3.size=2 & b_1721=0x18 & b_1216=0xa & b_1011=2 & Rn_VPR128.4S & Rd_FPR32 & Zd
{
Rd_FPR32 = NEON_umaxv(Rn_VPR128.4S, 4:1);
+ zext_zs(Zd); # zero upper bytes of Zd
}
# C7.2.363 UMIN page C7-2851 line 166472 MATCH x2e206c00/mask=xbf20fc00
@@ -26860,6 +26881,7 @@ is b_3131=0 & q=1 & u=1 & b_2428=0xe & advSIMD3.size=1 & b_2121=1 & Rm_VPR128.8H
is b_3131=0 & q=1 & u=1 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x18 & b_1216=0x1a & b_1011=2 & Rn_VPR128.16B & Rd_FPR8 & Zd
{
Rd_FPR8 = NEON_uminv(Rn_VPR128.16B, 1:1);
+ zext_zb(Zd); # zero upper bytes of Zd
}
# C7.2.365 UMINV page C7-2855 line 166678 MATCH x2e31a800/mask=xbf3ffc00
@@ -26871,6 +26893,7 @@ is b_3131=0 & q=1 & u=1 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x18 & b_1216=0x
is b_3131=0 & q=0 & u=1 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x18 & b_1216=0x1a & b_1011=2 & Rn_VPR64.8B & Rd_FPR8 & Zd
{
Rd_FPR8 = NEON_uminv(Rn_VPR64.8B, 1:1);
+ zext_zb(Zd); # zero upper bytes of Zd
}
# C7.2.365 UMINV page C7-2855 line 166678 MATCH x2e31a800/mask=xbf3ffc00
@@ -26882,6 +26905,7 @@ is b_3131=0 & q=0 & u=1 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x18 & b_1216=0x
is b_3131=0 & q=0 & u=1 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x18 & b_1216=0x1a & b_1011=2 & Rn_VPR64.4H & Rd_FPR16 & Zd
{
Rd_FPR16 = NEON_uminv(Rn_VPR64.4H, 2:1);
+ zext_zh(Zd); # zero upper bytes of Zd
}
# C7.2.365 UMINV page C7-2855 line 166678 MATCH x2e31a800/mask=xbf3ffc00
@@ -26893,6 +26917,7 @@ is b_3131=0 & q=0 & u=1 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x18 & b_1216=0x
is b_3131=0 & q=1 & u=1 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x18 & b_1216=0x1a & b_1011=2 & Rn_VPR128.8H & Rd_FPR16 & Zd
{
Rd_FPR16 = NEON_uminv(Rn_VPR128.8H, 2:1);
+ zext_zh(Zd); # zero upper bytes of Zd
}
# C7.2.365 UMINV page C7-2855 line 166678 MATCH x2e31a800/mask=xbf3ffc00
@@ -26904,6 +26929,7 @@ is b_3131=0 & q=1 & u=1 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x18 & b_1216=0x
is b_3131=0 & q=1 & u=1 & b_2428=0xe & advSIMD3.size=2 & b_1721=0x18 & b_1216=0x1a & b_1011=2 & Rn_VPR128.4S & Rd_FPR32 & Zd
{
Rd_FPR32 = NEON_uminv(Rn_VPR128.4S, 4:1);
+ zext_zs(Zd); # zero upper bytes of Zd
}
# C7.2.366 UMLAL, UMLAL2 (by element) page C7-2857 line 166781 MATCH x2f002000/mask=xbf00f400
diff --git a/pypcode/processors/ARM/data/languages/ARMTHUMBinstructions.sinc b/pypcode/processors/ARM/data/languages/ARMTHUMBinstructions.sinc
index 1f6b9f8c..26a34b46 100644
--- a/pypcode/processors/ARM/data/languages/ARMTHUMBinstructions.sinc
+++ b/pypcode/processors/ARM/data/languages/ARMTHUMBinstructions.sinc
@@ -2775,7 +2775,7 @@ mrsipsr: "i" is thc0000=1 & Rd0811 {
b:1 = isCurrentModePrivileged();
if (!b) goto ;
ipsr:4 = getCurrentExceptionNumber();
- Rd0811 = Rd0811 | (ipsr & 0x1f);
+ Rd0811 = Rd0811 | (ipsr & 0x1ff);
}
mrsipsr: is thc0000=0 { }
@@ -2931,12 +2931,12 @@ define pcodeop getProcessStackPointerLimit;
@if defined(VERSION_7M)
-msripsr: "i" is thc0000=1 { }
-msripsr: is thc0000=0 { }
-msrepsr: "e" is thc0101=1 { }
-msrepsr: is thc0101=0 { }
-msrapsr: is thc0202=1 { }
-msrapsr: "a" is thc0202=0 & Rn0003 {
+msripsr: "i" is Rn0003; thc0000=1 { }
+msripsr: is Rn0003; thc0000=0 { }
+msrepsr: "e" is Rn0003; thc0101=1 { }
+msrepsr: is Rn0003; thc0101=0 { }
+msrapsr: is Rn0003; thc0202=1 { }
+msrapsr: "a" is Rn0003; thc0202=0 {
cpsr = cpsr | (Rn0003 & 0xf8000000);
writeAPSR_nzcvq(cpsr);
}
@@ -2944,11 +2944,11 @@ msrapsr: "a" is thc0202=0 & Rn0003 {
msrpsr: msripsr^msrepsr^msrapsr^"psr" is msripsr & msrepsr & msrapsr {
build msrapsr;
}
-msrpsr: "xpsr" is sysm02=3 & msrapsr {
+msrpsr: "xpsr" is (Rn0003 ; sysm02=3) & msrapsr {
build msrapsr;
}
-:msr^ItCond msrpsr,Rn0003 is TMode=1 & ItCond & op4=0xf38 & Rn0003; op12=0x8 & th_psrmask=8 & sysm37=0 & msrpsr
+:msr^ItCond msrpsr,Rn0003 is TMode=1 & ItCond & (op4=0xf38 & Rn0003; op12=0x8 & th_psrmask=8 & sysm37=0) & msrpsr
{
build ItCond;
build msrpsr;
@@ -4358,7 +4358,7 @@ thumbEndianNess: "BE" is op0=0xb658 { export 1:1; }
build ItCond;
}
-:sev^ItCond^".w" is TMode=1 & ItCond & op0=0xf3af; op0=8004
+:sev^ItCond^".w" is TMode=1 & ItCond & op0=0xf3af; op0=0x8004
{
build ItCond;
}
diff --git a/pypcode/processors/HCS12/data/languages/HCS_HC12.sinc b/pypcode/processors/HCS12/data/languages/HCS_HC12.sinc
index 26ff2c0e..646d9d4e 100644
--- a/pypcode/processors/HCS12/data/languages/HCS_HC12.sinc
+++ b/pypcode/processors/HCS12/data/languages/HCS_HC12.sinc
@@ -271,7 +271,7 @@ macro setHCSphysPage(addr) {
(zext(isPpage) * (0x400000 | ((zext(PPAGE) << 14 ) ^ 0x8000))) +
(zext(isPpage_FF) * (0x400000 | ((0x3FC000) ^ 0xC000))) ;
}
-@elif defined(HCS12) && SIZE=="3"
+@elif defined(HCS12) && SIZE=="3"
macro setHCSphysPage(addr) {
local a3:3 = zext(addr);
@@ -1961,11 +1961,9 @@ with : XGATE=0 {
}
# branch never is a two-byte nop
-SkipNextInstr: dest is epsilon [ dest = inst_next + 1; ] { export *[RAM]:1 dest; }
-:BRN SkipNextInstr is Prefix18=0 & op8=0x21 & SkipNextInstr
+:BRN rel8 is Prefix18=0 & op8=0x21; rel8
{
- goto SkipNextInstr;
}
:BRSET opr8a_8, msk8, rel8 is Prefix18=0 & op8=0x4E; opr8a_8; msk8; rel8
diff --git a/pypcode/processors/Hexagon/data/languages/hexagon.ldefs b/pypcode/processors/Hexagon/data/languages/hexagon.ldefs
index 0c21cea5..c6bcc4ff 100755
--- a/pypcode/processors/Hexagon/data/languages/hexagon.ldefs
+++ b/pypcode/processors/Hexagon/data/languages/hexagon.ldefs
@@ -5,7 +5,7 @@
endian="little"
size="32"
variant="default"
- version="2.4"
+ version="2.5"
slafile="hexagon.sla"
processorspec="hexagon.pspec"
id="Hexagon:LE:32:default">
diff --git a/pypcode/processors/Hexagon/data/languages/hexagon.sinc b/pypcode/processors/Hexagon/data/languages/hexagon.sinc
index de29be04..525f3245 100755
--- a/pypcode/processors/Hexagon/data/languages/hexagon.sinc
+++ b/pypcode/processors/Hexagon/data/languages/hexagon.sinc
@@ -1,4 +1,4 @@
-# Qualcomm Hexagon (V73) General Instruction Set
+# Qualcomm Hexagon (V60-V81) General Instruction Set
#
# Custom pcode-op
@@ -327,6 +327,7 @@ Uimm1_05: "#"^i5 is i5 { export *[const]:1 i5; }
Uimm8_0408_shift3: "#"^val is i0408 [ val = i0408 << 3; ] { export *[const]:1 val; }
Uimm8_0409_shift2: "#"^val is i0409 [ val = i0409 << 2; ] { export *[const]:1 val; }
Uimm16_0010_shift3: "#"^val is i0010 [ val = i0010 << 3; ] { export *[const]:2 val; }
+Uimm8_2024_shift3: "#"^val is i2024 [ val = i2024 << 3; ] { export *[const]:1 val; }
Uimm8_2025_shift2: "#"^val is i2025 [ val = i2025 << 2; ] { export *[const]:1 val; }
Uimm32_2122_13_0507_shift2: "#"^val is i2122 & i13 & i0507 [ val = ((i2122 << 4) | (i13 << 3) | i0507) << 2; ] { export *[const]:4 val; }
@@ -454,6 +455,14 @@ Taken12: ":nt" is op12=0 { }
NotTaken01: ":nt" is op1=1 { }
NotTaken01: is op1=0 { }
+# Non-temporal memory hint (decoration only).
+
+MemNt13: is op13=0 { }
+MemNt13: ":nt" is op13=1 { }
+
+StNt24: is op24=1 { }
+StNt24: ":nt" is op24=0 { }
+
# Predicate Register Condition for jump/call (least significant bit only)
FlowCondUU: ".if("pu0809name")" is op21=0 & pu0809name & pu0809 {
condition:1 = (pu0809 & 1);
@@ -469,57 +478,122 @@ FlowCondUU: ".if(!"pu0809name")" is op21=1 & pu0809name & pu0809 {
# .new Predicate Register Condition for jump/call (least significant bit only)
FlowCondNewUU: ".if("pu0809name".new)" is op21=0 & pu0809name & pu0809 {
<>
- ConditionReg = (pu0809 & 1); # predicate will already be comitted
+ ConditionReg = (pu0809 & 1); # predicate will already be committed
}
FlowCondNewUU: ".if(!"pu0809name".new)" is op21=1 & pu0809name & pu0809 {
<>
- ConditionReg = !(pu0809 & 1); # predicate will already be comitted
+ ConditionReg = !(pu0809 & 1); # predicate will already be committed
}
-# Predicate Register Condition for dealloc_return (least significant bit only)
+# Predicate Register Condition for deallocframe / dealloc_return (least significant bit only)
+# Expected to use DeallocFrameRddRsRawCond which has both <> and <>
FlowCond0809_N11_S13: ".if("pu0809name")" is op13=0 & op11=0 & pu0809 & pu0809name {
condition:1 = (pu0809 & 1);
+ <>
+ ConditionReg = condition;
<>
ConditionReg = condition;
}
FlowCond0809_N11_S13: ".if(!"pu0809name")" is op13=1 & op11=0 & pu0809 & pu0809name {
condition:1 = !(pu0809 & 1);
+ <>
+ ConditionReg = condition;
<>
ConditionReg = condition;
}
FlowCond0809_N11_S13: ".if("pu0809name".new)" is op13=0 & op11=1 & pu0809 & pu0809name {
+ condition:1 = 0;
+ <>
+ condition = (pu0809 & 1); # predicate will already be committed
+ ConditionReg = condition;
<>
- ConditionReg = (pu0809 & 1); # predicate will already be comitted
+ ConditionReg = condition;
}
FlowCond0809_N11_S13: ".if(!"pu0809name".new)" is op13=1 & op11=1 & pu0809 & pu0809name {
+ condition:1 = 0;
+ <>
+ condition = !(pu0809 & 1); # predicate will already be committed
+ ConditionReg = condition;
<>
- ConditionReg = !(pu0809 & 1); # predicate will already be comitted
+ ConditionReg = condition;
}
-# Predicate Register Condition for Right Packed EE jumpr (least significant bit only, includes .new handling)
+# Predicate Register Condition for Right Packed EE jumpr / dealloc_return (least significant bit
+# only, includes .new handling).
+# Expected to use DeallocFrameRawCond which has both <> and <>
FlowP0Cond_N01_S00: ".if(P0)" is op0=0 & op1=0 {
condition:1 = (P0 & 1);
+ <>
+ ConditionReg = condition;
<>
ConditionReg = condition;
}
FlowP0Cond_N01_S00: ".if(!P0)" is op0=1 & op1=0 {
condition:1 = !(P0 & 1);
+ <>
+ ConditionReg = condition;
<>
ConditionReg = condition;
}
FlowP0Cond_N01_S00: ".if(P0.new)" is op0=0 & op1=1 {
+ condition:1 = 0;
+ <>
+ condition = (P0 & 1); # P0 will already be committed
+ ConditionReg = condition;
<>
- ConditionReg = (P0 & 1); # P0 will already be comitted
+ ConditionReg = condition;
}
FlowP0Cond_N01_S00: ".if(!P0.new)" is op0=1 & op1=1 {
+ condition:1 = 0;
+ <>
+ condition = !(P0 & 1); # P0 will already be committed
+ ConditionReg = condition;
<>
- ConditionReg = !(P0 & 1); # P0 will already be comitted
+ ConditionReg = condition;
}
+
+# Predicate Register Condition for Left Packed EE dealloc_return (least significant bit only,
+# includes .new handling). Left-slot counterpart of FlowP0Cond_N01_S00: the sense and .new
+# selectors sit at bits 16 and 17, and op1617 encodes both, so a separate NotTaken subtable is
+# not needed -- the ":nt" suffix is folded into the display text of the .new alternatives.
+# Expected to use DeallocFrameRawCond which has both <> and <>
+
+FlowP0Cond_N17_S16: ".if(P0)" is op1617=0 {
+ condition:1 = (P0 & 1);
+ <>
+ ConditionReg = condition;
+ <>
+ ConditionReg = condition;
+}
+FlowP0Cond_N17_S16: ".if(!P0)" is op1617=1 {
+ condition:1 = !(P0 & 1);
+ <>
+ ConditionReg = condition;
+ <>
+ ConditionReg = condition;
+}
+FlowP0Cond_N17_S16: ".if(P0.new):nt" is op1617=2 {
+ condition:1 = 0;
+ <>
+ condition = (P0 & 1); # P0 will already be committed
+ ConditionReg = condition;
+ <>
+ ConditionReg = condition;
+}
+FlowP0Cond_N17_S16: ".if(!P0.new):nt" is op1617=3 {
+ condition:1 = 0;
+ <>
+ condition = !(P0 & 1); # P0 will already be committed
+ ConditionReg = condition;
+ <>
+ ConditionReg = condition;
+}
+
# Predicate Register Condition for Right Packed EE conditional ops (least significant bit only, includes .new handling)
P0Cond_N05_S04: ".if(P0)" is op4=0 & op5=1 {
@@ -977,8 +1051,6 @@ AddrRsRelShiftC3: "("^rs5^"+"^rt5^")" is rs5 & rt5 & op13=0 & op7=0 {
export tmp;
}
AddrRsRelShiftC3: "("^rs5^"+"^rt5^"<<"^Uimm2_13_07^")" is rs5 & rt5 & Uimm2_13_07 {
- # TODO: verify order of operation
- # TODO: Is there an alignment shift?
tmp:4 = rs5 + (rt5 << Uimm2_13_07);
export tmp;
}
@@ -1070,7 +1142,6 @@ LdMemRsRelC9w: LdAddrRsRelC9 is LdAddrRsRelC9 { export *[ram]:4 LdAddrRsRelC9; }
# Class-9 Load Memory: Rf=#U6x
LdAddrRsAssignxC9: "("^rf5^"="^Uimm32_0811_0506x^")" is rf5 & rf5_ & Uimm32_0811_0506x {
- # TODO: Need to verify behavior !!
rf5_ = Uimm32_0811_0506x;
export Uimm32_0811_0506x;
<>
@@ -1096,8 +1167,6 @@ LdAddrRsRelShiftxC9: "("^rs5^"+"^Uimm32_0811_0506x^")" is rs5 & op13=0 & op7=0 &
export tmp;
}
LdAddrRsRelShiftxC9: "("^rs5^"<<"^Uimm2_13_07^"+"^Uimm32_0811_0506x^")" is rs5 & Uimm2_13_07 & Uimm32_0811_0506x {
- # TODO: verify order of operation
- # TODO: Is there an alignment shift?
tmp:4 = (rs5 << Uimm2_13_07) + Uimm32_0811_0506x;
export tmp;
}
@@ -1176,14 +1245,14 @@ LdMemAIS4CircMuC9b2: LdAddrAIS4CircMuC9 is LdAddrAIS4CircMuC9 [ shift = 2; ] { e
# Class-9 Load Memory: Rx++I:circ(Mu) -- 'cond=1' context must be set by conditional instructions!
LdAddrAIICircMuC9: "("^rx5^"++I:circ("^mu^"))" is cond=0 & rx5 & rx5_ & mu {
- i = (mu[28,4] << 7) | mu[17,7]; # Isolate I value from specified M0/M1 reg
+ local i = (mu[28,4] << 7) | mu[17,7]; # Isolate I value from specified M0/M1 reg
tmp:4 = circularAdd(rx5, i, mu);
export rx5;
<>
rx5 = tmp;
}
LdAddrAIICircMuC9: "("^rx5^"++I:circ("^mu^"))" is cond=1 & rx5 & rx5_ & mu {
- i = (mu[28,4] << 7) | mu[17,7]; # Isolate I value from specified M0/M1 reg
+ local i = (mu[28,4] << 7) | mu[17,7]; # Isolate I value from specified M0/M1 reg
tmp:4 = circularAdd(rx5, i, mu);
export rx5;
<>
@@ -1261,16 +1330,14 @@ StMemRsRelPdC9d: StAddrRsRelPdC9 is StAddrRsRelPdC9 { export *[ram]:8 StAddrRsRe
# Class-10 Store Memory: Rf=#U6x -- 'cond=1' context must be set by conditional instructions!
StAddrRsAssignxC10: "("^rf5^"="^Uimm32_0005x^")" is cond=0 & rf5 & rf5_ & Uimm32_0005x {
- # TODO: Need to verify behavior !!
rf5_ = Uimm32_0005x;
- export rf5_;
+ export Uimm32_0005x;
<>
rf5 = rf5_;
}
StAddrRsAssignxC10: "("^rf5^"="^Uimm32_0005x^")" is cond=1 & rf5 & rf5_ & Uimm32_0005x {
- # TODO: Need to verify behavior !!
rf5_ = Uimm32_0005x;
- export rf5_;
+ export Uimm32_0005x;
<>
if (ConditionReg == 0) goto ;
rf5 = rf5_;
@@ -1295,8 +1362,6 @@ StAddrRsRelShiftxC10: "("^rs5^"+"^Uimm32_0005x^")" is rs5 & op13=0 & op6=0 & Uim
export tmp;
}
StAddrRsRelShiftxC10: "("^rs5^"<<"^Uimm2_13_06^"+"^Uimm32_0005x^")" is rs5 & Uimm2_13_06 & Uimm32_0005x {
- # TODO: verify order of operation
- # TODO: Is there an alignment shift?
tmp:4 = (rs5 << Uimm2_13_06) + Uimm32_0005x;
export tmp;
}
@@ -1374,7 +1439,7 @@ StMemAIS4CircMuC10b: StAddrAIS4CircMuC10 is StAddrAIS4CircMuC10 [ shift = 0; ] {
# Class-10 Store Memory: Rx++I:circ(Mu) -- 'cond=1' context must be set by conditional instructions!
StAddrAIICircMuC10: "("^rx5^"++I:circ("^mu^"))" is cond=0 & op2527=4 & rx5 & rx5_ & mu & i1=1 {
- i = (mu[28,4] << 7) | mu[17,7]; # Isolate I value from specified M0/M1 reg
+ local i = (mu[28,4] << 7) | mu[17,7]; # Isolate I value from specified M0/M1 reg
tmp:4 = circularAdd(rx5, i, mu);
ptr:4 = rx5;
export ptr;
@@ -1382,7 +1447,7 @@ StAddrAIICircMuC10: "("^rx5^"++I:circ("^mu^"))" is cond=0 & op2527=4 & rx5 & rx5
rx5 = tmp;
}
StAddrAIICircMuC10: "("^rx5^"++I:circ("^mu^"))" is cond=1 & op2527=4 & rx5 & rx5_ & mu & i1=1 {
- i = (mu[28,4] << 7) | mu[17,7]; # Isolate I value from specified M0/M1 reg
+ local i = (mu[28,4] << 7) | mu[17,7]; # Isolate I value from specified M0/M1 reg
tmp:4 = circularAdd(rx5, i, mu);
ptr:4 = rx5;
export ptr;
@@ -1724,8 +1789,8 @@ ResetPacketBits: is epsilon { }
#
# Sample:
#
-# :deallocframe EndPackedRight is op0612=0x7c & op2=0 & $(END_PACKED_RIGHT) {
-# deallocframe();
+# :deallocframe EndPackedRight is op0612=0x7c & op2=0 & DeallocFrameRddRsRaw & $(END_PACKED_RIGHT) {
+# build DeallocFrameRddRsRaw;
# build EndPackedRight;
# }
#
@@ -1873,41 +1938,140 @@ EndPackedRight: is EndPacket [ phase = 6; ] { build EndPacket; } # resume EndPa
# | | (initial SP)
#
-# NOTE: allocframe and dealloc_frame macro should be invoked from the
-# <>, <> or <> pcode section only
+# allocframe ( Rx32, #u11:3 )
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# - - - - - - - - - - - x x x x x - - - - - i i i i i i i i i i i
-macro deallocframe(reg) {
- ptr:4 = reg;
- FP = *[ram]:4 ptr;
- ptr = ptr + 4;
- LR = (*[ram]:4 ptr) ^ FRAMEKEY;
- SP = ptr + 4;
+AllocFrameRxU11x8: is rx5 & Uimm16_0010_shift3 {
+ local ptr:4 = rx5 - 4;
+ local tmpFP = FP;
+ local tmpLR = LR ^ FRAMEKEY;
+ <>
+ *[ram]:4 ptr = tmpLR;
+ ptr = ptr - 4;
+ *[ram]:4 ptr = tmpFP;
+ FP = ptr;
+ rx5 = ptr - zext(Uimm16_0010_shift3);
+}
+
+# allocframe ( SP, #u5:3 )
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# - - - - - - - i i i i i - - - - - - - - - - - - - - - - - - - -
+
+AllocFrameSPU5x8Left: is Uimm8_2024_shift3 {
+ local ptr:4 = SP - 4;
+ local tmpFP = FP;
+ local tmpLR = LR ^ FRAMEKEY;
+ <>
+ *[ram]:4 ptr = tmpLR;
+ ptr = ptr - 4;
+ *[ram]:4 ptr = tmpFP;
+ FP = ptr;
+ SP = ptr - zext(Uimm8_2024_shift3);
}
-macro allocframe(reg,sze) {
- ptr:4 = reg - 4;
- *[ram]:4 ptr = (LR ^ FRAMEKEY);
+# allocframe ( SP, #u5:3 )
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# - - - - - - - - - - - - - - - - - - - - - - - i i i i i - - - -
+
+AllocFrameSPU5x8Right: is Uimm8_0408_shift3 {
+ local ptr:4 = SP - 4;
+ local tmpFP = FP;
+ local tmpLR = LR ^ FRAMEKEY;
+ <>
+ *[ram]:4 ptr = tmpLR;
ptr = ptr - 4;
- *[ram]:4 ptr = FP;
+ *[ram]:4 ptr = tmpFP;
FP = ptr;
- reg = ptr - zext(sze);
+ SP = ptr - zext(Uimm8_0408_shift3);
+}
+
+# Rdd = deallocFrameRaw(Rs32)
+# NOTE: Provides delayed commit - favored over macro use
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# - - - - - - - - - - - s s s s s - - - - - - - - - - - d d d d d
+
+DeallocFrameRddRsRaw: is rs5 & rdd5h & rd5 {
+ local ptr:4 = rs5;
+ local FPnew = *[ram]:4 ptr;
+ ptr = ptr + 4;
+ local LRnew = (*[ram]:4 ptr) ^ FRAMEKEY;
+ <>
+ rd5 = FPnew;
+ rdd5h = LRnew;
+ SP = ptr + 4;
+}
+
+# Rdd = deallocFrameRaw(Rs32) - conditional execution based on FlowCond0809_N11_S13 use
+# NOTE: Provides delayed conditional commit - favored over macro use
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+#
+DeallocFrameRddRsRawCond: is rs5 & rdd5h & rd5 {
+ local ptr:4 = rs5;
+ local FPnew = *[ram]:4 ptr;
+ ptr = ptr + 4;
+ local LRnew = (*[ram]:4 ptr) ^ FRAMEKEY;
+ <>
+ if (ConditionReg == 0) goto ;
+ rd5 = FPnew;
+ rdd5h = LRnew;
+ SP = ptr + 4;
+
+}
+
+# LR:FP = deallocFrameRaw(FP)
+# NOTE: Provides delayed commit
+
+DeallocFrameRaw: is epsilon {
+ local ptr:4 = FP;
+ local FPnew = *[ram]:4 ptr;
+ ptr = ptr + 4;
+ local LRnew = (*[ram]:4 ptr) ^ FRAMEKEY;
+ <>
+ FP = FPnew;
+ LR = LRnew;
+ SP = ptr + 4;
+}
+
+# LR:FP = deallocFrameRaw(FP) - conditional execution based on FlowCond0809_N11_S13 use
+# NOTE: Provides delayed conditional commit
+
+DeallocFrameRawCond: is epsilon {
+ local ptr:4 = FP;
+ local FPnew = *[ram]:4 ptr;
+ ptr = ptr + 4;
+ local LRnew = (*[ram]:4 ptr) ^ FRAMEKEY;
+ <>
+ if (ConditionReg == 0) goto ;
+ FP = FPnew;
+ LR = LRnew;
+ SP = ptr + 4;
+
}
#
# INSTRUCTIONS
#
# Pattern convention:
-# '-' indicates don't-care bit (bit should not be constrained)
-# '+' indicates don't care bit (bit should be constrained as '0')
+# '-' indicates don't-care bit (bit is not constrained by the pattern)
+#
+# Don't-care bits are ignored by the hardware decoder and are not
+# constrained by the Sleigh patterns. Assemblers (binutils/LLVM) always
+# emit 0 in these bit positions, but any value must decode.
#
# (v2,8) abs -- "Rd32 = abs ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 0 0 1 0 0 s s s s s P P + + + + + + 1 0 0 d d d d d
+# 1 0 0 0 1 1 0 0 1 0 0 s s s s s P P - - - - - - 1 0 0 d d d d d
-:abs Rd5,rs5 EndPacket is iclass=8 & op2127=0x64 & op0513=0x04 & Rd5 & rs5 & $(END_PACKET) {
+:abs Rd5,rs5 EndPacket is iclass=8 & op2127=0x64 & op0507=0x4 & Rd5 & rs5 & $(END_PACKET) {
neg:1 = (rs5 s< 0);
Rd5 = (zext(neg) * -rs5) + (zext(!neg) * rs5);
build EndPacket;
@@ -1916,11 +2080,11 @@ macro allocframe(reg,sze) {
# (v2,8) abs -- "Rd32 = abs ( Rs32 ) :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 0 0 1 0 0 s s s s s P P + + + + + + 1 0 1 d d d d d
+# 1 0 0 0 1 1 0 0 1 0 0 s s s s s P P - - - - - - 1 0 1 d d d d d
define pcodeop absSat;
-:abs":sat" Rd5,rs5 EndPacket is iclass=8 & op2127=0x64 & op0513=0x05 & Rd5 & rs5 & $(END_PACKET) {
+:abs":sat" Rd5,rs5 EndPacket is iclass=8 & op2127=0x64 & op0507=0x5 & Rd5 & rs5 & $(END_PACKET) {
pos:1 = (rs5 s>= 0);
toobig:1 = (rs5 == 0x80000000); # Only one saturation case
@@ -1933,9 +2097,9 @@ define pcodeop absSat;
# (v2,8) abs -- "Rdd32 = abs ( Rss32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 0 0 1 0 + s s s s s P P + + + + + + 1 1 0 d d d d d
+# 1 0 0 0 0 0 0 0 1 0 0 s s s s s P P - - - - - - 1 1 0 d d d d d
-:abs Rdd5,rss5 EndPacket is iclass=0x8 & op2127=0x04 & op0513=0x06 & Rdd5 & rss5 & $(END_PACKET)
+:abs Rdd5,rss5 EndPacket is iclass=0x8 & op2227=0x2 & op21=0 & op0507=0x6 & Rdd5 & rss5 & $(END_PACKET)
{
neg:1 = (rss5 s< 0);
Rdd5 = (zext(neg) * -rss5) + (zext(!neg) * rss5);
@@ -1955,9 +2119,9 @@ define pcodeop absSat;
# (v2,15) add -- "Rd32 = add ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 1 0 0 1 1 0 0 0 s s s s s P P + t t t t t + + + d d d d d
+# 1 1 1 1 0 0 1 1 0 0 0 s s s s s P P - t t t t t - - - d d d d d
-:add Rd5,rs5,rt5 EndPacket is iclass=0xf & op2127=0x18 & op13=0 & op0507=0 & Rd5 & rs5 & rt5 & $(END_PACKET) {
+:add Rd5,rs5,rt5 EndPacket is iclass=0xf & op2127=0x18 & Rd5 & rs5 & rt5 & $(END_PACKET) {
Rd5 = rs5 + rt5;
build EndPacket;
}
@@ -1965,9 +2129,9 @@ define pcodeop absSat;
# (v4,15) add -- "Rd32 = add ( Rs32 , Rt32 ) :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 1 0 1 1 0 0 1 0 s s s s s P P + t t t t t + + + d d d d d
+# 1 1 1 1 0 1 1 0 0 1 0 s s s s s P P - t t t t t - - - d d d d d
-:add^":sat" Rd5,rs5,rt5 EndPacket is iclass=0xf & op2127=0x32 & rs5 & op13=0 & rt5 & op0507=0x0 & Rd5 & $(END_PACKET)
+:add^":sat" Rd5,rs5,rt5 EndPacket is iclass=0xf & op2127=0x32 & rs5 & rt5 & Rd5 & $(END_PACKET)
{
sat:1 = scarry(rs5, rt5);
addSat32(Rd5, rs5, rt5);
@@ -1979,9 +2143,9 @@ define pcodeop absSat;
# (v2,13) add -- "Rd32 = add ( Rs32 , Rt32 ) :sat :deprecated"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 1 0 1 1 0 0 s s s s s P P + t t t t t 0 + + d d d d d
+# 1 1 0 1 0 1 0 1 1 0 0 s s s s s P P - t t t t t 0 - - d d d d d
-:add^":sat:deprecated" Rd5,rs5,rt5 EndPacket is iclass=0xd & op2127=0x2c & rs5 & op13=0 & rt5 & op0507=0x0 & Rd5 & $(END_PACKET)
+:add^":sat:deprecated" Rd5,rs5,rt5 EndPacket is iclass=0xd & op2127=0x2c & op7=0x0 & rs5 & rt5 & Rd5 & $(END_PACKET)
{
sat:1 = scarry(rs5, rt5);
addSat32(Rd5, rs5, rt5);
@@ -2071,14 +2235,14 @@ MpyiRs32Rt32: "mpyi("rs5,rt5")" is rs5 & rt5 {
# (v2,13) add -- "Rd32 = add ( Rt32.l , Rs32.h )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 1 0 1 0 0 0 s s s s s P P + t t t t t 0 1 + d d d d d
+# 1 1 0 1 0 1 0 1 0 0 0 s s s s s P P - t t t t t 0 1 - d d d d d
#
# (v2,13) add -- "Rd32 = add ( Rt32.l , Rs32.l )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 1 0 1 0 0 0 s s s s s P P + t t t t t 0 0 + d d d d d
+# 1 1 0 1 0 1 0 1 0 0 0 s s s s s P P - t t t t t 0 0 - d d d d d
-:add Rd5,rt5L,Rs5HL06 EndPacket is iclass=0xd & op2127=0x28 & op13=0 & op7=0 & op5=0 & rt5L & Rs5HL06 & Rd5 & $(END_PACKET)
+:add Rd5,rt5L,Rs5HL06 EndPacket is iclass=0xd & op2127=0x28 & op7=0 & rt5L & Rs5HL06 & Rd5 & $(END_PACKET)
{
Rd5 = sext(rt5L + Rs5HL06);
build EndPacket;
@@ -2087,24 +2251,24 @@ MpyiRs32Rt32: "mpyi("rs5,rt5")" is rs5 & rt5 {
# (v2,13) add -- "Rd32 = add ( Rt32.h , Rs32.h ) :<<16"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 1 0 1 0 1 0 s s s s s P P + t t t t t 0 1 1 d d d d d
+# 1 1 0 1 0 1 0 1 0 1 0 s s s s s P P - t t t t t 0 1 1 d d d d d
#
# (v2,13) add -- "Rd32 = add ( Rt32.h , Rs32.l ) :<<16"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 1 0 1 0 1 0 s s s s s P P + t t t t t 0 1 0 d d d d d
+# 1 1 0 1 0 1 0 1 0 1 0 s s s s s P P - t t t t t 0 1 0 d d d d d
#
# (v2,13) add -- "Rd32 = add ( Rt32.l , Rs32.h ) :<<16"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 1 0 1 0 1 0 s s s s s P P + t t t t t 0 0 1 d d d d d
+# 1 1 0 1 0 1 0 1 0 1 0 s s s s s P P - t t t t t 0 0 1 d d d d d
#
# (v2,13) add -- "Rd32 = add ( Rt32.l , Rs32.l ) :<<16"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 1 0 1 0 1 0 s s s s s P P + t t t t t 0 0 0 d d d d d
+# 1 1 0 1 0 1 0 1 0 1 0 s s s s s P P - t t t t t 0 0 0 d d d d d
-:add^":<<16" Rd5,Rt5HL06,Rs5HL05 EndPacket is iclass=0xd & op2127=0x2a & op13=0 & op7=0 & Rs5HL05 & Rt5HL06 & Rd5 & $(END_PACKET)
+:add^":<<16" Rd5,Rt5HL06,Rs5HL05 EndPacket is iclass=0xd & op2127=0x2a & op7=0 & Rs5HL05 & Rt5HL06 & Rd5 & $(END_PACKET)
{
Rd5 = zext(Rs5HL05 + Rt5HL06) << 16;
build EndPacket;
@@ -2113,24 +2277,24 @@ MpyiRs32Rt32: "mpyi("rs5,rt5")" is rs5 & rt5 {
# (v2,13) add -- "Rd32 = add ( Rt32.h , Rs32.h ) :sat :<<16"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 1 0 1 0 1 0 s s s s s P P + t t t t t 1 1 1 d d d d d
+# 1 1 0 1 0 1 0 1 0 1 0 s s s s s P P - t t t t t 1 1 1 d d d d d
#
# (v2,13) add -- "Rd32 = add ( Rt32.h , Rs32.l ) :sat :<<16"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 1 0 1 0 1 0 s s s s s P P + t t t t t 1 1 0 d d d d d
+# 1 1 0 1 0 1 0 1 0 1 0 s s s s s P P - t t t t t 1 1 0 d d d d d
#
# (v2,13) add -- "Rd32 = add ( Rt32.l , Rs32.h ) :sat :<<16"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 1 0 1 0 1 0 s s s s s P P + t t t t t 1 0 1 d d d d d
+# 1 1 0 1 0 1 0 1 0 1 0 s s s s s P P - t t t t t 1 0 1 d d d d d
#
# (v2,13) add -- "Rd32 = add ( Rt32.l , Rs32.l ) :sat :<<16"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 1 0 1 0 1 0 s s s s s P P + t t t t t 1 0 0 d d d d d
+# 1 1 0 1 0 1 0 1 0 1 0 s s s s s P P - t t t t t 1 0 0 d d d d d
-:add^":sat:<<16" Rd5,Rt5HL06,Rs5HL05 EndPacket is iclass=0xd & op2127=0x2a & op13=0 & op7=1 & Rs5HL05 & Rt5HL06 & Rd5 & $(END_PACKET)
+:add^":sat:<<16" Rd5,Rt5HL06,Rs5HL05 EndPacket is iclass=0xd & op2127=0x2a & op7=1 & Rs5HL05 & Rt5HL06 & Rd5 & $(END_PACKET)
{
temp:2 = 0;
addSat16(temp, Rs5HL05, Rt5HL06);
@@ -2144,14 +2308,14 @@ MpyiRs32Rt32: "mpyi("rs5,rt5")" is rs5 & rt5 {
# (v2,13) add -- "Rd32 = add ( Rt32.l , Rs32.h ) :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 1 0 1 0 0 0 s s s s s P P + t t t t t 1 1 + d d d d d
+# 1 1 0 1 0 1 0 1 0 0 0 s s s s s P P - t t t t t 1 1 - d d d d d
#
# (v2,13) add -- "Rd32 = add ( Rt32.l , Rs32.l ) :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 1 0 1 0 0 0 s s s s s P P + t t t t t 1 0 + d d d d d
+# 1 1 0 1 0 1 0 1 0 0 0 s s s s s P P - t t t t t 1 0 - d d d d d
-:add^":sat" Rd5,rt5L,Rs5HL06 EndPacket is iclass=0xd & op2127=0x28 & op13=0 & op7=1 & op5=0 & Rs5HL06 & rt5L & Rd5 & $(END_PACKET)
+:add^":sat" Rd5,rt5L,Rs5HL06 EndPacket is iclass=0xd & op2127=0x28 & op7=1 & Rs5HL06 & rt5L & Rd5 & $(END_PACKET)
{
temp:2 = 0;
addSat16(temp, Rs5HL06, rt5L);
@@ -2178,11 +2342,11 @@ ClbRs: "clb("^rs5")" is rs5 { cnt:4 = countLeadingBits(rs5); export cnt; }
# (v4,8) add -- "Rd32 = add ( clb ( Rss32 ) , #s6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 0 0 0 0 1 1 s s s s s P P i i i i i i 0 1 + d d d d d
+# 1 0 0 0 1 0 0 0 0 1 1 s s s s s P P i i i i i i 0 1 0 d d d d d
ClbRss: "clb("^rss5")" is rss5 { cnt:4 = countLeadingBits(rss5); export cnt; }
-:add Rd5,ClbRss,Simm8_0813 EndPacket is iclass=8 & op2127=0x43 & op0507=2 & Rd5 & ClbRss & Simm8_0813 & $(END_PACKET)
+:add Rd5,ClbRss,Simm8_0813 EndPacket is iclass=8 & op2127=0x43 & op0607=1 & op5=0 & Rd5 & ClbRss & Simm8_0813 & $(END_PACKET)
{
Rd5 = ClbRss + sext(Simm8_0813);
build EndPacket;
@@ -2191,26 +2355,27 @@ ClbRss: "clb("^rss5")" is rss5 { cnt:4 = countLeadingBits(rss5); export cnt; }
# (v4,6) add -- "Rd32 = add ( pc , #u6x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 1 0 1 0 0 1 0 0 1 0 0 1 P P + i i i i i i + + d d d d d
+# 0 1 1 0 1 0 1 0 0 1 0 0 1 0 0 1 P P - i i i i i i - - d d d d d
-:assign Rd5,PacketPC EndPacket is iclass=6 & op2127=0x52 & op1620=0x9 & op13=0 & op0506=0 & i0712=0 & immext=0 & Rd5 & PacketPC & $(END_PACKET)
+:add Rd5,PacketPC,Uimm32_0712x EndPacket is iclass=6 & op2127=0x52 & op1620=0x9 & Rd5 & PacketPC & Uimm32_0712x & $(END_PACKET)
{
- Rd5 = PacketPC;
+ Rd5 = PacketPC + Uimm32_0712x;
build EndPacket;
}
-:add Rd5,PacketPC,Uimm32_0712x EndPacket is iclass=6 & op2127=0x52 & op1620=0x9 & op13=0 & op0506=0 & Rd5 & PacketPC & Uimm32_0712x & $(END_PACKET)
+# Simplification when adding zero constant to packet PC
+:assign Rd5,PacketPC EndPacket is iclass=6 & op2127=0x52 & op1620=0x9 & i0712=0 & immext=0 & Rd5 & PacketPC & $(END_PACKET)
{
- Rd5 = PacketPC + Uimm32_0712x;
+ Rd5 = PacketPC;
build EndPacket;
}
# (v2,13) add -- "Rdd32 = add ( Rss32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 0 1 1 0 0 0 s s s s s P P + t t t t t 1 1 1 d d d d d
+# 1 1 0 1 0 0 1 1 0 0 0 s s s s s P P - t t t t t 1 1 1 d d d d d
-:add Rdd5,rss5,rtt5 EndPacket is iclass=0xd & op2127=0x18 & rss5 & op13=0 & rtt5 & op0507=0x7 & Rdd5 & $(END_PACKET)
+:add Rdd5,rss5,rtt5 EndPacket is iclass=0xd & op2127=0x18 & op0507=0x7 & rss5 & rtt5 & Rdd5 & $(END_PACKET)
{
Rdd5 = rss5 + rtt5;
build EndPacket;
@@ -2219,11 +2384,11 @@ ClbRss: "clb("^rss5")" is rss5 { cnt:4 = countLeadingBits(rss5); export cnt; }
# (v4,13) add -- "Rdd32 = add ( Rss32 , Rtt32 ) :raw :hi"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 0 1 1 0 1 1 s s s s s P P + t t t t t 1 1 1 d d d d d
+# 1 1 0 1 0 0 1 1 0 1 1 s s s s s P P - t t t t t 1 1 1 d d d d d
define pcodeop addRawHi;
-:add":raw:hi" Rdd5,rss5,rtt5 EndPacket is iclass=0xd & op2127=0x1b & rss5 & op13=0 & rtt5 & op0507=0x7 & Rdd5 & $(END_PACKET)
+:add":raw:hi" Rdd5,rss5,rtt5 EndPacket is iclass=0xd & op2127=0x1b & op0507=0x7 & rss5 & rtt5 & Rdd5 & $(END_PACKET)
{
Rdd5 = rtt5 + sext(rss5[32,32]);
build EndPacket;
@@ -2232,11 +2397,11 @@ define pcodeop addRawHi;
# (v4,13) add -- "Rdd32 = add ( Rss32 , Rtt32 ) :raw :lo"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 0 1 1 0 1 1 s s s s s P P + t t t t t 1 1 0 d d d d d
+# 1 1 0 1 0 0 1 1 0 1 1 s s s s s P P - t t t t t 1 1 0 d d d d d
define pcodeop addRawLo;
-:add":raw:lo" Rdd5,rss5,rtt5 EndPacket is iclass=0xd & op2127=0x1b & rss5 & op13=0 & rtt5 & op0507=0x6 & Rdd5 & $(END_PACKET)
+:add":raw:lo" Rdd5,rss5,rtt5 EndPacket is iclass=0xd & op2127=0x1b & op0507=0x6 & rss5 & rtt5 & Rdd5 & $(END_PACKET)
{
Rdd5 = rtt5 + sext(rss5[0,32]);
build EndPacket;
@@ -2245,11 +2410,11 @@ define pcodeop addRawLo;
# (v4,13) add -- "Rdd32 = add ( Rss32 , Rtt32 ) :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 0 1 1 0 1 1 s s s s s P P + t t t t t 1 0 1 d d d d d
+# 1 1 0 1 0 0 1 1 0 1 1 s s s s s P P - t t t t t 1 0 1 d d d d d
define pcodeop addSat;
-:add":sat" Rdd5,rss5,rtt5 EndPacket is iclass=0xd & op2127=0x1b & rss5 & op13=0 & rtt5 & op0507=0x5 & Rdd5 & $(END_PACKET)
+:add":sat" Rdd5,rss5,rtt5 EndPacket is iclass=0xd & op2127=0x1b & op0507=0x5 & rss5 & rtt5 & Rdd5 & $(END_PACKET)
{
Rdd5 = addSat(rss5, rtt5);
build EndPacket;
@@ -2258,17 +2423,26 @@ define pcodeop addSat;
# (v4,12) add -- "Rdd32 = add ( Rss32 , Rtt32 , Px4 ) :carry"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 0 1 0 1 1 0 s s s s s P P + t t t t t + x x d d d d d
+# 1 1 0 0 0 0 1 0 1 1 0 s s s s s P P - t t t t t - x x d d d d d
-:add":carry" Rdd5,rss5,rtt5,pu0506 EndPacket is iclass=0xc & op2127=0x16 & rss5 & op13=0 & rtt5 & op7=0 & Rdd5 & pu0506 & pu0506_ & $(END_PACKET)
-unimpl
+:add":carry" Rdd5,rss5,rtt5,pu0506 EndPacket is iclass=0xc & op2127=0x16 & rss5 & rtt5 & Rdd5 & pu0506 & pu0506_ & $(END_PACKET) {
+ cin:8 = zext(pu0506 & 1); # carry-in: bit 0 of predicate
+ partial:8 = rss5 + rtt5;
+ c1:1 = carry(rss5, rtt5); # carry from Rss + Rtt
+ c2:1 = carry(partial, cin); # carry from adding carry-in
+ Rdd5 = partial + cin;
+ pu0506_ = (c1 | c2) * 0xff; # carry-out: 0xff if carry, 0x00 otherwise
+ build EndPacket;
+ <>
+ pu0506 = pu0506_;
+}
# (v2,14) add -- "Rx32 += add ( Rs32 , #s8x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 0 1 0 0 + + s s s s s P P + i i i i i i i i x x x x x
+# 1 1 1 0 0 0 1 0 0 - - s s s s s P P 0 i i i i i i i i x x x x x
-:add+= Rd5,rs5,Simm32_0512x EndPacket is iclass=0xe & op2127=0x10 & rs5 & op13=0 & Simm32_0512x & rd5 & Rd5 & $(END_PACKET)
+:add+= Rd5,rs5,Simm32_0512x EndPacket is iclass=0xe & op2327=0x4 & op13=0 & rs5 & Simm32_0512x & rd5 & Rd5 & $(END_PACKET)
{
Rd5 = rd5 + rs5 + Simm32_0512x;
build EndPacket;
@@ -2277,9 +2451,9 @@ unimpl
# (v2,14) add -- "Rx32 += add ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 1 1 1 1 0 0 0 s s s s s P P + t t t t t + 0 1 x x x x x
+# 1 1 1 0 1 1 1 1 0 0 0 s s s s s P P - t t t t t - 0 1 x x x x x
-:add+= Rd5,rs5,rt5 EndPacket is iclass=0xe & op2127=0x78 & rs5 & op13=0 & op0507=0x1 & rt5 & rd5 & Rd5 & $(END_PACKET)
+:add+= Rd5,rs5,rt5 EndPacket is iclass=0xe & op2127=0x78 & op0506=0x1 & rs5 & rt5 & rd5 & Rd5 & $(END_PACKET)
{
Rd5 = rd5 + rs5 + rt5;
build EndPacket;
@@ -2288,9 +2462,9 @@ unimpl
# (v2,14) add -- "Rx32 -= add ( Rs32 , #s8x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 0 1 0 1 + + s s s s s P P + i i i i i i i i x x x x x
+# 1 1 1 0 0 0 1 0 1 - - s s s s s P P 0 i i i i i i i i x x x x x
-:add-= Rd5,rs5,Simm32_0512x EndPacket is iclass=0xe & op2127=0x14 & op13=0 & rs5 & Simm32_0512x & rd5 & Rd5 & $(END_PACKET)
+:add-= Rd5,rs5,Simm32_0512x EndPacket is iclass=0xe & op2327=0x5 & op13=0 & rs5 & Simm32_0512x & rd5 & Rd5 & $(END_PACKET)
{
Rd5 = rd5 - rs5 + Simm32_0512x;
build EndPacket;
@@ -2299,9 +2473,9 @@ unimpl
# (v2,14) add -- "Rx32 -= add ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 1 1 1 1 1 0 0 s s s s s P P + t t t t t + 0 1 x x x x x
+# 1 1 1 0 1 1 1 1 1 0 0 s s s s s P P 0 t t t t t 0 0 1 x x x x x
-:add-= Rd5,rs5,rt5 EndPacket is iclass=0xe & op2127=0x7c & rs5 & op13=0 & rt5 & op0507=0x1 & rd5 & Rd5 & $(END_PACKET)
+:add-= Rd5,rs5,rt5 EndPacket is iclass=0xe & op2127=0x7c & op13=0 & op7=0 & op0506=0x1 & rs5 & rt5 & rd5 & Rd5 & $(END_PACKET)
{
Rd5 = rd5 - ( rs5 + rt5 );
build EndPacket;
@@ -2310,14 +2484,14 @@ unimpl
# (v4,13) add -- "Rx32 = add ( #u8x , asl ( Rx32 , #U5 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 1 1 1 0 i i i x x x x x P P i I I I I I i i i 0 i 1 0 +
+# 1 1 0 1 1 1 1 0 i i i x x x x x P P i I I I I I i i i 0 i 1 0 -
#
# (v4,13) add -- "Rx32 = add ( #u8x , lsr ( Rx32 , #U5 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 1 1 1 0 i i i x x x x x P P i I I I I I i i i 1 i 1 0 +
+# 1 1 0 1 1 1 1 0 i i i x x x x x P P i I I I I I i i i 1 i 1 0 -
-:add Rx5,Uimm32_2123_13_0507_03x,ShiftRx_D04_I0812 EndPacket is iclass=13 & op2427=14 & op0002=4 & Uimm32_2123_13_0507_03x & ShiftRx_D04_I0812 & Rx5 & $(END_PACKET)
+:add Rx5,Uimm32_2123_13_0507_03x,ShiftRx_D04_I0812 EndPacket is iclass=13 & op2427=14 & op0102=2 & Uimm32_2123_13_0507_03x & ShiftRx_D04_I0812 & Rx5 & $(END_PACKET)
{
Rx5 = Uimm32_2123_13_0507_03x + ShiftRx_D04_I0812;
build EndPacket;
@@ -2326,14 +2500,14 @@ unimpl
# (v4,14) add -- "Rx32 = add ( Ru32 , mpyi ( Rx32 , Rs32 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 0 1 1 0 0 0 s s s s s P P + x x x x x + + + u u u u u
+# 1 1 1 0 0 0 1 1 0 0 0 s s s s s P P - x x x x x - - - u u u u u
MpyiRx32Rs32: "mpyi("rt5,rs5")" is rs5 & rt5 {
tmp:4 = rs5 * rt5;
export tmp;
}
-:add Rd0812,ru5,MpyiRx32Rs32 EndPacket is iclass=14 & op2127=0x18 & op13=0 & op0507=0 & Rd0812 & MpyiRx32Rs32 & ru5 & $(END_PACKET)
+:add Rd0812,ru5,MpyiRx32Rs32 EndPacket is iclass=14 & op2127=0x18 & Rd0812 & MpyiRx32Rs32 & ru5 & $(END_PACKET)
{
Rd0812 = ru5 + MpyiRx32Rs32;
build EndPacket;
@@ -2363,24 +2537,33 @@ MpyiRx32Rs32: "mpyi("rt5,rs5")" is rs5 & rt5 {
build PuCond2122_N13_S23;
build EndPacket;
<>
+ build PuCond2122_N13_S23;
if (ConditionReg == 0) goto ;
rd5_ = rs5 + Simm32_0512x;
<>
+ build PuCond2122_N13_S23;
if (ConditionReg == 0) goto ;
rd5 = rd5_;
}
# if ([!]Pu4[.new]) Rd32 = Rs32 ( simplification of if ([!]Pu4[.new]) Rd32 = add(Rs32,#0)
-:assign^PuCond2122_N13_S23 rd5,rs5 EndPacket is iclass=7 & op2427=4 & PuCond2122_N13_S23 & rs5 & op0512=0 & immexted=0 & rd5 & rd5_ & SetNRegRd5 & $(END_PACKET) {
+# (v2,7) assign -- "if ([!]Pu4[.new]) Rd32 = Rs32"
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# 0 1 1 1 0 1 0 0 N n s s s s s s P P N 0 0 0 0 0 0 0 0 d d d d d
+
+:assign^PuCond2122_N13_S23 rd5,rs5 EndPacket is iclass=7 & op2427=4 & op0512=0 & PuCond2122_N13_S23 & rs5 & immexted=0 & rd5 & rd5_ & SetNRegRd5 & $(END_PACKET) {
build PuCond2122_N13_S23;
build EndPacket;
<>
+ build PuCond2122_N13_S23;
if (ConditionReg == 0) goto ;
rd5_ = rs5;
<>
+ build PuCond2122_N13_S23;
if (ConditionReg == 0) goto ;
rd5 = rd5_;
@@ -2406,14 +2589,16 @@ MpyiRx32Rs32: "mpyi("rt5,rs5")" is rs5 & rt5 {
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 1 1 1 1 0 1 1 0 - 0 s s s s s P P 1 t t t t t 1 u u d d d d d
-:add^PuCond0506_N13_S07 rd5,rs5,rt5 EndPacket is iclass=15 & op2327=0x16 & op22=0 & op21=0 & PuCond0506_N13_S07 & rs5 & rt5 & rd5 & rd5_ & SetNRegRd5 & $(END_PACKET) {
+:add^PuCond0506_N13_S07 rd5,rs5,rt5 EndPacket is iclass=15 & op2327=0x16 & op21=0 & PuCond0506_N13_S07 & rs5 & rt5 & rd5 & rd5_ & SetNRegRd5 & $(END_PACKET) {
build PuCond0506_N13_S07;
build EndPacket;
<>
+ build PuCond0506_N13_S07;
if (ConditionReg == 0) goto ;
rd5_ = rs5 + rt5;
<>
+ build PuCond0506_N13_S07;
if (ConditionReg == 0) goto ;
rd5 = rd5_;
@@ -2435,7 +2620,7 @@ MpyiRx32Rs32: "mpyi("rt5,rs5")" is rs5 & rt5 {
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 0 1 1 0 1 0 1 1 1 0 1 0 - - s s P P 0 - - - - - - - - - - - d d
-:all8 Pd2,pu1617 EndPacket is iclass=6 & op2127=0x5d & op1820=0 & op0213=0 & pu1617 & Pd2 & $(END_PACKET) {
+:all8 Pd2,pu1617 EndPacket is iclass=6 & op2127=0x5d & op20=0 & op13=0 & pu1617 & Pd2 & $(END_PACKET) {
Pd2 = Pd2 & ((pu1617 == 0xff) * 0xff);
build EndPacket;
}
@@ -2445,8 +2630,8 @@ MpyiRx32Rs32: "mpyi("rt5,rs5")" is rs5 & rt5 {
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 0 1 0 0 0 0 0 1 0 0 1 1 1 0 1 P P 0 0 0 i i i i i i i i i i i
-:allocframe Uimm16_0010_shift3 EndPacket is iclass=10 & op2527=0 & op2224=2 & op21=0 & op1620=0x1d & op1113=0 & Uimm16_0010_shift3 & $(END_PACKET) {
- allocframe(SP, Uimm16_0010_shift3);
+:allocframe Uimm16_0010_shift3 EndPacket is iclass=10 & op2527=0 & op2224=2 & op21=0 & op1620=0x1d & op1113=0 & Uimm16_0010_shift3 & AllocFrameRxU11x8 & $(END_PACKET) {
+ build AllocFrameRxU11x8; # allocframe(SP, #u11:3)
build EndPacket;
}
@@ -2455,32 +2640,32 @@ MpyiRx32Rs32: "mpyi("rt5,rs5")" is rs5 & rt5 {
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 0 1 0 0 0 0 0 1 0 0 x x x x x P P 0 0 0 i i i i i i i i i i i
-:allocframe rx5, Uimm16_0010_shift3 EndPacket is iclass=10 & op2527=0 & op2224=2 & op21=0 & rx5 & op1113=0 & Uimm16_0010_shift3 & $(END_PACKET) {
- allocframe(rx5, Uimm16_0010_shift3);
+:allocframe rx5, Uimm16_0010_shift3 EndPacket is iclass=10 & op2527=0 & op2224=2 & op21=0 & op1113=0 & rx5 & Uimm16_0010_shift3 & AllocFrameRxU11x8 & $(END_PACKET) {
+ build AllocFrameRxU11x8;
build EndPacket;
}
# (v4,6) and -- "Pd4 = and ( Ps4 , and ( Pt4 , Pu4 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 1 0 1 1 0 0 0 1 + + s s P P 0 - - - t t u u - - - - d d
+# 0 1 1 0 1 0 1 1 0 0 0 1 - - s s P P 0 - - - t t u u - - - - d d
#
# (v4,6) and -- "Pd4 = and ( Ps4 , and ( Pt4 , ! Pu4 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 1 0 1 1 1 0 0 1 + + s s P P 0 - - - t t u u - - - - d d
+# 0 1 1 0 1 0 1 1 1 0 0 1 - - s s P P 0 - - - t t u u - - - - d d
#
# (v4,6) and -- "Pd4 = and ( Ps4 , or ( Pt4 , Pu4 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 1 0 1 1 0 0 1 1 + + s s P P 0 - - - t t u u - - - - d d
+# 0 1 1 0 1 0 1 1 0 0 1 1 - - s s P P 0 - - - t t u u - - - - d d
#
# (v4,6) and -- "Pd4 = and ( Ps4 , or ( Pt4 , ! Pu4 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 1 0 1 1 1 0 1 1 + + s s P P 0 - - - t t u u - - - - d d
+# 0 1 1 0 1 0 1 1 1 0 1 1 - - s s P P 0 - - - t t u u - - - - d d
-:and Pd2,pu1617,PredLogic_L21_S23_P0809_P0607 EndPacket is iclass=6 & op2427=0xb & op22=0 & op1820=4 & pu1617 & Pd2 & PredLogic_L21_S23_P0809_P0607 & $(END_PACKET) {
+:and Pd2,pu1617,PredLogic_L21_S23_P0809_P0607 EndPacket is iclass=6 & op2427=0xb & op22=0 & op20=1 & pu1617 & Pd2 & PredLogic_L21_S23_P0809_P0607 & $(END_PACKET) {
Pd2 = Pd2 & (pu1617 & PredLogic_L21_S23_P0809_P0607);
build EndPacket;
}
@@ -2490,7 +2675,7 @@ MpyiRx32Rs32: "mpyi("rt5,rs5")" is rs5 & rt5 {
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 0 1 1 0 1 0 1 1 0 0 0 0 - - s s P P 0 - - - t t - - - - - - d d
-:and Pd2,pu0809,pu1617 EndPacket is iclass=6 & op2127=0x58 & op1820=0 & op1013=0 & op0207=0 & pu0809 & pu1617 & Pd2 & $(END_PACKET) {
+:and Pd2,pu0809,pu1617 EndPacket is iclass=6 & op2127=0x58 & op20=0 & op13=0 & pu0809 & pu1617 & Pd2 & $(END_PACKET) {
Pd2 = Pd2 & (pu1617 & pu0809);
build EndPacket;
}
@@ -2500,7 +2685,7 @@ MpyiRx32Rs32: "mpyi("rt5,rs5")" is rs5 & rt5 {
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 0 1 1 0 1 0 1 1 0 1 1 0 - - s s P P 0 - - - t t - - - - - - d d
-:and Pd2,pu0809,NotPs2 EndPacket is iclass=6 & op2127=0x5b & op1820=0 & op1013=0 & op0207=0 & pu0809 & NotPs2 & Pd2 & $(END_PACKET) {
+:and Pd2,pu0809,NotPs2 EndPacket is iclass=6 & op2127=0x5b & op20=0 & op13=0 & pu0809 & NotPs2 & Pd2 & $(END_PACKET) {
Pd2 = Pd2 & (NotPs2 & pu0809);
build EndPacket;
}
@@ -2558,9 +2743,9 @@ MpyiRx32Rs32: "mpyi("rt5,rs5")" is rs5 & rt5 {
# (v4,14) and -- "Rx32 &= and ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 1 1 1 1 0 1 0 s s s s s P P + t t t t t + 0 0 x x x x x
+# 1 1 1 0 1 1 1 1 0 1 0 s s s s s P P 0 t t t t t 0 0 0 x x x x x
-:and&= Rd5,rs5,rt5 EndPacket is iclass=0xe & op2127=0x7a & op13=0 & op0507=0 & rs5 & rt5 & rd5 & Rd5 & $(END_PACKET)
+:and&= Rd5,rs5,rt5 EndPacket is iclass=0xe & op2127=0x7a & op13=0 & op7=0 & op0506=0 & rs5 & rt5 & rd5 & Rd5 & $(END_PACKET)
{
Rd5 = rd5 & rs5 & rt5;
build EndPacket;
@@ -2569,9 +2754,9 @@ MpyiRx32Rs32: "mpyi("rt5,rs5")" is rs5 & rt5 {
# (v4,14) and -- "Rx32 &= and ( Rs32 , ~ Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 1 1 1 1 0 0 1 s s s s s P P + t t t t t + 0 1 x x x x x
+# 1 1 1 0 1 1 1 1 0 0 1 s s s s s P P 0 t t t t t 0 0 1 x x x x x
-:and&= Rd5,rs5,OnesCompRt5 EndPacket is iclass=0xe & op2127=0x79 & op13=0 & op0507=1 & rs5 & OnesCompRt5 & rd5 & Rd5 & $(END_PACKET)
+:and&= Rd5,rs5,OnesCompRt5 EndPacket is iclass=0xe & op2127=0x79 & op13=0 & op7=0 & op0506=1 & rs5 & OnesCompRt5 & rd5 & Rd5 & $(END_PACKET)
{
Rd5 = rd5 & rs5 & OnesCompRt5;
build EndPacket;
@@ -2585,9 +2770,9 @@ MpyiRx32Rs32: "mpyi("rt5,rs5")" is rs5 & rt5 {
# (v4,13) and -- "Rx32 = and ( #u8x , lsr ( Rx32 , #U5 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 1 1 1 0 i i i x x x x x P P i I I I I I i i i 1 i 0 0 +
+# 1 1 0 1 1 1 1 0 i i i x x x x x P P i I I I I I i i i 1 i 0 0 -
-:and Rx5,Uimm32_2123_13_0507_03x,ShiftRx_D04_I0812 EndPacket is iclass=13 & op2427=14 & op0002=0 & Uimm32_2123_13_0507_03x & ShiftRx_D04_I0812 & Rx5 & $(END_PACKET)
+:and Rx5,Uimm32_2123_13_0507_03x,ShiftRx_D04_I0812 EndPacket is iclass=13 & op2427=14 & op0102=0 & Uimm32_2123_13_0507_03x & ShiftRx_D04_I0812 & Rx5 & $(END_PACKET)
{
Rx5 = Uimm32_2123_13_0507_03x & ShiftRx_D04_I0812;
build EndPacket;
@@ -2596,9 +2781,9 @@ MpyiRx32Rs32: "mpyi("rt5,rs5")" is rs5 & rt5 {
# (v4,14) and -- "Rx32 ^= and ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 1 1 1 1 1 1 0 s s s s s P P + t t t t t + 1 0 x x x x x
+# 1 1 1 0 1 1 1 1 1 1 0 s s s s s P P 0 t t t t t 0 1 0 x x x x x
-:and"^=" Rd5,rs5,rt5 EndPacket is iclass=0xe & op2127=0x7e & op13=0 & op0507=2 & rs5 & rt5 & rd5 & Rd5 & $(END_PACKET)
+:and"^=" Rd5,rs5,rt5 EndPacket is iclass=0xe & op2127=0x7e & op13=0 & op7=0 & op0506=2 & rs5 & rt5 & rd5 & Rd5 & $(END_PACKET)
{
Rd5 = rd5 ^ (rs5 & rt5);
build EndPacket;
@@ -2607,9 +2792,9 @@ MpyiRx32Rs32: "mpyi("rt5,rs5")" is rs5 & rt5 {
# (v4,14) and -- "Rx32 ^= and ( Rs32 , ~ Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 1 1 1 1 0 0 1 s s s s s P P + t t t t t + 1 0 x x x x x
+# 1 1 1 0 1 1 1 1 0 0 1 s s s s s P P 0 t t t t t 0 1 0 x x x x x
-:and"^=" Rd5,rs5,OnesCompRt5 EndPacket is iclass=0xe & op2127=0x79 & op13=0 & op0507=2 & rs5 & OnesCompRt5 & rd5 & Rd5 & $(END_PACKET)
+:and"^=" Rd5,rs5,OnesCompRt5 EndPacket is iclass=0xe & op2127=0x79 & op13=0 & op7=0 & op0506=2 & rs5 & OnesCompRt5 & rd5 & Rd5 & $(END_PACKET)
{
Rd5 = rd5 ^ (rs5 & OnesCompRt5);
build EndPacket;
@@ -2628,9 +2813,9 @@ MpyiRx32Rs32: "mpyi("rt5,rs5")" is rs5 & rt5 {
# (v4,14) and -- "Rx32 |= and ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 1 1 1 1 0 1 0 s s s s s P P + t t t t t + 1 1 x x x x x
+# 1 1 1 0 1 1 1 1 0 1 0 s s s s s P P 0 t t t t t 0 1 1 x x x x x
-:and|= Rd5,rs5,rt5 EndPacket is iclass=0xe & op2127=0x7a & op13=0 & op0507=3 & rs5 & rt5 & rd5 & Rd5 & $(END_PACKET)
+:and|= Rd5,rs5,rt5 EndPacket is iclass=0xe & op2127=0x7a & op13=0 & op7=0 & op0506=3 & rs5 & rt5 & rd5 & Rd5 & $(END_PACKET)
{
Rd5 = rd5 | (rs5 & rt5);
build EndPacket;
@@ -2639,9 +2824,9 @@ MpyiRx32Rs32: "mpyi("rt5,rs5")" is rs5 & rt5 {
# (v4,14) and -- "Rx32 |= and ( Rs32 , ~ Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 1 1 1 1 0 0 1 s s s s s P P + t t t t t + 0 0 x x x x x
+# 1 1 1 0 1 1 1 1 0 0 1 s s s s s P P 0 t t t t t 0 0 0 x x x x x
-:and|= Rd5,rs5,OnesCompRt5 EndPacket is iclass=0xe & op2127=0x79 & op13=0 & op0507=0 & rs5 & OnesCompRt5 & rd5 & Rd5 & $(END_PACKET)
+:and|= Rd5,rs5,OnesCompRt5 EndPacket is iclass=0xe & op2127=0x79 & op13=0 & op7=0 & op0506=0 & rs5 & OnesCompRt5 & rd5 & Rd5 & $(END_PACKET)
{
Rd5 = rd5 | (rs5 & OnesCompRt5);
build EndPacket;
@@ -2650,31 +2835,33 @@ MpyiRx32Rs32: "mpyi("rt5,rs5")" is rs5 & rt5 {
# (v2,15) and -- "if ( Pu4 ) Rd32 = and ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 1 1 0 0 1 + 0 0 s s s s s P P 0 t t t t t 0 u u d d d d d
+# 1 1 1 1 1 0 0 1 - 0 0 s s s s s P P 0 t t t t t 0 u u d d d d d
#
# (v2,15) and -- "if ( ! Pu4 ) Rd32 = and ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 1 1 0 0 1 + 0 0 s s s s s P P 0 t t t t t 1 u u d d d d d
+# 1 1 1 1 1 0 0 1 - 0 0 s s s s s P P 0 t t t t t 1 u u d d d d d
#
# (v2,15) and -- "if ( Pu4 .new ) Rd32 = and ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 1 1 0 0 1 + 0 0 s s s s s P P 1 t t t t t 0 u u d d d d d
+# 1 1 1 1 1 0 0 1 - 0 0 s s s s s P P 1 t t t t t 0 u u d d d d d
#
# (v2,15) and -- "if ( ! Pu4 .new ) Rd32 = and ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 1 1 0 0 1 + 0 0 s s s s s P P 1 t t t t t 1 u u d d d d d
+# 1 1 1 1 1 0 0 1 - 0 0 s s s s s P P 1 t t t t t 1 u u d d d d d
-:and^PuCond0506_N13_S07 rd5,rs5,rt5 EndPacket is iclass=15 & op2327=0x12 & op22=0 & op21=0 & PuCond0506_N13_S07 & rs5 & rt5 & rd5 & rd5_ & SetNRegRd5 & $(END_PACKET) {
+:and^PuCond0506_N13_S07 rd5,rs5,rt5 EndPacket is iclass=15 & op2427=0x9 & op22=0 & op21=0 & PuCond0506_N13_S07 & rs5 & rt5 & rd5 & rd5_ & SetNRegRd5 & $(END_PACKET) {
build PuCond0506_N13_S07;
build EndPacket;
<>
+ build PuCond0506_N13_S07;
if (ConditionReg == 0) goto ;
rd5_ = rs5 & rt5;
<>
+ build PuCond0506_N13_S07;
if (ConditionReg == 0) goto ;
rd5 = rd5_;
@@ -2683,23 +2870,23 @@ MpyiRx32Rs32: "mpyi("rt5,rs5")" is rs5 & rt5 {
# (v2,6) any8 -- "Pd4 = any8 ( Ps4 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 1 0 1 1 1 0 0 0 + + s s P P 0 + + + + + + + + + + + d d
+# 0 1 1 0 1 0 1 1 1 0 0 0 - - s s P P 0 - - - - - - - - - - - d d
-:any8 Pd2,pu1617 EndPacket is iclass=6 & op2127=0x5c & op1820=0 & op0213=0 & pu1617 & Pd2 & $(END_PACKET) {
+:any8 Pd2,pu1617 EndPacket is iclass=6 & op2127=0x5c & op20=0 & op13=0 & pu1617 & Pd2 & $(END_PACKET) {
Pd2 = Pd2 & ((pu1617 != 0) * 0xff);
build EndPacket;
}
-# any8 -- "Pd4 = any8 ( vcmpb.eq ( Rss32 , Rtt32 ) )"
+# (v4,13) any8 -- "Pd4 = any8 ( vcmpb.eq ( Rss32 , Rtt32 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 0 1 0 0 + + s s s s s P P 1 t t t t t 0 0 0 + + + d d
+# 1 1 0 1 0 0 1 0 0 - - s s s s s P P 1 t t t t t 0 0 0 - - - d d
define pcodeop vcmpb.eq;
VcmpbEq: "vcmpb.eq("^rss5,rtt5^")" is rss5 & rtt5 { tmp:1 = vcmpb.eq(rss5,rtt5); export tmp; }
-:any8 Pd2,VcmpbEq EndPacket is iclass=13 & op2127=0x10 & op13=1 & op0207=0 & rss5 & rtt5 & Pd2 & VcmpbEq & $(END_PACKET) {
+:any8 Pd2,VcmpbEq EndPacket is iclass=13 & op2327=0x4 & op13=1 & op0507=0 & rss5 & rtt5 & Pd2 & VcmpbEq & $(END_PACKET) {
Pd2 = Pd2 & ((VcmpbEq != 0) * 0xff);
build EndPacket;
}
@@ -2709,19 +2896,18 @@ VcmpbEq: "vcmpb.eq("^rss5,rtt5^")" is rss5 & rtt5 { tmp:1 = vcmpb.eq(rss5,rtt5)
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 1 0 1 0 0 1 0 0 - - s s s s s P P 1 t t t t t 0 0 1 - - - d d
-:any8! Pd2,VcmpbEq EndPacket is iclass=13 & op2127=0x10 & op13=1 & op0207=8 & rss5 & rtt5 & Pd2 & VcmpbEq & $(END_PACKET) {
+:any8! Pd2,VcmpbEq EndPacket is iclass=13 & op2327=0x4 & op13=1 & op0507=1 & rss5 & rtt5 & Pd2 & VcmpbEq & $(END_PACKET) {
Pd2 = Pd2 & ~((VcmpbEq != 0) * 0xff);
build EndPacket;
}
-
# (v2,8) rol -- "Rd32 = rol ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 0 0 0 1 1 0 0 0 0 0 s s s s s P P 0 i i i i i 0 1 1 d d d d d
:rol Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x60 & op13=0 & op0507=3 & Rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
- Rd5 = (rs5 << Uimm8_0812) | zext((rs5 s< 0) * 1);
+ Rd5 = (rs5 << Uimm8_0812) | (rs5 >> (32 - Uimm8_0812));
build EndPacket;
}
@@ -2750,20 +2936,21 @@ define pcodeop aslSat;
# (v2,12) asl -- "Rd32 = asl ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x32 & op13=0 & op0507=4 & Rd5 & rs5 & rt5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- Rd5 = (zext(right) * (rs5 s>> -rt5)) + (zext(!right) * (rs5 << rt5));
+:asl Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x19 & op0607=2 & Rd5 & rs5 & rt5 & $(END_PACKET) {
+ shamt:4 = (rt5 << 25) s>> 25;
+ right:1 = shamt s< 0;
+ Rd5 = (zext(right) * (rs5 s>> -shamt)) + (zext(!right) * (rs5 << shamt));
build EndPacket;
}
# (v2,12) asl -- "Rd32 = asl ( Rs32 , Rt32 ) :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 1 1 0 0 0 + s s s s s P P + t t t t t 1 0 + d d d d d
+# 1 1 0 0 0 1 1 0 0 0 - s s s s s P P - t t t t t 1 0 - d d d d d
-:asl":sat" Rd5,rs5,rt5 EndPacket is iclass=12 & op2127=0x30 & op13=0 & op0507=4 & Rd5 & rs5 & rt5 & $(END_PACKET) {
+:asl":sat" Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x18 & op0607=2 & Rd5 & rs5 & rt5 & $(END_PACKET) {
Rd5 = aslSat(rs5, rt5);
build EndPacket;
}
@@ -2771,9 +2958,9 @@ define pcodeop aslSat;
# (v2,8) asl -- "Rdd32 = asl ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 0 0 0 0 + s s s s s P P i i i i i i 0 1 0 d d d d d
+# 1 0 0 0 0 0 0 0 0 0 0 s s s s s P P i i i i i i 0 1 0 d d d d d
-:asl Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x00 & op0507=2 & Rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+:asl Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x0 & op21=0 & op0507=2 & Rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
Rdd5 = rss5 << Uimm8_0813;
build EndPacket;
}
@@ -2781,30 +2968,31 @@ define pcodeop aslSat;
# (v2,8) rol -- "Rdd32 = rol ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 0 0 0 0 + s s s s s P P i i i i i i 0 1 1 d d d d d
+# 1 0 0 0 0 0 0 0 0 0 0 s s s s s P P i i i i i i 0 1 1 d d d d d
-:rol Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x00 & op0507=3 & Rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
- Rdd5 = (rss5 << Uimm8_0813) | zext((rss5 s< 0) * 1);
+:rol Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x0 & op21=0 & op0507=3 & Rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+ Rdd5 = (rss5 << Uimm8_0813) | (rss5 >> (64 - Uimm8_0813));
build EndPacket;
}
# (v2,12) asl -- "Rdd32 = asl ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x1c & op13=0 & op0507=4 & Rdd5 & rss5 & rt5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- Rdd5 = (zext(right) * (rss5 s>> -rt5)) + (zext(!right) * (rss5 << rt5));
+:asl Rdd5,rss5,rt5 EndPacket is iclass=12 & op2227=0xe & op0607=2 & Rdd5 & rss5 & rt5 & $(END_PACKET) {
+ shamt:4 = (rt5 << 25) s>> 25;
+ right:1 = shamt s< 0;
+ Rdd5 = (zext(right) * (rss5 s>> -shamt)) + (zext(!right) * (rss5 << shamt));
build EndPacket;
}
# (v2,8) asl -- "Rx32 &= asl ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 0 1 + s s s s s P P 0 i i i i i 0 1 0 x x x x x
+# 1 0 0 0 1 1 1 0 0 1 - s s s s s P P 0 i i i i i 0 1 0 x x x x x
-:asl&= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x72 & op13=0 & op0507=2 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+:asl&= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x39 & op13=0 & op0507=2 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
Rd5 = rd5 & (rs5 << Uimm8_0812);
build EndPacket;
}
@@ -2812,21 +3000,22 @@ define pcodeop aslSat;
# (v2,8) rol -- "Rx32 &= rol ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 0 1 + s s s s s P P 0 i i i i i 0 1 1 x x x x x
+# 1 0 0 0 1 1 1 0 0 1 - s s s s s P P 0 i i i i i 0 1 1 x x x x x
-:rol&= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x72 & op13=0 & op0507=3 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
- Rd5 = rd5 & ((rs5 << Uimm8_0812) | zext((rs5 s<0) * 1));
+:rol&= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x39 & op13=0 & op0507=3 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+ Rd5 = rd5 & ((rs5 << Uimm8_0812) | (rs5 >> (32 - Uimm8_0812)));
build EndPacket;
}
# (v2,12) asl -- "Rx32 &= asl ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x62 & op13=0 & op0507=4 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- result:4 = (zext(right) * (rs5 s>> -rt5)) + (zext(!right) * (rs5 << rt5));
+:asl&= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x31 & op0607=2 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -2834,9 +3023,9 @@ define pcodeop aslSat;
# (v2,8) asl -- "Rx32 += asl ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 0 0 + s s s s s P P 0 i i i i i 1 1 0 x x x x x
+# 1 0 0 0 1 1 1 0 0 0 - s s s s s P P 0 i i i i i 1 1 0 x x x x x
-:asl+= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x70 & op13=0 & op0507=6 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+:asl+= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x38 & op13=0 & op0507=6 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
Rd5 = rd5 + (rs5 << Uimm8_0812);
build EndPacket;
}
@@ -2844,21 +3033,22 @@ define pcodeop aslSat;
# (v2,8) rol -- "Rx32 += rol ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 0 0 + s s s s s P P 0 i i i i i 1 1 1 x x x x x
+# 1 0 0 0 1 1 1 0 0 0 - s s s s s P P 0 i i i i i 1 1 1 x x x x x
-:rol+= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x70 & op13=0 & op0507=7 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
- Rd5 = rd5 + ((rs5 << Uimm8_0812) | zext((rs5 s< 0) * 1));
+:rol+= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x38 & op13=0 & op0507=7 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+ Rd5 = rd5 + ((rs5 << Uimm8_0812) | (rs5 >> (32 - Uimm8_0812)));
build EndPacket;
}
# (v2,12) asl -- "Rx32 += asl ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x66 & op13=0 & op0507=4 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- result:4 = (zext(right) * (rs5 s>> -rt5)) + (zext(!right) * (rs5 << rt5));
+:asl+= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x33 & op0607=2 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -2866,9 +3056,9 @@ define pcodeop aslSat;
# (v2,8) asl -- "Rx32 -= asl ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 0 0 + s s s s s P P 0 i i i i i 0 1 0 x x x x x
+# 1 0 0 0 1 1 1 0 0 0 - s s s s s P P 0 i i i i i 0 1 0 x x x x x
-:asl-= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x70 & op13=0 & op0507=2 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+:asl-= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x38 & op13=0 & op0507=2 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
Rd5 = rd5 - (rs5 << Uimm8_0812);
build EndPacket;
}
@@ -2876,21 +3066,22 @@ define pcodeop aslSat;
# (v2,8) rol -- "Rx32 -= rol ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 0 0 + s s s s s P P 0 i i i i i 0 1 1 x x x x x
+# 1 0 0 0 1 1 1 0 0 0 - s s s s s P P 0 i i i i i 0 1 1 x x x x x
-:rol-= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x70 & op13=0 & op0507=3 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
- Rd5 = rd5 - ((rs5 << Uimm8_0812) | zext((rs5 s< 0) * 1));
+:rol-= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x38 & op13=0 & op0507=3 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+ Rd5 = rd5 - ((rs5 << Uimm8_0812) | (rs5 >> (32 - Uimm8_0812)));
build EndPacket;
}
# (v2,12) asl -- "Rx32 -= asl ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x64 & op13=0 & op0507=4 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- result:4 = (zext(right) * (rs5 s>> -rt5)) + (zext(!right) * (rs5 << rt5));
+:asl-= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x32 & op0607=2 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -2898,9 +3089,9 @@ define pcodeop aslSat;
# (v2,8) asl -- "Rx32 ^= asl ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 1 0 + s s s s s P P 0 i i i i i 0 1 0 x x x x x
+# 1 0 0 0 1 1 1 0 1 0 - s s s s s P P 0 i i i i i 0 1 0 x x x x x
-:asl"^=" Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x74 & op13=0 & op0507=2 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+:asl"^=" Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x3a & op13=0 & op0507=2 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
Rd5 = rd5 ^ (rs5 << Uimm8_0812);
build EndPacket;
}
@@ -2908,19 +3099,19 @@ define pcodeop aslSat;
# (v2,8) rol -- "Rx32 ^= rol ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 1 0 + s s s s s P P 0 i i i i i 0 1 1 x x x x x
+# 1 0 0 0 1 1 1 0 1 0 - s s s s s P P 0 i i i i i 0 1 1 x x x x x
-:rol"^=" Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x74 & op13=0 & op0507=3 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
- Rd5 = rd5 ^ ((rs5 << Uimm8_0812) | zext((rs5 s< 0) * 1));
+:rol"^=" Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x3a & op13=0 & op0507=3 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+ Rd5 = rd5 ^ ((rs5 << Uimm8_0812) | (rs5 >> (32 - Uimm8_0812)));
build EndPacket;
}
# (v2,8) asl -- "Rx32 |= asl ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 0 1 + s s s s s P P 0 i i i i i 1 1 0 x x x x x
+# 1 0 0 0 1 1 1 0 0 1 - s s s s s P P 0 i i i i i 1 1 0 x x x x x
-:asl|= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x72 & op13=0 & op0507=6 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+:asl|= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x39 & op13=0 & op0507=6 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
Rd5 = rd5 | (rs5 << Uimm8_0812);
build EndPacket;
}
@@ -2928,21 +3119,22 @@ define pcodeop aslSat;
# (v2,8) rol -- "Rx32 |= rol ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 0 1 + s s s s s P P 0 i i i i i 1 1 1 x x x x x
+# 1 0 0 0 1 1 1 0 0 1 - s s s s s P P 0 i i i i i 1 1 1 x x x x x
-:rol|= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x72 & op13=0 & op0507=7 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
- Rd5 = rd5 | ((rs5 << Uimm8_0812) | zext((rs5 s< 0) * 1));
+:rol|= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x39 & op13=0 & op0507=7 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+ Rd5 = rd5 | ((rs5 << Uimm8_0812) | (rs5 >> (32 - Uimm8_0812)));
build EndPacket;
}
# (v2,12) asl -- "Rx32 |= asl ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x60 & op13=0 & op0507=4 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- result:4 = (zext(right) * (rs5 s>> -rt5)) + (zext(!right) * (rs5 << rt5));
+:asl|= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x30 & op0607=2 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -2950,9 +3142,9 @@ define pcodeop aslSat;
# (v2,8) asl -- "Rxx32 &= asl ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 0 1 + s s s s s P P i i i i i i 0 1 0 x x x x x
+# 1 0 0 0 0 0 1 0 0 1 - s s s s s P P i i i i i i 0 1 0 x x x x x
-:asl&= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x12 & op0507=2 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+:asl&= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x9 & op0507=2 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
Rdd5 = rdd5 & (rss5 << Uimm8_0813);
build EndPacket;
}
@@ -2960,21 +3152,22 @@ define pcodeop aslSat;
# (v2,8) rol -- "Rxx32 &= rol ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 0 1 + s s s s s P P i i i i i i 0 1 1 x x x x x
+# 1 0 0 0 0 0 1 0 0 1 - s s s s s P P i i i i i i 0 1 1 x x x x x
-:rol&= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x12 & op0507=3 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
- Rdd5 = rdd5 & ((rss5 << Uimm8_0813) | zext((rss5 s< 0) * 1));
+:rol&= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x9 & op0507=3 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+ Rdd5 = rdd5 & ((rss5 << Uimm8_0813) | (rss5 >> (64 - Uimm8_0813)));
build EndPacket;
}
# (v2,12) asl -- "Rxx32 &= asl ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=4 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- result:8 = (zext(right) * (rss5 s>> -rt5)) + (zext(!right) * (rss5 << rt5));
+:asl&= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5a & op0607=2 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -2982,9 +3175,9 @@ define pcodeop aslSat;
# (v2,8) asl -- "Rxx32 += asl ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 0 0 + s s s s s P P i i i i i i 1 1 0 x x x x x
+# 1 0 0 0 0 0 1 0 0 0 - s s s s s P P i i i i i i 1 1 0 x x x x x
-:asl+= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x10 & op0507=6 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+:asl+= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x8 & op0507=6 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
Rdd5 = rdd5 + (rss5 << Uimm8_0813);
build EndPacket;
}
@@ -2992,21 +3185,22 @@ define pcodeop aslSat;
# (v2,8) rol -- "Rxx32 += rol ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 0 0 + s s s s s P P i i i i i i 1 1 1 x x x x x
+# 1 0 0 0 0 0 1 0 0 0 - s s s s s P P i i i i i i 1 1 1 x x x x x
-:rol+= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x10 & op0507=7 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
- Rdd5 = rdd5 + ((rss5 << Uimm8_0813) | zext((rss5 s< 0) * 1));
+:rol+= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x8 & op0507=7 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+ Rdd5 = rdd5 + ((rss5 << Uimm8_0813) | (rss5 >> (64 - Uimm8_0813)));
build EndPacket;
}
# (v2,12) asl -- "Rxx32 += asl ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=4 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- result:8 = (zext(right) * (rss5 s>> -rt5)) + (zext(!right) * (rss5 << rt5));
+:asl+= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5e & op0607=2 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -3014,9 +3208,9 @@ define pcodeop aslSat;
# (v2,8) asl -- "Rxx32 -= asl ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 0 0 + s s s s s P P i i i i i i 0 1 0 x x x x x
+# 1 0 0 0 0 0 1 0 0 0 - s s s s s P P i i i i i i 0 1 0 x x x x x
-:asl-= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x10 & op0507=2 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+:asl-= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x8 & op0507=2 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
Rdd5 = rdd5 - (rss5 << Uimm8_0813);
build EndPacket;
}
@@ -3024,21 +3218,22 @@ define pcodeop aslSat;
# (v2,8) rol -- "Rxx32 -= rol ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 0 0 + s s s s s P P i i i i i i 0 1 1 x x x x x
+# 1 0 0 0 0 0 1 0 0 0 - s s s s s P P i i i i i i 0 1 1 x x x x x
-:rol-= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x10 & op0507=3 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
- Rdd5 = rdd5 - ((rss5 << Uimm8_0813) | zext((rss5 s< 0) * 1));
+:rol-= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x8 & op0507=3 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+ Rdd5 = rdd5 - ((rss5 << Uimm8_0813) | (rss5 >> (64 - Uimm8_0813)));
build EndPacket;
}
# (v2,12) asl -- "Rxx32 -= asl ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=4 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- result:8 = (zext(right) * (rss5 s>> -rt5)) + (zext(!right) * (rss5 << rt5));
+:asl-= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5c & op0607=2 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -3046,9 +3241,9 @@ define pcodeop aslSat;
# (v2,8) asl -- "Rxx32 ^= asl ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 1 0 + s s s s s P P i i i i i i 0 1 0 x x x x x
+# 1 0 0 0 0 0 1 0 1 0 - s s s s s P P i i i i i i 0 1 0 x x x x x
-:asl"^=" Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x14 & op0507=2 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+:asl"^=" Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0xa & op0507=2 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
Rdd5 = rdd5 ^ (rss5 << Uimm8_0813);
build EndPacket;
}
@@ -3056,21 +3251,22 @@ define pcodeop aslSat;
# (v2,8) rol -- "Rxx32 ^= rol ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 1 0 + s s s s s P P i i i i i i 0 1 1 x x x x x
+# 1 0 0 0 0 0 1 0 1 0 - s s s s s P P i i i i i i 0 1 1 x x x x x
-:rol"^=" Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x14 & op0507=3 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
- Rdd5 = rdd5 ^ ((rss5 << Uimm8_0813) | zext((rss5 s< 0) * 1));
+:rol"^=" Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0xa & op0507=3 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+ Rdd5 = rdd5 ^ ((rss5 << Uimm8_0813) | (rss5 >> (64 - Uimm8_0813)));
build EndPacket;
}
# (v4,12) asl -- "Rxx32 ^= asl ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=4 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- result:8 = (zext(right) * (rss5 s>> -rt5)) + (zext(!right) * (rss5 << rt5));
+:asl"^=" Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5b & op0607=2 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -3078,9 +3274,9 @@ define pcodeop aslSat;
# (v2,8) asl -- "Rxx32 |= asl ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 0 1 + s s s s s P P i i i i i i 1 1 0 x x x x x
+# 1 0 0 0 0 0 1 0 0 1 - s s s s s P P i i i i i i 1 1 0 x x x x x
-:asl|= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x12 & op0507=6 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+:asl|= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x9 & op0507=6 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
Rdd5 = rdd5 | (rss5 << Uimm8_0813);
build EndPacket;
}
@@ -3088,21 +3284,22 @@ define pcodeop aslSat;
# (v2,8) rol -- "Rxx32 |= rol ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 0 1 + s s s s s P P i i i i i i 1 1 1 x x x x x
+# 1 0 0 0 0 0 1 0 0 1 - s s s s s P P i i i i i i 1 1 1 x x x x x
-:rol|= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x12 & op0507=7 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
- Rdd5 = rdd5 | ((rss5 << Uimm8_0813) | zext((rss5 s< 0) * 1));
+:rol|= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x9 & op0507=7 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+ Rdd5 = rdd5 | ((rss5 << Uimm8_0813) | (rss5 >> (64 - Uimm8_0813)));
build EndPacket;
}
# (v2,12) asl -- "Rxx32 |= asl ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=4 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- result:8 = (zext(right) * (rss5 s>> -rt5)) + (zext(!right) * (rss5 << rt5));
+:asl|= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x58 & op0607=2 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -3110,9 +3307,9 @@ define pcodeop aslSat;
# (v2,7) aslh -- "Rd32 = aslh ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 1 0 0 0 0 0 0 0 s s s s s P P 0 + + + + + + + + d d d d d
+# 0 1 1 1 0 0 0 0 0 0 0 s s s s s P P 0 - - - - - - - - d d d d d
-:aslh Rd5,rs5 EndPacket is iclass=7 & op2127=0 & op13=0 & op0512=0 & Rd5 & rs5 & $(END_PACKET) {
+:aslh Rd5,rs5 EndPacket is iclass=7 & op2127=0 & op13=0 & Rd5 & rs5 & $(END_PACKET) {
Rd5 = rs5 << 16;
build EndPacket;
}
@@ -3141,10 +3338,12 @@ define pcodeop aslSat;
build PuCond0809_N10_S11;
build EndPacket;
<>
+ build PuCond0809_N10_S11;
if (ConditionReg == 0) goto ;
rd5_ = rs5 << 16;
<>
+ build PuCond0809_N10_S11;
if (ConditionReg == 0) goto ;
rd5 = rd5_;
@@ -3183,22 +3382,23 @@ define pcodeop aslSat;
# (v2,12) asr -- "Rd32 = asr ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x32 & op13=0 & op0507=0 & Rd5 & rs5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- Rd5 = (zext(!left) * (rs5 s>> rt5)) + (zext(left) * (rs5 << -rt5));
+:asr Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x19 & op0607=0 & Rd5 & rs5 & rt5 & $(END_PACKET) {
+ shamt:4 = (rt5 << 25) s>> 25;
+ left:1 = shamt s< 0;
+ Rd5 = (zext(!left) * (rs5 s>> shamt)) + (zext(left) * (rs5 << -shamt));
build EndPacket;
}
# (v2,12) asr -- "Rd32 = asr ( Rs32 , Rt32 ) :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 1 1 0 0 0 + s s s s s P P + t t t t t 0 0 + d d d d d
+# 1 1 0 0 0 1 1 0 0 0 - s s s s s P P - t t t t t 0 0 - d d d d d
define pcodeop asrSat;
-:asr":sat" Rd5,rs5,rt5 EndPacket is iclass=12 & op2127=0x30 & op13=0 & op0507=0 & Rd5 & rs5 & rt5 & $(END_PACKET) {
+:asr":sat" Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x18 & op0607=0 & Rd5 & rs5 & rt5 & $(END_PACKET) {
Rd5 = asrSat(rs5, rt5);
build EndPacket;
}
@@ -3206,9 +3406,9 @@ define pcodeop asrSat;
# (v2,8) asr -- "Rdd32 = asr ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 0 0 0 0 + s s s s s P P i i i i i i 0 0 0 d d d d d
+# 1 0 0 0 0 0 0 0 0 0 0 s s s s s P P i i i i i i 0 0 0 d d d d d
-:asr Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x00 & op0507=0 & Rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+:asr Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x0 & op21=0 & op0507=0 & Rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
Rdd5 = rss5 s>> Uimm8_0813;
build EndPacket;
}
@@ -3216,20 +3416,21 @@ define pcodeop asrSat;
# (v2,12) asr -- "Rdd32 = asr ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x1c & op13=0 & op0507=0 & Rdd5 & rss5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- Rdd5 = (zext(!left) * (rss5 s>> rt5)) + (zext(left) * (rss5 << -rt5));
+:asr Rdd5,rss5,rt5 EndPacket is iclass=12 & op2227=0xe & op0607=0 & Rdd5 & rss5 & rt5 & $(END_PACKET) {
+ shamt:4 = (rt5 << 25) s>> 25;
+ left:1 = shamt s< 0;
+ Rdd5 = (zext(!left) * (rss5 s>> shamt)) + (zext(left) * (rss5 << -shamt));
build EndPacket;
}
# (v2,8) asr -- "Rx32 &= asr ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 0 1 + s s s s s P P 0 i i i i i 0 0 0 x x x x x
+# 1 0 0 0 1 1 1 0 0 1 - s s s s s P P 0 i i i i i 0 0 0 x x x x x
-:asr&= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x72 & op13=0 & op0507=0 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+:asr&= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x39 & op13=0 & op0507=0 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
Rd5 = rd5 & (rs5 s>> Uimm8_0812);
build EndPacket;
}
@@ -3237,11 +3438,12 @@ define pcodeop asrSat;
# (v2,12) asr -- "Rx32 &= asr ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x62 & op13=0 & op0507=0 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- result:4 = (zext(!left) * (rs5 s>> rt5)) + (zext(left) * (rs5 << -rt5));
+:asr&= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x31 & op0607=0 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -3249,9 +3451,9 @@ define pcodeop asrSat;
# (v2,8) asr -- "Rx32 += asr ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 0 0 + s s s s s P P 0 i i i i i 1 0 0 x x x x x
+# 1 0 0 0 1 1 1 0 0 0 - s s s s s P P 0 i i i i i 1 0 0 x x x x x
-:asr+= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x70 & op13=0 & op0507=4 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+:asr+= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x38 & op13=0 & op0507=4 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
Rd5 = rd5 + (rs5 s>> Uimm8_0812);
build EndPacket;
}
@@ -3259,11 +3461,12 @@ define pcodeop asrSat;
# (v2,12) asr -- "Rx32 += asr ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x66 & op13=0 & op0507=0 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- result:4 = (zext(!left) * (rs5 s>> rt5)) + (zext(left) * (rs5 << -rt5));
+:asr+= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x33 & op0607=0 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -3271,9 +3474,9 @@ define pcodeop asrSat;
# (v2,8) asr -- "Rx32 -= asr ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 0 0 + s s s s s P P 0 i i i i i 0 0 0 x x x x x
+# 1 0 0 0 1 1 1 0 0 0 - s s s s s P P 0 i i i i i 0 0 0 x x x x x
-:asr-= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x70 & op13=0 & op0507=0 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+:asr-= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x38 & op13=0 & op0507=0 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
Rd5 = rd5 - (rs5 s>> Uimm8_0812);
build EndPacket;
}
@@ -3281,11 +3484,12 @@ define pcodeop asrSat;
# (v2,12) asr -- "Rx32 -= asr ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x64 & op13=0 & op0507=0 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- result:4 = (zext(!left) * (rs5 s>> rt5)) + (zext(left) * (rs5 << -rt5));
+:asr-= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x32 & op0607=0 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -3293,9 +3497,9 @@ define pcodeop asrSat;
# (v2,8) asr -- "Rx32 |= asr ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 0 1 + s s s s s P P 0 i i i i i 1 0 0 x x x x x
+# 1 0 0 0 1 1 1 0 0 1 - s s s s s P P 0 i i i i i 1 0 0 x x x x x
-:asr|= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x72 & op13=0 & op0507=4 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+:asr|= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x39 & op13=0 & op0507=4 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
Rd5 = rd5 | (rs5 s>> Uimm8_0812);
build EndPacket;
}
@@ -3303,11 +3507,12 @@ define pcodeop asrSat;
# (v2,12) asr -- "Rx32 |= asr ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x60 & op13=0 & op0507=0 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- result:4 = (zext(!left) * (rs5 s>> rt5)) + (zext(left) * (rs5 << -rt5));
+:asr|= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x30 & op0607=0 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -3315,9 +3520,9 @@ define pcodeop asrSat;
# (v2,8) asr -- "Rxx32 &= asr ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 0 1 + s s s s s P P i i i i i i 0 0 0 x x x x x
+# 1 0 0 0 0 0 1 0 0 1 - s s s s s P P i i i i i i 0 0 0 x x x x x
-:asr&= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x12 & op0507=0 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+:asr&= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x9 & op0507=0 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
Rdd5 = rdd5 & (rss5 s>> Uimm8_0813);
build EndPacket;
}
@@ -3325,11 +3530,12 @@ define pcodeop asrSat;
# (v2,12) asr -- "Rxx32 &= asr ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=0 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- result:8 = (zext(!left) * (rss5 s>> rt5)) + (zext(left) * (rss5 << -rt5));
+:asr&= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5a & op0607=0 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -3337,9 +3543,9 @@ define pcodeop asrSat;
# (v2,8) asr -- "Rxx32 += asr ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 0 0 + s s s s s P P i i i i i i 1 0 0 x x x x x
+# 1 0 0 0 0 0 1 0 0 0 - s s s s s P P i i i i i i 1 0 0 x x x x x
-:asr+= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x10 & op0507=4 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+:asr+= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x8 & op0507=4 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
Rdd5 = rdd5 + (rss5 s>> Uimm8_0813);
build EndPacket;
}
@@ -3347,11 +3553,12 @@ define pcodeop asrSat;
# (v2,12) asr -- "Rxx32 += asr ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=0 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- result:8 = (zext(!left) * (rss5 s>> rt5)) + (zext(left) * (rss5 << -rt5));
+:asr+= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5e & op0607=0 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -3359,9 +3566,9 @@ define pcodeop asrSat;
# (v2,8) asr -- "Rxx32 -= asr ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 0 0 + s s s s s P P i i i i i i 0 0 0 x x x x x
+# 1 0 0 0 0 0 1 0 0 0 - s s s s s P P i i i i i i 0 0 0 x x x x x
-:asr-= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x10 & op0507=0 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+:asr-= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x8 & op0507=0 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
Rdd5 = rdd5 - (rss5 s>> Uimm8_0813);
build EndPacket;
}
@@ -3369,11 +3576,12 @@ define pcodeop asrSat;
# (v2,12) asr -- "Rxx32 -= asr ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=0 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- result:8 = (zext(!left) * (rss5 s>> rt5)) + (zext(left) * (rss5 << -rt5));
+:asr-= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5c & op0607=0 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -3381,11 +3589,12 @@ define pcodeop asrSat;
# (v4,12) asr -- "Rxx32 ^= asr ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=0 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- result:8 = (zext(!left) * (rss5 s>> rt5)) + (zext(left) * (rss5 << -rt5));
+:asr"^=" Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5b & op0607=0 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -3393,9 +3602,9 @@ define pcodeop asrSat;
# (v2,8) asr -- "Rxx32 |= asr ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 0 1 + s s s s s P P i i i i i i 1 0 0 x x x x x
+# 1 0 0 0 0 0 1 0 0 1 - s s s s s P P i i i i i i 1 0 0 x x x x x
-:asr|= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x12 & op0507=4 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+:asr|= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x9 & op0507=4 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
Rdd5 = rdd5 | (rss5 s>> Uimm8_0813);
build EndPacket;
}
@@ -3403,11 +3612,12 @@ define pcodeop asrSat;
# (v2,12) asr -- "Rxx32 |= asr ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=0 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- result:8 = (zext(!left) * (rss5 s>> rt5)) + (zext(left) * (rss5 << -rt5));
+:asr|= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x58 & op0607=0 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -3415,9 +3625,9 @@ define pcodeop asrSat;
# (v2,7) asrh -- "Rd32 = asrh ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 1 0 0 0 0 0 0 1 s s s s s P P 0 + + + + + + + + d d d d d
+# 0 1 1 1 0 0 0 0 0 0 1 s s s s s P P 0 - - - - - - - - d d d d d
-:asrh Rd5,rs5 EndPacket is iclass=7 & op2127=1 & op13=0 & op0512=0 & Rd5 & rs5 & $(END_PACKET) {
+:asrh Rd5,rs5 EndPacket is iclass=7 & op2127=1 & op13=0 & Rd5 & rs5 & $(END_PACKET) {
Rd5 = rs5 s>> 16;
build EndPacket;
}
@@ -3446,10 +3656,12 @@ define pcodeop asrSat;
build PuCond0809_N10_S11;
build EndPacket;
<>
+ build PuCond0809_N10_S11;
if (ConditionReg == 0) goto ;
rd5_ = rs5 s>> 16;
<>
+ build PuCond0809_N10_S11;
if (ConditionReg == 0) goto ;
rd5 = rd5_;
@@ -3458,9 +3670,9 @@ define pcodeop asrSat;
# (v2,6) assign -- "Cd32 = Rs32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 0 1 0 0 0 1 s s s s s P P + + + + + + + + + d d d d d
+# 0 1 1 0 0 0 1 0 0 0 1 s s s s s P P - - - - - - - - - d d d d d
-:assign Cd5,rs5 EndPacket is iclass=6 & op2127=0x11 & op0513=0 & Cd5 & rs5 & $(END_PACKET) {
+:assign Cd5,rs5 EndPacket is iclass=6 & op2127=0x11 & Cd5 & rs5 & $(END_PACKET) {
# NOTE: Assuming that PC will not be directly assigned
Cd5 = rs5;
build EndPacket;
@@ -3469,9 +3681,9 @@ define pcodeop asrSat;
# (v4,6) assign -- "Cdd32 = Rss32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 0 1 1 0 0 1 s s s s s P P + + + + + + + + + d d d d d
+# 0 1 1 0 0 0 1 1 0 0 1 s s s s s P P - - - - - - - - - d d d d d
-:assign Cdd5,rss5 EndPacket is iclass=6 & op2127=0x19 & op0513=0 & Cdd5 & rss5 & $(END_PACKET) {
+:assign Cdd5,rss5 EndPacket is iclass=6 & op2127=0x19 & Cdd5 & rss5 & $(END_PACKET) {
# NOTE: Assuming that PC will not be directly assigned
Cdd5 = rss5;
build EndPacket;
@@ -3480,9 +3692,9 @@ define pcodeop asrSat;
# (v4,6) assign -- "Gd32 = Rs32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 0 1 0 0 0 0 s s s s s P P + + + + + + + + + d d d d d
+# 0 1 1 0 0 0 1 0 0 0 0 s s s s s P P - - - - - - - - - d d d d d
-:assign Gd5,rs5 EndPacket is iclass=6 & op2127=0x10 & op0513=0 & Gd5 & rs5 & $(END_PACKET) {
+:assign Gd5,rs5 EndPacket is iclass=6 & op2127=0x10 & Gd5 & rs5 & $(END_PACKET) {
Gd5 = rs5;
build EndPacket;
}
@@ -3490,9 +3702,9 @@ define pcodeop asrSat;
# (v4,6) assign -- "Gdd32 = Rss32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 0 1 1 0 0 0 s s s s s P P + + + + + + + + + d d d d d
+# 0 1 1 0 0 0 1 1 0 0 0 s s s s s P P - - - - - - - - - d d d d d
-:assign Gdd5,rss5 EndPacket is iclass=6 & op2127=0x18 & op0513=0 & Gdd5 & rss5 & $(END_PACKET) {
+:assign Gdd5,rss5 EndPacket is iclass=6 & op2127=0x18 & Gdd5 & rss5 & $(END_PACKET) {
Gdd5 = rss5;
build EndPacket;
}
@@ -3500,9 +3712,9 @@ define pcodeop asrSat;
# (v2,8) assign -- "Pd4 = Rs32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 1 0 1 0 1 + s s s s s P P + + + + + + + + + + + + d d
+# 1 0 0 0 0 1 0 1 0 1 0 s s s s s P P - - - - - - - - - - - - d d
-:assign Pd2,rs5 EndPacket is iclass=8 & op2127=0x2a & rs5 & op0213=0 & Pd2 & $(END_PACKET) {
+:assign Pd2,rs5 EndPacket is iclass=8 & op2227=0x15 & op21=0 & rs5 & Pd2 & $(END_PACKET) {
Pd2 = Pd2 & rs5:1;
build EndPacket;
}
@@ -3512,7 +3724,7 @@ define pcodeop asrSat;
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 0 1 1 1 1 0 0 0 i i - i i i i i P P i i i i i i i i i d d d d d
-:assign Rd5,Simm32_2223_1620_0513x EndPacket is iclass=7 & op2427=8 & op21=0 & Rd5 & Simm32_2223_1620_0513x & $(END_PACKET) {
+:assign Rd5,Simm32_2223_1620_0513x EndPacket is iclass=7 & op2427=8 & Rd5 & Simm32_2223_1620_0513x & $(END_PACKET) {
Rd5 = Simm32_2223_1620_0513x;
build EndPacket;
}
@@ -3520,9 +3732,9 @@ define pcodeop asrSat;
# (v2,6) assign -- "Rd32 = Cs32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 1 0 1 0 0 0 0 s s s s s P P + + + + + + + + + d d d d d
+# 0 1 1 0 1 0 1 0 0 0 0 s s s s s P P - - - - - - - - - d d d d d
-:assign Rd5,Cs5 EndPacket is iclass=6 & op2127=0x50 & op0513=0 & Rd5 & Cs5 & $(END_PACKET) {
+:assign Rd5,Cs5 EndPacket is iclass=6 & op2127=0x50 & Rd5 & Cs5 & $(END_PACKET) {
Rd5 = Cs5;
build EndPacket;
}
@@ -3530,9 +3742,9 @@ define pcodeop asrSat;
# (v4,6) assign -- "Rd32 = Gs32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 1 0 1 0 0 0 1 s s s s s P P + + + + + + + + + d d d d d
+# 0 1 1 0 1 0 1 0 0 0 1 s s s s s P P - - - - - - - - - d d d d d
-:assign Rd5,gs5 EndPacket is iclass=6 & op2127=0x51 & op0513=0 & Rd5 & gs5 & $(END_PACKET) {
+:assign Rd5,gs5 EndPacket is iclass=6 & op2127=0x51 & Rd5 & gs5 & $(END_PACKET) {
Rd5 = gs5;
build EndPacket;
}
@@ -3540,9 +3752,9 @@ define pcodeop asrSat;
# (v2,8) assign -- "Rd32 = Ps4"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 0 0 1 + 1 + + + + s s P P + + + + + + + + + d d d d d
+# 1 0 0 0 1 0 0 1 - 1 - - - - s s P P - - - - - - - - - d d d d d
-:assign Rd5,pu1617 EndPacket is iclass=8 & op1827=0x250 & pu1617 & op0513=0 & Rd5 & $(END_PACKET) {
+:assign Rd5,pu1617 EndPacket is iclass=8 & op2427=0x9 & op22=0x1 & pu1617 & Rd5 & $(END_PACKET) {
Rd5 = zext( pu1617 );
build EndPacket;
}
@@ -3552,7 +3764,7 @@ define pcodeop asrSat;
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 0 1 1 1 0 0 0 0 0 1 1 s s s s s P P 0 - - - - - - - - d d d d d
-:assign Rd5,rs5 EndPacket is iclass=7 & op2127=0x03 & op0513=0 & Rd5 & rs5 & $(END_PACKET) {
+:assign Rd5,rs5 EndPacket is iclass=7 & op2127=0x03 & op13=0 & Rd5 & rs5 & $(END_PACKET) {
Rd5 = rs5;
build EndPacket;
}
@@ -3560,9 +3772,9 @@ define pcodeop asrSat;
# (v2,6) assign -- "Rd32 = Ss64"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 1 1 1 0 1 + s s s s s s P P + + + + + + + + + d d d d d
+# 0 1 1 0 1 1 1 0 1 - s s s s s s P P - - - - - - - - - d d d d d
-:assign Rd5,ss6 EndPacket is iclass=6 & op2227=0x3a & op0513=0 & Rd5 & ss6 & $(END_PACKET) {
+:assign Rd5,ss6 EndPacket is iclass=6 & op2327=0x1d & Rd5 & ss6 & $(END_PACKET) {
Rd5 = ss6;
build EndPacket;
}
@@ -3570,9 +3782,9 @@ define pcodeop asrSat;
# (v4,6) assign -- "Rdd32 = Css32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 1 0 0 0 0 0 0 s s s s s P P + + + + + + + + + d d d d d
+# 0 1 1 0 1 0 0 0 0 0 0 s s s s s P P - - - - - - - - - d d d d d
-:assign Rdd5,css5 EndPacket is iclass=6 & op2127=0x40 & op0513=0 & Rdd5 & css5 & $(END_PACKET) {
+:assign Rdd5,css5 EndPacket is iclass=6 & op2127=0x40 & Rdd5 & css5 & $(END_PACKET) {
Rdd5 = css5;
build EndPacket;
}
@@ -3580,9 +3792,9 @@ define pcodeop asrSat;
# (v4,6) assign -- "Rdd32 = Gss32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 1 0 0 0 0 0 1 s s s s s P P + + + + + + + + + d d d d d
+# 0 1 1 0 1 0 0 0 0 0 1 s s s s s P P - - - - - - - - - d d d d d
-:assign Rdd5,gss5 EndPacket is iclass=6 & op2127=0x41 & op0513=0 & Rdd5 & gss5 & $(END_PACKET) {
+:assign Rdd5,gss5 EndPacket is iclass=6 & op2127=0x41 & Rdd5 & gss5 & $(END_PACKET) {
Rdd5 = gss5;
build EndPacket;
}
@@ -3590,9 +3802,9 @@ define pcodeop asrSat;
# (v4,6) assign -- "Rdd32 = Sss64"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 1 1 1 1 + + s s s s s s P P + + + + + + + + + d d d d d
+# 0 1 1 0 1 1 1 1 - - s s s s s s P P - - - - - - - - - d d d d d
-:assign Rdd5,sss6 EndPacket is iclass=6 & op2227=0x3c & op0513=0 & Rdd5 & sss6 & $(END_PACKET) {
+:assign Rdd5,sss6 EndPacket is iclass=6 & op2427=0xf & Rdd5 & sss6 & $(END_PACKET) {
Rdd5 = sss6;
build EndPacket;
}
@@ -3620,9 +3832,9 @@ define pcodeop asrSat;
# (v2,6) assign -- "Sd64 = Rs32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 1 1 1 0 0 + s s s s s P P + + + + + + + + d d d d d d
+# 0 1 1 0 0 1 1 1 0 0 - s s s s s P P - - - - - - - - d d d d d d
-:assign Sd6,rs5 EndPacket is iclass=6 & op2127=0x38 & op0613=0 & Sd6 & rs5 & $(END_PACKET) {
+:assign Sd6,rs5 EndPacket is iclass=6 & op2227=0x1c & Sd6 & rs5 & $(END_PACKET) {
Sd6 = rs5;
build EndPacket;
}
@@ -3630,9 +3842,9 @@ define pcodeop asrSat;
# (v4,6) assign -- "Sdd64 = Rss32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 1 1 0 1 0 + + s s s s s P P + + + + + + + + d d d d d d
+# 0 1 1 0 1 1 0 1 0 - - s s s s s P P - - - - - - - - d d d d d d
-:assign Sdd6,rss5 EndPacket is iclass=6 & op2127=0x68 & op0613=0 & Sdd6 & rss5 & $(END_PACKET) {
+:assign Sdd6,rss5 EndPacket is iclass=6 & op2327=0x1a & Sdd6 & rss5 & $(END_PACKET) {
Sdd6 = rss5;
build EndPacket;
}
@@ -3661,10 +3873,12 @@ define pcodeop asrSat;
build PuCond2122_N13_S23;
build EndPacket;
<>
+ build PuCond2122_N13_S23;
if (ConditionReg == 0) goto ;
rd5_ = Simm32_1619_0512x;
<>
+ build PuCond2122_N13_S23;
if (ConditionReg == 0) goto ;
rd5 = rd5_;
@@ -3673,11 +3887,11 @@ define pcodeop asrSat;
# (v2,10) barrier -- "barrier"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 0 0 0 0 0 0 + + + + + P P + + + + + + + + + + + + + +
+# 1 0 1 0 1 0 0 0 0 0 0 - - - - - P P - - - - - - 0 0 0 - - - - -
define pcodeop barrier;
-:barrier EndPacket is iclass=10 & op2127=0x40 & op1620=0 & op0013=0 & $(END_PACKET) {
+:barrier EndPacket is iclass=10 & op2127=0x40 & op7=0 & op6=0 & op5=0 & $(END_PACKET) {
barrier();
build EndPacket;
}
@@ -3685,9 +3899,9 @@ define pcodeop barrier;
# (v2,8) bitsclr -- "Pd4 = bitsclr ( Rs32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 1 0 1 1 0 0 s s s s s P P i i i i i i + + + + + + d d
+# 1 0 0 0 0 1 0 1 1 0 0 s s s s s P P i i i i i i - - - - - - d d
-:bitsclr Pd2,rs5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x2c & op0207=0 & rs5 & Uimm8_0813 & Pd2 & $(END_PACKET) {
+:bitsclr Pd2,rs5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x2c & rs5 & Uimm8_0813 & Pd2 & $(END_PACKET) {
isClr:1 = (rs5 & zext(Uimm8_0813)) == 0;
Pd2 = Pd2 & (isClr * 0xff);
build EndPacket;
@@ -3696,9 +3910,9 @@ define pcodeop barrier;
# (v4,8) bitsclr -- "Pd4 = ! bitsclr ( Rs32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 1 0 1 1 0 1 s s s s s P P i i i i i i + + + + + + d d
+# 1 0 0 0 0 1 0 1 1 0 1 s s s s s P P i i i i i i - - - - - - d d
-:bitsclr! Pd2,rs5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x2d & op0207=0 & rs5 & Uimm8_0813 & Pd2 & $(END_PACKET) {
+:bitsclr! Pd2,rs5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x2d & rs5 & Uimm8_0813 & Pd2 & $(END_PACKET) {
notClr:1 = (rs5 & zext(Uimm8_0813)) != 0;
Pd2 = Pd2 & (notClr * 0xff);
build EndPacket;
@@ -3707,9 +3921,9 @@ define pcodeop barrier;
# (v2,12) bitsclr -- "Pd4 = bitsclr ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 1 1 1 1 0 0 s s s s s P P + t t t t t + + + + + + d d
+# 1 1 0 0 0 1 1 1 1 0 0 s s s s s P P - t t t t t - - - - - - d d
-:bitsclr Pd2,rs5,rt5 EndPacket is iclass=12 & op2127=0x3c & op13=0 & op0207=0 & rs5 & rt5 & Pd2 & $(END_PACKET) {
+:bitsclr Pd2,rs5,rt5 EndPacket is iclass=12 & op2127=0x3c & rs5 & rt5 & Pd2 & $(END_PACKET) {
isClr:1 = (rs5 & rt5) == 0;
Pd2 = Pd2 & (isClr * 0xff);
build EndPacket;
@@ -3718,9 +3932,9 @@ define pcodeop barrier;
# (v4,12) bitsclr -- "Pd4 = ! bitsclr ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 1 1 1 1 0 1 s s s s s P P + t t t t t + + + + + + d d
+# 1 1 0 0 0 1 1 1 1 0 1 s s s s s P P - t t t t t - - - - - - d d
-:bitsclr! Pd2,rs5,rt5 EndPacket is iclass=12 & op2127=0x3d & op13=0 & op0207=0 & rs5 & rt5 & Pd2 & $(END_PACKET) {
+:bitsclr! Pd2,rs5,rt5 EndPacket is iclass=12 & op2127=0x3d & rs5 & rt5 & Pd2 & $(END_PACKET) {
notClr:1 = (rs5 & rt5) != 0;
Pd2 = Pd2 & (notClr * 0xff);
build EndPacket;
@@ -3729,9 +3943,9 @@ define pcodeop barrier;
# (v4,8) bitsplit -- "Rdd32 = bitsplit ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 0 0 0 1 1 0 s s s s s P P 0 i i i i i 1 0 + d d d d d
+# 1 0 0 0 1 0 0 0 1 1 0 s s s s s P P 0 i i i i i 1 0 - d d d d d
-:bitsplit Rdd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x46 & op13=0 & op0507=4 & Rdd5 & rdd5h_ & rd5_ & rs5 & Uimm8_0812 & $(END_PACKET) {
+:bitsplit Rdd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x46 & op13=0 & op0607=2 & Rdd5 & rdd5h_ & rd5_ & rs5 & Uimm8_0812 & $(END_PACKET) {
build Rdd5; # build Rdd5 and assign hi/lo words separately to aid analysis
rdd5h_ = rs5 >> Uimm8_0812;
mask:4 = ~(-1 << Uimm8_0812);
@@ -3742,9 +3956,9 @@ define pcodeop barrier;
# (v4,13) bitsplit -- "Rdd32 = bitsplit ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 1 0 0 + + 1 s s s s s P P + t t t t t + + + d d d d d
+# 1 1 0 1 0 1 0 0 - - 1 s s s s s P P - t t t t t - - - d d d d d
-:bitsplit Rdd5,rs5,rt5 EndPacket is iclass=13 & op2127=0x21 & op13=0 & op0507=0 & Rdd5 & rdd5h_ & rd5_ & rs5 & rt5 & $(END_PACKET) {
+:bitsplit Rdd5,rs5,rt5 EndPacket is iclass=13 & op2427=0x4 & op21=0x1 & Rdd5 & rdd5h_ & rd5_ & rs5 & rt5 & $(END_PACKET) {
build Rdd5; # build Rdd5 and assign hi/lo words separately to aid analysis
cnt:4 = rt5 & 0x1f;
rdd5h_ = rs5 >> cnt;
@@ -3756,9 +3970,9 @@ define pcodeop barrier;
# (v2,12) bitsset -- "Pd4 = bitsset ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 1 1 1 0 1 0 s s s s s P P + t t t t t + + + + + + d d
+# 1 1 0 0 0 1 1 1 0 1 0 s s s s s P P - t t t t t - - - - - - d d
-:bitsset Pd2,rs5,rt5 EndPacket is iclass=12 & op2127=0x3a & op13=0 & op0207=0 & rs5 & rt5 & Pd2 & $(END_PACKET) {
+:bitsset Pd2,rs5,rt5 EndPacket is iclass=12 & op2127=0x3a & rs5 & rt5 & Pd2 & $(END_PACKET) {
isSet:1 = (rs5 & rt5) == rt5;
Pd2 = Pd2 & (isSet * 0xff);
build EndPacket;
@@ -3767,9 +3981,9 @@ define pcodeop barrier;
# (v4,12) bitsset -- "Pd4 = ! bitsset ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 1 1 1 0 1 1 s s s s s P P + t t t t t + + + + + + d d
+# 1 1 0 0 0 1 1 1 0 1 1 s s s s s P P - t t t t t - - - - - - d d
-:bitsset! Pd2,rs5,rt5 EndPacket is iclass=12 & op2127=0x3b & op13=0 & op0207=0 & rs5 & rt5 & Pd2 & $(END_PACKET) {
+:bitsset! Pd2,rs5,rt5 EndPacket is iclass=12 & op2127=0x3b & rs5 & rt5 & Pd2 & $(END_PACKET) {
notSet:1 = (rs5 & rt5) != rt5;
Pd2 = Pd2 & (notSet * 0xff);
build EndPacket;
@@ -3778,13 +3992,12 @@ define pcodeop barrier;
# (v4,13) boundscheck -- "Pd4 = boundscheck ( Rss32 , Rtt32 ) :raw :hi"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 0 1 0 0 + + s s s s s P P 1 t t t t t 1 0 1 + + + d d
+# 1 1 0 1 0 0 1 0 0 - - s s s s s P P 1 t t t t t 1 0 1 - - - d d
-:boundscheck":raw:hi" Pd2,rss5,rtt5 EndPacket is iclass=13 & op2127=0x10 & op13=1 & op0207=0x28 & rss5 & rtt5 & Pd2 & $(END_PACKET) {
+:boundscheck":raw:hi" Pd2,rss5,rtt5 EndPacket is iclass=13 & op2327=0x4 & op13=1 & op0507=0x5 & rss5 & rtt5 & Pd2 & $(END_PACKET) {
upper:4 = rtt5(4);
lower:4 = rtt5:4;
src:4 = rss5(4);
- # TODO: unclear if comparison should be signed or unsigned
bool:1 = (src >= lower) && (src < upper);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -3793,13 +4006,12 @@ define pcodeop barrier;
# (v4,13) boundscheck -- "Pd4 = boundscheck ( Rss32 , Rtt32 ) :raw :lo"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 0 1 0 0 + + s s s s s P P 1 t t t t t 1 0 0 + + + d d
+# 1 1 0 1 0 0 1 0 0 - - s s s s s P P 1 t t t t t 1 0 0 - - - d d
-:boundscheck":raw:lo" Pd2,rss5,rtt5 EndPacket is iclass=13 & op2127=0x10 & op13=1 & op0207=0x20 & rss5 & rtt5 & Pd2 & $(END_PACKET) {
+:boundscheck":raw:lo" Pd2,rss5,rtt5 EndPacket is iclass=13 & op2327=0x4 & op13=1 & op0507=0x4 & rss5 & rtt5 & Pd2 & $(END_PACKET) {
upper:4 = rtt5(4);
lower:4 = rtt5:4;
src:4 = rss5:4;
- # TODO: unclear if comparison should be signed or unsigned
bool:1 = (src >= lower) && (src < upper);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -3808,9 +4020,9 @@ define pcodeop barrier;
# (v2,8) brev -- "Rd32 = brev ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 0 0 0 1 0 s s s s s P P + + + + + + 1 1 0 d d d d d
+# 1 0 0 0 1 1 0 0 0 1 0 s s s s s P P - - - - - - 1 1 0 d d d d d
-:brev Rd5,rs5 EndPacket is iclass=8 & op2127=0x62 & op0513=0x06 & Rd5 & rs5 & $(END_PACKET) {
+:brev Rd5,rs5 EndPacket is iclass=8 & op2127=0x62 & op0507=0x6 & Rd5 & rs5 & $(END_PACKET) {
Rd5 = bitReverse(rs5);
build EndPacket;
}
@@ -3818,9 +4030,9 @@ define pcodeop barrier;
# (v4,8) brev -- "Rdd32 = brev ( Rss32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 0 0 1 1 + s s s s s P P + + + + + + 1 1 0 d d d d d
+# 1 0 0 0 0 0 0 0 1 1 - s s s s s P P - - - - - - 1 1 0 d d d d d
-:brev Rdd5,rss5 EndPacket is iclass=8 & op2127=0x06 & op0513=0x06 & Rdd5 & rss5 & $(END_PACKET) {
+:brev Rdd5,rss5 EndPacket is iclass=8 & op2227=0x3 & op0507=0x6 & Rdd5 & rss5 & $(END_PACKET) {
Rdd5 = bitReverse(rss5);
build EndPacket;
}
@@ -3852,17 +4064,18 @@ define pcodeop brkpt;
# (v2,5) call -- "if ( Pu4 ) call #r15:2x"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 1 1 0 1 i i 0 i i i i i P P i 0 0 + u u i i i i i i i +
+# 0 1 0 1 1 1 0 1 i i 0 i i i i i P P i 0 0 - u u i i i i i i i -
#
# (v2,5) call -- "if ( ! Pu4 ) call #r15:2x"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 1 1 0 1 i i 1 i i i i i P P i 0 0 + u u i i i i i i i +
+# 0 1 0 1 1 1 0 1 i i 1 i i i i i P P i - 0 - u u i i i i i i i -
-:call^FlowCondUU RelDest15x EndPacket is iclass=5 & op2427=0xd & op1112=0 & op10=0 & op0=0 & FlowCondUU & RelDest15x & $(END_PACKET) {
+:call^FlowCondUU RelDest15x EndPacket is iclass=5 & op2427=0xd & op11=0 & FlowCondUU & RelDest15x & $(END_PACKET) {
build FlowCondUU;
build EndPacket;
<>
+ build FlowCondUU;
if (ConditionReg == 0) goto ;
LR = ReturnAddr;
call RelDest15x;
@@ -3872,9 +4085,9 @@ define pcodeop brkpt;
# (v2,5) callr -- "callr Rs32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 0 0 0 0 1 0 1 s s s s s P P + + + + + + + + + + + + + +
+# 0 1 0 1 0 0 0 0 1 0 1 s s s s s P P - - - - - - - - - - - - - -
-:callr rs5 EndPacket is iclass=5 & op2127=0x05 & op0013=0 & rs5 & $(END_PACKET) {
+:callr rs5 EndPacket is iclass=5 & op2127=0x05 & rs5 & $(END_PACKET) {
dest:4 = rs5;
build EndPacket;
<>
@@ -3885,9 +4098,14 @@ define pcodeop brkpt;
# callrh -- "callrh Rs32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 0 0 0 0 1 1 0 s s s s s P P + + + + + + + + + + + + + +
+# 0 1 0 1 0 0 0 0 1 1 0 s s s s s P P - - - - - - - - - - - - - -
-:callrh rs5 EndPacket is iclass=5 & op2127=0x06 & op0013=0 & rs5 & $(END_PACKET) {
+# (v73,5) callrh -- "callrh ( Rs32 )"
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# 0 1 0 1 0 0 0 0 1 1 0 s s s s s P P - - - - - - - - - - - - - -
+
+:callrh rs5 EndPacket is iclass=5 & op2127=0x06 & rs5 & $(END_PACKET) {
dest:4 = rs5;
build EndPacket;
<>
@@ -3898,18 +4116,19 @@ define pcodeop brkpt;
# (v2,5) callr -- "if ( Pu4 ) callr Rs32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 0 0 0 1 0 0 0 s s s s s P P + + + + u u + + + + + + + +
+# 0 1 0 1 0 0 0 1 0 0 0 s s s s s P P - - - - u u - - - - - - - -
#
# (v2,5) callr -- "if ( ! Pu4 ) callr Rs32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 0 0 0 1 0 0 1 s s s s s P P + + + + u u + + + + + + + +
+# 0 1 0 1 0 0 0 1 0 0 1 s s s s s P P - - - - u u - - - - - - - -
-:callr^FlowCondUU rs5 EndPacket is iclass=5 & op2227=0x04 & op1013=0 & op0007=0 & rs5 & FlowCondUU & $(END_PACKET) {
+:callr^FlowCondUU rs5 EndPacket is iclass=5 & op2227=0x04 & rs5 & FlowCondUU & $(END_PACKET) {
dest:4 = rs5;
build FlowCondUU;
build EndPacket;
<>
+ build FlowCondUU;
if (ConditionReg == 0) goto ;
LR = ReturnAddr;
call [dest];
@@ -3919,7 +4138,7 @@ define pcodeop brkpt;
# (v2,6) ciad -- "ciad ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 1 0 0 0 0 0 s s s s s P P + + + + + + 0 1 1 + + + + +
+# 0 1 1 0 0 1 0 0 0 0 0 s s s s s P P - - - - - - 0 1 1 - - - - -
:ciad rs5 EndPacket is iclass=6 & op2127=0x20 & op0507=3 & rs5 & $(END_PACKET) {
S22 = S22 & ~(rs5);
@@ -3929,7 +4148,7 @@ define pcodeop brkpt;
# (v2,8) cl0 -- "Rd32 = cl0 ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 0 0 0 0 0 s s s s s P P + + + + + + 1 0 1 d d d d d
+# 1 0 0 0 1 1 0 0 0 0 0 s s s s s P P - - - - - - 1 0 1 d d d d d
:cl0 Rd5,rs5 EndPacket is iclass=8 & op2127=0x60 & op0507=5 & rs5 & Rd5 & $(END_PACKET) {
Rd5 = lzcount(rs5);
@@ -3939,7 +4158,7 @@ define pcodeop brkpt;
# (v2,8) cl0 -- "Rd32 = cl0 ( Rss32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 0 0 0 0 1 0 s s s s s P P + + + + + + 0 1 0 d d d d d
+# 1 0 0 0 1 0 0 0 0 1 0 s s s s s P P - - - - - - 0 1 0 d d d d d
:cl0 Rd5,rss5 EndPacket is iclass=8 & op2127=0x42 & op0507=2 & rss5 & Rd5 & $(END_PACKET) {
Rd5 = lzcount(rss5);
@@ -3949,7 +4168,7 @@ define pcodeop brkpt;
# (v2,8) cl1 -- "Rd32 = cl1 ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 0 0 0 0 0 s s s s s P P + + + + + + 1 1 0 d d d d d
+# 1 0 0 0 1 1 0 0 0 0 0 s s s s s P P - - - - - - 1 1 0 d d d d d
:cl1 Rd5,rs5 EndPacket is iclass=8 & op2127=0x60 & op0507=6 & rs5 & Rd5 & $(END_PACKET) {
Rd5 = lzcount(~rs5);
@@ -3959,7 +4178,7 @@ define pcodeop brkpt;
# (v2,8) cl1 -- "Rd32 = cl1 ( Rss32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 0 0 0 0 1 0 s s s s s P P + + + + + + 1 0 0 d d d d d
+# 1 0 0 0 1 0 0 0 0 1 0 s s s s s P P - - - - - - 1 0 0 d d d d d
:cl1 Rd5,rss5 EndPacket is iclass=8 & op2127=0x42 & op0507=4 & rss5 & Rd5 & $(END_PACKET) {
Rd5 = lzcount(~rss5);
@@ -3969,7 +4188,7 @@ define pcodeop brkpt;
# (v2,8) clb -- "Rd32 = clb ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 0 0 0 0 0 s s s s s P P + + + + + + 1 0 0 d d d d d
+# 1 0 0 0 1 1 0 0 0 0 0 s s s s s P P - - - - - - 1 0 0 d d d d d
:clb Rd5,rs5 EndPacket is iclass=8 & op2127=0x60 & op0507=4 & rs5 & Rd5 & $(END_PACKET) {
Rd5 = countLeadingBits(rs5);
@@ -3979,7 +4198,7 @@ define pcodeop brkpt;
# (v2,8) clb -- "Rd32 = clb ( Rss32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 0 0 0 0 1 0 s s s s s P P + + + + + + 0 0 0 d d d d d
+# 1 0 0 0 1 0 0 0 0 1 0 s s s s s P P - - - - - - 0 0 0 d d d d d
:clb Rd5,rss5 EndPacket is iclass=8 & op2127=0x42 & op0507=0 & rss5 & Rd5 & $(END_PACKET) {
Rd5 = countLeadingBits(rss5);
@@ -3989,7 +4208,7 @@ define pcodeop brkpt;
# (v66,8) clip -- "Rd32 = clip ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 0 0 0 1 1 0 s s s s s P P 0 + + + + + 1 0 1 d d d d d
+# 1 0 0 0 1 0 0 0 1 1 0 s s s s s P P 0 - - - - - 1 0 1 d d d d d
define pcodeop clip;
:clip Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x46 & op13=0 & op0507=5 & rs5 & Rd5 & Uimm8_0812 & $(END_PACKET) {
@@ -4011,10 +4230,11 @@ define pcodeop clip;
# (v2,12) clrbit -- "Rd32 = clrbit ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x34 & op13=0 & op0507=2 & Rd5 & rs5 & rt5 & $(END_PACKET) {
- mask:4 = 1 << rt5;
+:clrbit Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x1a & op0607=1 & Rd5 & rs5 & rt5 & $(END_PACKET) {
+ shamt:4 = (rt5 << 25) s>> 25;
+ mask:4 = zext(shamt s>= 0) * (1 << shamt);
Rd5 = rs5 & ~mask;
build EndPacket;
}
@@ -4035,7 +4255,7 @@ define pcodeop clip;
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 0 1 1 1 0 1 0 1 0 0 i s s s s s P P i i i i i i i i i 1 0 0 d d
-:cmp.eq! Pd2,rs5,Simm32_21_0513x EndPacket is iclass=7 & op2227=0x14 & op0204=4 & rs5 & Simm32_21_0513x & Pd2 & $(END_PACKET) {
+:"!cmp.eq" Pd2,rs5,Simm32_21_0513x EndPacket is iclass=7 & op2227=0x14 & op0204=4 & rs5 & Simm32_21_0513x & Pd2 & $(END_PACKET) {
bool:1 = (rs5 != Simm32_21_0513x);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4044,9 +4264,9 @@ define pcodeop clip;
# (v2,15) cmp.eq -- "Pd4 = cmp.eq ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 1 0 0 1 0 + 0 0 s s s s s P P + t t t t t + + + 0 0 0 d d
+# 1 1 1 1 0 0 1 0 - 0 0 s s s s s P P - t t t t t - - - 0 0 0 d d
-:cmp.eq Pd2,rs5,rt5 EndPacket is iclass=15 & op2127=0x10 & op13=0 & op0207=0 & rs5 & rt5 & Pd2 & $(END_PACKET) {
+:cmp.eq Pd2,rs5,rt5 EndPacket is iclass=15 & op2427=0x2 & op2122=0x0 & op0204=0 & rs5 & rt5 & Pd2 & $(END_PACKET) {
bool:1 = (rs5 == rt5);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4055,9 +4275,9 @@ define pcodeop clip;
# (v4,15) cmp.eq -- "Pd4 = ! cmp.eq ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 1 0 0 1 0 + 0 0 s s s s s P P + t t t t t + + + 1 0 0 d d
+# 1 1 1 1 0 0 1 0 - 0 0 s s s s s P P - t t t t t - - - 1 0 0 d d
-:cmp.eq! Pd2,rs5,rt5 EndPacket is iclass=15 & op2127=0x10 & op13=0 & op0207=4 & rs5 & rt5 & Pd2 & $(END_PACKET) {
+:"!cmp.eq" Pd2,rs5,rt5 EndPacket is iclass=15 & op2427=0x2 & op2122=0x0 & op0204=4 & rs5 & rt5 & Pd2 & $(END_PACKET) {
bool:1 = (rs5 != rt5);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4066,9 +4286,9 @@ define pcodeop clip;
# (v2,13) cmp.eq -- "Pd4 = cmp.eq ( Rss32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 0 1 0 1 + + s s s s s P P + t t t t t 0 0 + + + + d d
+# 1 1 0 1 0 0 1 0 1 - - s s s s s P P - t t t t t 0 0 - - - - d d
-:cmp.eq Pd2,rss5,rtt5 EndPacket is iclass=13 & op2127=0x14 & op13=0 & op0207=0 & rss5 & rtt5 & Pd2 & $(END_PACKET) {
+:cmp.eq Pd2,rss5,rtt5 EndPacket is iclass=13 & op2327=0x5 & op0607=0 & rss5 & rtt5 & Pd2 & $(END_PACKET) {
bool:1 = (rss5 == rtt5);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4090,7 +4310,7 @@ define pcodeop clip;
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 0 1 1 1 0 1 0 1 0 1 i s s s s s P P i i i i i i i i i 1 0 0 d d
-:cmp.gt! Pd2,rs5,Simm32_21_0513x EndPacket is iclass=7 & op2227=0x15 & op0204=4 & rs5 & Simm32_21_0513x & Pd2 & $(END_PACKET) {
+:"!cmp.gt" Pd2,rs5,Simm32_21_0513x EndPacket is iclass=7 & op2227=0x15 & op0204=4 & rs5 & Simm32_21_0513x & Pd2 & $(END_PACKET) {
bool:1 = (rs5 s<= Simm32_21_0513x);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4099,9 +4319,9 @@ define pcodeop clip;
# (v2,15) cmp.gt -- "Pd4 = cmp.gt ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 1 0 0 1 0 + 1 0 s s s s s P P + t t t t t + + + 0 0 0 d d
+# 1 1 1 1 0 0 1 0 - 1 0 s s s s s P P - t t t t t - - - 0 0 0 d d
-:cmp.gt Pd2,rs5,rt5 EndPacket is iclass=15 & op2127=0x12 & op13=0 & op0207=0 & rs5 & rt5 & Pd2 & $(END_PACKET) {
+:cmp.gt Pd2,rs5,rt5 EndPacket is iclass=15 & op2427=0x2 & op2122=0x2 & op0204=0 & rs5 & rt5 & Pd2 & $(END_PACKET) {
bool:1 = (rs5 s> rt5);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4110,9 +4330,9 @@ define pcodeop clip;
# (v4,15) cmp.gt -- "Pd4 = ! cmp.gt ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 1 0 0 1 0 + 1 0 s s s s s P P + t t t t t + + + 1 0 0 d d
+# 1 1 1 1 0 0 1 0 - 1 0 s s s s s P P - t t t t t - - - 1 0 0 d d
-:cmp.gt! Pd2,rs5,rt5 EndPacket is iclass=15 & op2127=0x12 & op13=0 & op0207=4 & rs5 & rt5 & Pd2 & $(END_PACKET) {
+:"!cmp.gt" Pd2,rs5,rt5 EndPacket is iclass=15 & op2427=0x2 & op2122=0x2 & op0204=4 & rs5 & rt5 & Pd2 & $(END_PACKET) {
bool:1 = (rs5 s<= rt5);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4121,9 +4341,9 @@ define pcodeop clip;
# (v2,13) cmp.gt -- "Pd4 = cmp.gt ( Rss32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 0 1 0 1 + + s s s s s P P + t t t t t 0 1 + + + + d d
+# 1 1 0 1 0 0 1 0 1 - - s s s s s P P - t t t t t 0 1 - - - - d d
-:cmp.gt Pd2,rss5,rtt5 EndPacket is iclass=13 & op2127=0x14 & op13=0 & op0207=0x10 & rss5 & rtt5 & Pd2 & $(END_PACKET) {
+:cmp.gt Pd2,rss5,rtt5 EndPacket is iclass=13 & op2327=0x5 & op0607=0x1 & rss5 & rtt5 & Pd2 & $(END_PACKET) {
bool:1 = (rss5 s> rtt5);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4145,7 +4365,7 @@ define pcodeop clip;
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 0 1 1 1 0 1 0 1 1 0 0 s s s s s P P i i i i i i i i i 1 0 0 d d
-:cmp.gtu! Pd2,rs5,Uimm32_0513x EndPacket is iclass=7 & op2127=0x2c & op0204=4 & rs5 & Uimm32_0513x & Pd2 & $(END_PACKET) {
+:"!cmp.gtu" Pd2,rs5,Uimm32_0513x EndPacket is iclass=7 & op2127=0x2c & op0204=4 & rs5 & Uimm32_0513x & Pd2 & $(END_PACKET) {
bool:1 = (rs5 <= Uimm32_0513x);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4154,9 +4374,9 @@ define pcodeop clip;
# (v2,15) cmp.gtu -- "Pd4 = cmp.gtu ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 1 0 0 1 0 + 1 1 s s s s s P P + t t t t t + + + 0 0 0 d d
+# 1 1 1 1 0 0 1 0 - 1 1 s s s s s P P - t t t t t - - - 0 0 0 d d
-:cmp.gtu Pd2,rs5,rt5 EndPacket is iclass=15 & op2127=0x13 & op0207=0 & rs5 & rt5 & Pd2 & $(END_PACKET) {
+:cmp.gtu Pd2,rs5,rt5 EndPacket is iclass=15 & op2427=0x2 & op2122=0x3 & op0204=0 & rs5 & rt5 & Pd2 & $(END_PACKET) {
bool:1 = (rs5 > rt5);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4165,9 +4385,9 @@ define pcodeop clip;
# (v4,15) cmp.gtu -- "Pd4 = ! cmp.gtu ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 1 0 0 1 0 + 1 1 s s s s s P P + t t t t t + + + 1 0 0 d d
+# 1 1 1 1 0 0 1 0 - 1 1 s s s s s P P - t t t t t - - - 1 0 0 d d
-:cmp.gtu! Pd2,rs5,rt5 EndPacket is iclass=15 & op2127=0x13 & op0207=4 & rs5 & rt5 & Pd2 & $(END_PACKET) {
+:"!cmp.gtu" Pd2,rs5,rt5 EndPacket is iclass=15 & op2427=0x2 & op2122=0x3 & op0204=4 & rs5 & rt5 & Pd2 & $(END_PACKET) {
bool:1 = (rs5 <= rt5);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4176,9 +4396,9 @@ define pcodeop clip;
# (v2,13) cmp.gtu -- "Pd4 = cmp.gtu ( Rss32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 0 1 0 1 + + s s s s s P P + t t t t t 1 0 + + + + d d
+# 1 1 0 1 0 0 1 0 1 0 0 s s s s s P P - t t t t t 1 0 0 - - - d d
-:cmp.gtu Pd2,rss5,rtt5 EndPacket is iclass=13 & op2127=0x14 & op13=0 & op0207=0x20 & rss5 & rtt5 & Pd2 & $(END_PACKET) {
+:cmp.gtu Pd2,rss5,rtt5 EndPacket is iclass=13 & op2327=0x5 & op22=0 & op21=0 & op0607=0x2 & op5=0 & rss5 & rtt5 & Pd2 & $(END_PACKET) {
bool:1 = (rss5 > rtt5);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4187,10 +4407,9 @@ define pcodeop clip;
# (v4,7) cmp.eq -- "Rd32 = cmp.eq ( Rs32 , #s8x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 1 0 0 1 1 + 1 0 s s s s s P P 1 i i i i i i i i d d d d d
+# 0 1 1 1 0 0 1 1 - 1 0 s s s s s P P 1 i i i i i i i i d d d d d
-:cmp.eq Rd5,rs5,Simm32_0512x EndPacket is iclass=7 & op2127=0x1a & op13=1 & rs5 & Rd5 & Simm32_0512x & $(END_PACKET) {
- # TODO: Verify output value - assuming 0/1 boolean
+:cmp.eq Rd5,rs5,Simm32_0512x EndPacket is iclass=7 & op2427=0x3 & op2122=0x2 & op13=1 & rs5 & Rd5 & Simm32_0512x & $(END_PACKET) {
Rd5 = zext(rs5 == Simm32_0512x);
build EndPacket;
}
@@ -4198,10 +4417,9 @@ define pcodeop clip;
# (v4,7) cmp.eq -- "Rd32 = ! cmp.eq ( Rs32 , #s8x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 1 0 0 1 1 + 1 1 s s s s s P P 1 i i i i i i i i d d d d d
+# 0 1 1 1 0 0 1 1 - 1 1 s s s s s P P 1 i i i i i i i i d d d d d
-:cmp.eq! Rd5,rs5,Simm32_0512x EndPacket is iclass=7 & op2127=0x1b & op13=1 & rs5 & Rd5 & Simm32_0512x & $(END_PACKET) {
- # TODO: Verify output value - assuming 0/1 boolean
+:"!cmp.eq" Rd5,rs5,Simm32_0512x EndPacket is iclass=7 & op2427=0x3 & op2122=0x3 & op13=1 & rs5 & Rd5 & Simm32_0512x & $(END_PACKET) {
Rd5 = zext(rs5 != Simm32_0512x);
build EndPacket;
}
@@ -4209,9 +4427,9 @@ define pcodeop clip;
# (v4,15) cmp.eq -- "Rd32 = cmp.eq ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 1 0 0 1 1 0 1 0 s s s s s P P + t t t t t + + + d d d d d
+# 1 1 1 1 0 0 1 1 0 1 0 s s s s s P P - t t t t t - - - d d d d d
-:cmp.eq Rd5,rs5,rt5 EndPacket is iclass=15 & op2127=0x1a & op13=0 & op0507=0 & rs5 & rt5 & Rd5 & $(END_PACKET) {
+:cmp.eq Rd5,rs5,rt5 EndPacket is iclass=15 & op2127=0x1a & rs5 & rt5 & Rd5 & $(END_PACKET) {
Rd5 = zext(rs5 == rt5);
build EndPacket;
}
@@ -4219,9 +4437,9 @@ define pcodeop clip;
# (v4,15) cmp.eq -- "Rd32 = ! cmp.eq ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 1 0 0 1 1 0 1 1 s s s s s P P + t t t t t + + + d d d d d
+# 1 1 1 1 0 0 1 1 0 1 1 s s s s s P P - t t t t t - - - d d d d d
-:cmp.eq! Rd5,rs5,rt5 EndPacket is iclass=15 & op2127=0x1b & op13=0 & op0507=0 & rs5 & rt5 & Rd5 & $(END_PACKET) {
+:"!cmp.eq" Rd5,rs5,rt5 EndPacket is iclass=15 & op2127=0x1b & rs5 & rt5 & Rd5 & $(END_PACKET) {
Rd5 = zext(rs5 != rt5);
build EndPacket;
}
@@ -4229,9 +4447,9 @@ define pcodeop clip;
# (v4,13) cmpb.eq -- "Pd4 = cmpb.eq ( Rs32 , #u8 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 1 1 0 1 + 0 0 s s s s s P P + i i i i i i i i 0 0 + d d
+# 1 1 0 1 1 1 0 1 - 0 0 s s s s s P P - i i i i i i i i 0 0 - d d
-:cmpb.eq Pd2,rs5,Uimm8_0512 EndPacket is iclass=13 & op2127=0x68 & op13=0 & op0204=0 & rs5 & Uimm8_0512 & Pd2 & $(END_PACKET) {
+:cmpb.eq Pd2,rs5,Uimm8_0512 EndPacket is iclass=13 & op2427=0xd & op2122=0x0 & op0304=0 & rs5 & Uimm8_0512 & Pd2 & $(END_PACKET) {
bool:1 = (rs5:1 == Uimm8_0512);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4240,9 +4458,9 @@ define pcodeop clip;
# (v4,12) cmpb.eq -- "Pd4 = cmpb.eq ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 1 1 1 1 1 + s s s s s P P + t t t t t 1 1 0 + + + d d
+# 1 1 0 0 0 1 1 1 1 1 0 s s s s s P P - t t t t t 1 1 0 - - - d d
-:cmpb.eq Pd2,rs5,rt5 EndPacket is iclass=12 & op2127=0x3e & op13=0 & op0207=0x30 & rs5 & rt5 & Pd2 & $(END_PACKET) {
+:cmpb.eq Pd2,rs5,rt5 EndPacket is iclass=12 & op2227=0x1f & op21=0 & op0507=0x6 & rs5 & rt5 & Pd2 & $(END_PACKET) {
bool:1 = (rs5:1 == rt5:1);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4251,9 +4469,9 @@ define pcodeop clip;
# (v4,13) cmpb.gt -- "Pd4 = cmpb.gt ( Rs32 , #s8 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 1 1 0 1 + 0 1 s s s s s P P + i i i i i i i i 0 0 + d d
+# 1 1 0 1 1 1 0 1 - 0 1 s s s s s P P - i i i i i i i i 0 0 - d d
-:cmpb.gt Pd2,rs5,Simm8_0512 EndPacket is iclass=13 & op2127=0x69 & op13=0 & op0204=0 & rs5 & Simm8_0512 & Pd2 & $(END_PACKET) {
+:cmpb.gt Pd2,rs5,Simm8_0512 EndPacket is iclass=13 & op2427=0xd & op2122=0x1 & op0304=0 & rs5 & Simm8_0512 & Pd2 & $(END_PACKET) {
bool:1 = (rs5:1 s> Simm8_0512);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4262,9 +4480,9 @@ define pcodeop clip;
# (v4,12) cmpb.gt -- "Pd4 = cmpb.gt ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 1 1 1 1 1 + s s s s s P P + t t t t t 0 1 0 + + + d d
+# 1 1 0 0 0 1 1 1 1 1 0 s s s s s P P - t t t t t 0 1 0 - - - d d
-:cmpb.gt Pd2,rs5,rt5 EndPacket is iclass=12 & op2127=0x3e & op13=0 & op0207=0x10 & rs5 & rt5 & Pd2 & $(END_PACKET) {
+:cmpb.gt Pd2,rs5,rt5 EndPacket is iclass=12 & op2227=0x1f & op21=0 & op0507=0x2 & rs5 & rt5 & Pd2 & $(END_PACKET) {
bool:1 = (rs5:1 s> rt5:1);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4273,9 +4491,9 @@ define pcodeop clip;
# (v4,13) cmpb.gtu -- "Pd4 = cmpb.gtu ( Rs32 , #u7x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 1 1 0 1 + 1 0 s s s s s P P + 0 i i i i i i i 0 0 + d d
+# 1 1 0 1 1 1 0 1 - 1 0 s s s s s P P - 0 i i i i i i i 0 0 - d d
-:cmpb.gtu Pd2,rs5,Uimm8_0511x EndPacket is iclass=13 & op2127=0x6a & op1213=0 & op0204=0 & rs5 & Uimm8_0511x & Pd2 & $(END_PACKET) {
+:cmpb.gtu Pd2,rs5,Uimm8_0511x EndPacket is iclass=13 & op2427=0xd & op2122=0x2 & op12=0 & op0304=0 & rs5 & Uimm8_0511x & Pd2 & $(END_PACKET) {
bool:1 = (rs5:1 > Uimm8_0511x);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4284,9 +4502,9 @@ define pcodeop clip;
# (v4,12) cmpb.gtu -- "Pd4 = cmpb.gtu ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 1 1 1 1 1 + s s s s s P P + t t t t t 1 1 1 + + + d d
+# 1 1 0 0 0 1 1 1 1 1 0 s s s s s P P - t t t t t 1 1 1 - - - d d
-:cmpb.gtu Pd2,rs5,rt5 EndPacket is iclass=12 & op2127=0x3e & op13=0 & op0207=0x38 & rs5 & rt5 & Pd2 & $(END_PACKET) {
+:cmpb.gtu Pd2,rs5,rt5 EndPacket is iclass=12 & op2227=0x1f & op21=0 & op0507=0x7 & rs5 & rt5 & Pd2 & $(END_PACKET) {
bool:1 = (rs5:1 > rt5:1);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4295,9 +4513,9 @@ define pcodeop clip;
# (v4,13) cmph.eq -- "Pd4 = cmph.eq ( Rs32 , #s8x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 1 1 0 1 + 0 0 s s s s s P P + i i i i i i i i 0 1 + d d
+# 1 1 0 1 1 1 0 1 - 0 0 s s s s s P P - i i i i i i i i 0 1 - d d
-:cmph.eq Pd2,rs5,Simm16_0512x EndPacket is iclass=13 & op2127=0x68 & op13=0 & op0204=2 & rs5 & Simm16_0512x & Pd2 & $(END_PACKET) {
+:cmph.eq Pd2,rs5,Simm16_0512x EndPacket is iclass=13 & op2427=0xd & op2122=0x0 & op0304=1 & rs5 & Simm16_0512x & Pd2 & $(END_PACKET) {
bool:1 = (rs5:2 == Simm16_0512x);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4306,9 +4524,9 @@ define pcodeop clip;
# (v4,12) cmph.eq -- "Pd4 = cmph.eq ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 1 1 1 1 1 + s s s s s P P + t t t t t 0 1 1 + + + d d
+# 1 1 0 0 0 1 1 1 1 1 - s s s s s P P - t t t t t 0 1 1 - - - d d
-:cmph.eq Pd2,rs5,rt5 EndPacket is iclass=12 & op2127=0x3e & op13=0 & op0207=0x18 & rs5 & rt5 & Pd2 & $(END_PACKET) {
+:cmph.eq Pd2,rs5,rt5 EndPacket is iclass=12 & op2227=0x1f & op0507=0x3 & rs5 & rt5 & Pd2 & $(END_PACKET) {
bool:1 = (rs5:2 == rt5:2);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4317,9 +4535,9 @@ define pcodeop clip;
# (v4,13) cmph.gt -- "Pd4 = cmph.gt ( Rs32 , #s8x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 1 1 0 1 + 0 1 s s s s s P P + i i i i i i i i 0 1 + d d
+# 1 1 0 1 1 1 0 1 - 0 1 s s s s s P P - i i i i i i i i 0 1 - d d
-:cmph.gt Pd2,rs5,Simm16_0512x EndPacket is iclass=13 & op2127=0x69 & op13=0 & op0204=2 & rs5 & Simm16_0512x & Pd2 & $(END_PACKET) {
+:cmph.gt Pd2,rs5,Simm16_0512x EndPacket is iclass=13 & op2427=0xd & op2122=0x1 & op0304=1 & rs5 & Simm16_0512x & Pd2 & $(END_PACKET) {
bool:1 = (rs5:2 s> Simm16_0512x);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4328,9 +4546,9 @@ define pcodeop clip;
# (v4,12) cmph.gt -- "Pd4 = cmph.gt ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 1 1 1 1 1 + s s s s s P P + t t t t t 1 0 0 + + + d d
+# 1 1 0 0 0 1 1 1 1 1 - s s s s s P P - t t t t t 1 0 0 - - - d d
-:cmph.gt Pd2,rs5,rt5 EndPacket is iclass=12 & op2127=0x3e & op13=0 & op0207=0x20 & rs5 & rt5 & Pd2 & $(END_PACKET) {
+:cmph.gt Pd2,rs5,rt5 EndPacket is iclass=12 & op2227=0x1f & op0507=0x4 & rs5 & rt5 & Pd2 & $(END_PACKET) {
bool:1 = (rs5:2 s> rt5:2);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4339,9 +4557,9 @@ define pcodeop clip;
# (v4,13) cmph.gtu -- "Pd4 = cmph.gtu ( Rs32 , #u7x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 1 1 0 1 + 1 0 s s s s s P P + 0 i i i i i i i 0 1 + d d
+# 1 1 0 1 1 1 0 1 - 1 0 s s s s s P P - 0 i i i i i i i 0 1 - d d
-:cmph.gtu Pd2,rs5,Uimm16_0511x EndPacket is iclass=13 & op2127=0x6a & op1213=0 & op0204=2 & rs5 & Uimm16_0511x & Pd2 & $(END_PACKET) {
+:cmph.gtu Pd2,rs5,Uimm16_0511x EndPacket is iclass=13 & op2427=0xd & op2122=0x2 & op12=0 & op0304=1 & rs5 & Uimm16_0511x & Pd2 & $(END_PACKET) {
bool:1 = (rs5:2 > Uimm16_0511x);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4350,9 +4568,9 @@ define pcodeop clip;
# (v4,12) cmph.gtu -- "Pd4 = cmph.gtu ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 1 1 1 1 1 + s s s s s P P + t t t t t 1 0 1 + + + d d
+# 1 1 0 0 0 1 1 1 1 1 0 s s s s s P P - t t t t t 1 0 1 - - - d d
-:cmph.gtu Pd2,rs5,rt5 EndPacket is iclass=12 & op2127=0x3e & op13=0 & op0207=0x28 & rs5 & rt5 & Pd2 & $(END_PACKET) {
+:cmph.gtu Pd2,rs5,rt5 EndPacket is iclass=12 & op2227=0x1f & op21=0 & op0507=0x5 & rs5 & rt5 & Pd2 & $(END_PACKET) {
bool:1 = (rs5:2 > rt5:2);
Pd2 = Pd2 & (bool * 0xff);
build EndPacket;
@@ -4361,7 +4579,7 @@ define pcodeop clip;
# (v2,14) cmpy -- "Rd32 = cmpy ( Rs32 , Rt32 ) :<<1 :rnd :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 1 1 0 1 1 0 1 s s s s s P P + t t t t t 1 1 0 d d d d d
+# 1 1 1 0 1 1 0 1 1 0 1 s s s s s P P 0 t t t t t 1 1 0 d d d d d
define pcodeop cmpyX2RndSat;
@@ -4373,7 +4591,7 @@ define pcodeop cmpyX2RndSat;
# (v2,14) cmpy -- "Rd32 = cmpy ( Rs32 , Rt32 ) :rnd :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 1 1 0 1 0 0 1 s s s s s P P + t t t t t 1 1 0 d d d d d
+# 1 1 1 0 1 1 0 1 0 0 1 s s s s s P P 0 t t t t t 1 1 0 d d d d d
define pcodeop cmpyRndSat;
@@ -4385,7 +4603,7 @@ define pcodeop cmpyRndSat;
# (v2,14) cmpy -- "Rd32 = cmpy ( Rs32 , Rt32 * ) :<<1 :rnd :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 1 1 0 1 1 1 1 s s s s s P P + t t t t t 1 1 0 d d d d d
+# 1 1 1 0 1 1 0 1 1 1 1 s s s s s P P 0 t t t t t 1 1 0 d d d d d
:cmpy":<<1:rnd:sat" Rd5,rs5,Rt5Conjugate EndPacket is iclass=14 & op2127=0x6f & op13=0 & op0507=6 & rs5 & Rt5Conjugate & Rd5 & $(END_PACKET) {
Rd5 = cmpyX2RndSat(rs5,Rt5Conjugate);
@@ -4395,7 +4613,7 @@ define pcodeop cmpyRndSat;
# (v2,14) cmpy -- "Rd32 = cmpy ( Rs32 , Rt32 * ) :rnd :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 1 1 0 1 0 1 1 s s s s s P P + t t t t t 1 1 0 d d d d d
+# 1 1 1 0 1 1 0 1 0 1 1 s s s s s P P 0 t t t t t 1 1 0 d d d d d
:cmpy":rnd:sat" Rd5,rs5,Rt5Conjugate EndPacket is iclass=14 & op2127=0x6b & op13=0 & op0507=6 & rs5 & Rt5Conjugate & Rd5 & $(END_PACKET) {
Rd5 = cmpyRndSat(rs5,Rt5Conjugate);
@@ -4405,7 +4623,7 @@ define pcodeop cmpyRndSat;
# (v2,14) cmpy -- "Rdd32 = cmpy ( Rs32 , Rt32 ) :<<1 :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 1 0 1 1 0 0 s s s s s P P + t t t t t 1 1 0 d d d d d
+# 1 1 1 0 0 1 0 1 1 0 0 s s s s s P P 0 t t t t t 1 1 0 d d d d d
define pcodeop cmpyX2Sat;
@@ -4417,7 +4635,7 @@ define pcodeop cmpyX2Sat;
# (v2,14) cmpy -- "Rdd32 = cmpy ( Rs32 , Rt32 ) :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 1 0 1 0 0 0 s s s s s P P + t t t t t 1 1 0 d d d d d
+# 1 1 1 0 0 1 0 1 0 0 0 s s s s s P P 0 t t t t t 1 1 0 d d d d d
define pcodeop cmpySat;
@@ -4429,7 +4647,7 @@ define pcodeop cmpySat;
# (v2,14) cmpy -- "Rdd32 = cmpy ( Rs32 , Rt32 * ) :<<1 :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 1 0 1 1 1 0 s s s s s P P + t t t t t 1 1 0 d d d d d
+# 1 1 1 0 0 1 0 1 1 1 0 s s s s s P P 0 t t t t t 1 1 0 d d d d d
:cmpy":<<1:sat" Rdd5,rs5,Rt5Conjugate EndPacket is iclass=14 & op2127=0x2e & op13=0 & op0507=6 & rs5 & Rt5Conjugate & Rdd5 & $(END_PACKET) {
Rdd5 = cmpyX2Sat(rs5,Rt5Conjugate);
@@ -4439,7 +4657,7 @@ define pcodeop cmpySat;
# (v2,14) cmpy -- "Rdd32 = cmpy ( Rs32 , Rt32 * ) :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 1 0 1 0 1 0 s s s s s P P + t t t t t 1 1 0 d d d d d
+# 1 1 1 0 0 1 0 1 0 1 0 s s s s s P P 0 t t t t t 1 1 0 d d d d d
:cmpy":sat" Rdd5,rs5,Rt5Conjugate EndPacket is iclass=14 & op2127=0x2a & op13=0 & op0507=6 & rs5 & Rt5Conjugate & Rdd5 & $(END_PACKET) {
Rdd5 = cmpySat(rs5,Rt5Conjugate);
@@ -4449,7 +4667,7 @@ define pcodeop cmpySat;
# (v2,14) cmpy -- "Rxx32 += cmpy ( Rs32 , Rt32 ) :<<1 :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 1 1 1 1 0 0 s s s s s P P + t t t t t 1 1 0 x x x x x
+# 1 1 1 0 0 1 1 1 1 0 0 s s s s s P P 0 t t t t t 1 1 0 x x x x x
define pcodeop cmpyX2SatAdd;
@@ -4461,7 +4679,7 @@ define pcodeop cmpyX2SatAdd;
# (v2,14) cmpy -- "Rxx32 += cmpy ( Rs32 , Rt32 ) :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 1 1 1 0 0 0 s s s s s P P + t t t t t 1 1 0 x x x x x
+# 1 1 1 0 0 1 1 1 0 0 0 s s s s s P P 0 t t t t t 1 1 0 x x x x x
define pcodeop cmpySatAdd;
@@ -4473,7 +4691,7 @@ define pcodeop cmpySatAdd;
# (v2,14) cmpy -- "Rxx32 += cmpy ( Rs32 , Rt32 * ) :<<1 :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 1 1 1 1 1 0 s s s s s P P + t t t t t 1 1 0 x x x x x
+# 1 1 1 0 0 1 1 1 1 1 0 s s s s s P P 0 t t t t t 1 1 0 x x x x x
:cmpy+=":<<1:sat" Rdd5,rs5,Rt5Conjugate EndPacket is iclass=14 & op2127=0x3e & op13=0 & op0507=6 & rs5 & Rt5Conjugate & rdd5 & Rdd5 & $(END_PACKET) {
Rdd5 = cmpyX2SatAdd(rs5,Rt5Conjugate,rdd5);
@@ -4483,7 +4701,7 @@ define pcodeop cmpySatAdd;
# (v2,14) cmpy -- "Rxx32 += cmpy ( Rs32 , Rt32 * ) :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 1 1 1 0 1 0 s s s s s P P + t t t t t 1 1 0 x x x x x
+# 1 1 1 0 0 1 1 1 0 1 0 s s s s s P P 0 t t t t t 1 1 0 x x x x x
:cmpy+=":sat" Rdd5,rs5,Rt5Conjugate EndPacket is iclass=14 & op2127=0x3a & op13=0 & op0507=6 & rs5 & Rt5Conjugate & rdd5 & Rdd5 & $(END_PACKET) {
Rdd5 = cmpySatAdd(rs5,Rt5Conjugate,rdd5);
@@ -4493,7 +4711,7 @@ define pcodeop cmpySatAdd;
# (v2,14) cmpy -- "Rxx32 -= cmpy ( Rs32 , Rt32 ) :<<1 :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 1 1 1 1 0 0 s s s s s P P + t t t t t 1 1 1 x x x x x
+# 1 1 1 0 0 1 1 1 1 0 0 s s s s s P P 0 t t t t t 1 1 1 x x x x x
define pcodeop cmpyX2SatSub;
@@ -4505,7 +4723,7 @@ define pcodeop cmpyX2SatSub;
# (v2,14) cmpy -- "Rxx32 -= cmpy ( Rs32 , Rt32 ) :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 1 1 1 0 0 0 s s s s s P P + t t t t t 1 1 1 x x x x x
+# 1 1 1 0 0 1 1 1 0 0 0 s s s s s P P 0 t t t t t 1 1 1 x x x x x
define pcodeop cmpySatSub;
@@ -4517,7 +4735,7 @@ define pcodeop cmpySatSub;
# (v2,14) cmpy -- "Rxx32 -= cmpy ( Rs32 , Rt32 * ) :<<1 :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 1 1 1 1 1 0 s s s s s P P + t t t t t 1 1 1 x x x x x
+# 1 1 1 0 0 1 1 1 1 1 0 s s s s s P P 0 t t t t t 1 1 1 x x x x x
:cmpy-=":<<1:sat" Rdd5,rs5,Rt5Conjugate EndPacket is iclass=14 & op2127=0x3e & op13=0 & op0507=7 & rs5 & Rt5Conjugate & rdd5 & Rdd5 & $(END_PACKET) {
Rdd5 = cmpyX2SatSub(rs5,Rt5Conjugate,rdd5);
@@ -4527,7 +4745,7 @@ define pcodeop cmpySatSub;
# (v2,14) cmpy -- "Rxx32 -= cmpy ( Rs32 , Rt32 * ) :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 1 1 1 0 1 0 s s s s s P P + t t t t t 1 1 1 x x x x x
+# 1 1 1 0 0 1 1 1 0 1 0 s s s s s P P 0 t t t t t 1 1 1 x x x x x
:cmpy-=":sat" Rdd5,rs5,Rt5Conjugate EndPacket is iclass=14 & op2127=0x3a & op13=0 & op0507=7 & rs5 & Rt5Conjugate & rdd5 & Rdd5 & $(END_PACKET) {
Rdd5 = cmpySatSub(rs5,Rt5Conjugate,rdd5);
@@ -4537,7 +4755,7 @@ define pcodeop cmpySatSub;
# (v2,14) cmpyi -- "Rdd32 = cmpyi ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 1 0 1 0 0 0 s s s s s P P + t t t t t 0 0 1 d d d d d
+# 1 1 1 0 0 1 0 1 0 0 0 s s s s s P P 0 t t t t t 0 0 1 d d d d d
:cmpyi Rdd5,rs5,rt5 EndPacket is iclass=14 & op2127=0x28 & op13=0 & op0507=1 & rs5 & rt5 & Rdd5 & $(END_PACKET) {
# Rdd = (Rs.h[1] * Rt.h[0]) - (Rs.h[0] * Rt.h[1]);
@@ -4554,7 +4772,7 @@ define pcodeop cmpySatSub;
# (v2,14) cmpyi -- "Rxx32 += cmpyi ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 1 1 1 0 0 0 s s s s s P P + t t t t t 0 0 1 x x x x x
+# 1 1 1 0 0 1 1 1 0 0 0 s s s s s P P 0 t t t t t 0 0 1 x x x x x
:cmpyi+= Rdd5,rs5,rt5 EndPacket is iclass=14 & op2127=0x38 & op13=0 & op0507=1 & rs5 & rt5 & Rdd5 & rdd5 & $(END_PACKET) {
# Rdd = (Rs.h[1] * Rt.h[0]) - (Rs.h[0] * Rt.h[1]);
@@ -4614,6 +4832,7 @@ define pcodeop cmpyiwX2Sat;
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 1 1 0 1 0 0 1 1 0 0 s s s s s P P 0 t t t t t 1 0 0 d d d d d
+
define pcodeop cmpyiwX2RndSat;
:cmpyiw":<<1:rnd:sat" Rdd5,rss5,rtt5 EndPacket is iclass=0xe & op2127=0x4c & op13=0 & op0507=4 & rss5 & rtt5 & Rdd5 & $(END_PACKET) {
@@ -4631,12 +4850,14 @@ define pcodeop cmpyiwX2RndSat;
build EndPacket;
}
-define pcodeop cmpyiwAdd;
# (v4,12) cmpyiw -- "Rxx32 += cmpyiw ( Rss32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 1 1 0 1 0 1 0 0 1 1 s s s s s P P 0 t t t t t 0 1 0 x x x x x
-:cmpyiw Rdd5,rss5,rtt5 EndPacket is iclass=0xe & op2127=0x53 & op13=0 & op0507=2 & rss5 & rtt5 & Rdd5 & rdd5 & $(END_PACKET) {
+
+define pcodeop cmpyiwAdd;
+
+:cmpyiw+= Rdd5,rss5,rtt5 EndPacket is iclass=0xe & op2127=0x53 & op13=0 & op0507=2 & rss5 & rtt5 & Rdd5 & rdd5 & $(END_PACKET) {
Rdd5 = cmpyiwAdd(rdd5,rss5,rtt5);
build EndPacket;
}
@@ -4646,7 +4867,7 @@ define pcodeop cmpyiwAdd;
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 1 1 0 1 0 1 0 0 1 0 s s s s s P P 0 t t t t t 1 1 0 x x x x x
-:cmpyiw Rdd5,rss5,Rtt5Conjugate^"*" EndPacket is iclass=0xe & op2127=0x52 & op13=0 & op0507=6 & rss5 & Rtt5Conjugate & Rdd5 & rdd5 & $(END_PACKET) {
+:cmpyiw+= Rdd5,rss5,Rtt5Conjugate^"*" EndPacket is iclass=0xe & op2127=0x52 & op13=0 & op0507=6 & rss5 & Rtt5Conjugate & Rdd5 & rdd5 & $(END_PACKET) {
Rdd5 = cmpyiwAdd(rdd5,rss5,Rtt5Conjugate);
build EndPacket;
}
@@ -4658,7 +4879,7 @@ define pcodeop cmpyiwAdd;
define pcodeop cmpyiwhX2RndSat;
-:cmpyiwh":<<1:rnd:sat" Rd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x28 & op13=0 & op0507=4 & rss5 & rt5 & Rd5 & rd5 & $(END_PACKET) {
+:cmpyiwh":<<1:rnd:sat" Rd5,rss5,rt5 EndPacket is iclass=12 & op2427=0x5 & op0507=4 & rss5 & rt5 & Rd5 & rd5 & $(END_PACKET) {
Rd5 = cmpyiwhX2RndSat(rd5,rss5,rt5);
build EndPacket;
}
@@ -4666,9 +4887,9 @@ define pcodeop cmpyiwhX2RndSat;
# (v5,12) cmpyiwh -- "Rd32 = cmpyiwh ( Rss32 , Rt32 * ) :<<1 :rnd :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 1 0 1 + + + s s s s s P P + t t t t t 1 0 1 d d d d d
+# 1 1 0 0 0 1 0 1 - - - s s s s s P P - t t t t t 1 0 1 d d d d d
-:cmpyiwh":<<1:rnd:sat" Rd5,rss5,Rt5Conjugate EndPacket is iclass=12 & op2127=0x28 & op13=0 & op0507=5 & rss5 & Rt5Conjugate & Rd5 & rd5 & $(END_PACKET) {
+:cmpyiwh":<<1:rnd:sat" Rd5,rss5,Rt5Conjugate EndPacket is iclass=12 & op2427=0x5 & op0507=5 & rss5 & Rt5Conjugate & Rd5 & rd5 & $(END_PACKET) {
Rd5 = cmpyiwhX2RndSat(rd5,rss5,Rt5Conjugate);
build EndPacket;
}
@@ -4676,7 +4897,7 @@ define pcodeop cmpyiwhX2RndSat;
# (v2,14) cmpyr -- "Rdd32 = cmpyr ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 1 0 1 0 0 0 s s s s s P P + t t t t t 0 1 0 d d d d d
+# 1 1 1 0 0 1 0 1 0 0 0 s s s s s P P 0 t t t t t 0 1 0 d d d d d
:cmpyr Rdd5,rs5,rt5 EndPacket is iclass=14 & op2127=0x28 & op13=0 & op0507=2 & rs5 & rt5 & Rdd5 & $(END_PACKET) {
# Rdd = (Rs.h[0] * Rt.h[0]) - (Rs.h[1] * Rt.h[1]);
@@ -4693,7 +4914,7 @@ define pcodeop cmpyiwhX2RndSat;
# (v2,14) cmpyr -- "Rxx32 += cmpyr ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 0 0 1 1 1 0 0 0 s s s s s P P + t t t t t 0 1 0 x x x x x
+# 1 1 1 0 0 1 1 1 0 0 0 s s s s s P P 0 t t t t t 0 1 0 x x x x x
:cmpyr+= Rdd5,rs5,rt5 EndPacket is iclass=14 & op2127=0x38 & op13=0 & op0507=2 & rs5 & rt5 & rdd5 & Rdd5 & $(END_PACKET) {
# Rdd += (Rs.h[0] * Rt.h[0]) - (Rs.h[1] * Rt.h[1]);
@@ -4707,18 +4928,19 @@ define pcodeop cmpyiwhX2RndSat;
build EndPacket;
}
-define pcodeop cmpyrw;
-# cmpyrw -- "Rdd32 = cmpyrw ( Rss32 , Rtt32 )"
+# (v2,14) cmpyrw -- "Rdd32 = cmpyrw ( Rss32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 1 1 0 1 0 0 0 1 0 0 s s s s s P P 0 t t t t t 0 1 0 d d d d d
+define pcodeop cmpyrw;
+
:cmpyrw Rdd5,rss5,rtt5 EndPacket is iclass=0xe & op2127=0x44 & op13=0 & op0507=2 & rss5 & rtt5 & Rdd5 & $(END_PACKET) {
Rdd5 = cmpyrw(rss5,rtt5);
build EndPacket;
}
-# cmpyrw -- "Rdd32 = cmpyrw ( Rss32 , Rtt32* )"
+# (v2,14) cmpyrw -- "Rdd32 = cmpyrw ( Rss32 , Rtt32* )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 1 1 0 1 0 0 0 1 1 0 s s s s s P P 0 t t t t t 0 1 0 d d d d d
@@ -4728,7 +4950,7 @@ define pcodeop cmpyrw;
build EndPacket;
}
-# cmpyrw -- "Rdd32 = cmpyrw ( Rss32 , Rtt32 ) :<<1 :sat"
+# (v2,14) cmpyrw -- "Rdd32 = cmpyrw ( Rss32 , Rtt32 ) :<<1 :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 1 1 0 1 0 0 1 0 1 0 s s s s s P P 0 t t t t t 0 0 0 d d d d d
@@ -4739,7 +4961,7 @@ define pcodeop cmpyrwX2Sat;
build EndPacket;
}
-# cmpyrw -- "Rdd32 = cmpyrw ( Rss32 , Rtt32* ) :<<1 :sat"
+# (v2,14) cmpyrw -- "Rdd32 = cmpyrw ( Rss32 , Rtt32* ) :<<1 :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 1 1 0 1 0 0 1 0 1 1 s s s s s P P 0 t t t t t 0 0 0 d d d d d
@@ -4749,7 +4971,7 @@ define pcodeop cmpyrwX2Sat;
build EndPacket;
}
-# cmpyrw -- "Rdd32 = cmpyrw ( Rss32 , Rtt32 ) :<<1 :rnd :sat"
+# (v2,14) cmpyrw -- "Rdd32 = cmpyrw ( Rss32 , Rtt32 ) :<<1 :rnd :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 1 1 0 1 0 0 1 1 1 0 s s s s s P P 0 t t t t t 0 0 0 d d d d d
@@ -4760,7 +4982,7 @@ define pcodeop cmpyrwX2RndSat;
build EndPacket;
}
-# cmpyrw -- "Rdd32 = cmpyrw ( Rss32 , Rtt32* ) :<<1 :rnd :sat"
+# (v2,14) cmpyrw -- "Rdd32 = cmpyrw ( Rss32 , Rtt32* ) :<<1 :rnd :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 1 1 0 1 0 0 1 1 1 1 s s s s s P P 0 t t t t t 0 0 0 d d d d d
@@ -4770,23 +4992,23 @@ define pcodeop cmpyrwX2RndSat;
build EndPacket;
}
-# cmpyrw -- "Rxx32 += cmpyrw ( Rss32 , Rtt32 )"
+# (v2,14) cmpyrw -- "Rxx32 += cmpyrw ( Rss32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 1 1 0 1 0 1 0 1 0 0 s s s s s P P 0 t t t t t 0 1 0 x x x x x
define pcodeop cmpyrwAdd;
-:cmpyrw Rdd5,rss5,rtt5 EndPacket is iclass=0xe & op2127=0x54 & op13=0 & op0507=2 & rss5 & rtt5 & Rdd5 & rdd5 & $(END_PACKET) {
+:cmpyrw+= Rdd5,rss5,rtt5 EndPacket is iclass=0xe & op2127=0x54 & op13=0 & op0507=2 & rss5 & rtt5 & Rdd5 & rdd5 & $(END_PACKET) {
Rdd5 = cmpyrwAdd(rdd5,rss5,rtt5);
build EndPacket;
}
-# cmpyrw -- "Rxx32 += cmpyrw ( Rss32 , Rtt32* )"
+# (v2,14) cmpyrw -- "Rxx32 += cmpyrw ( Rss32 , Rtt32* )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 1 1 0 1 0 1 0 1 1 0 s s s s s P P 0 t t t t t 0 1 0 x x x x x
-:cmpyrw Rdd5,rss5,Rtt5Conjugate^"*" EndPacket is iclass=0xe & op2127=0x56 & op13=0 & op0507=2 & rss5 & Rtt5Conjugate & Rdd5 & rdd5 & $(END_PACKET) {
+:cmpyrw+= Rdd5,rss5,Rtt5Conjugate^"*" EndPacket is iclass=0xe & op2127=0x56 & op13=0 & op0507=2 & rss5 & Rtt5Conjugate & Rdd5 & rdd5 & $(END_PACKET) {
Rdd5 = cmpyrwAdd(rdd5,rss5,Rtt5Conjugate);
build EndPacket;
}
@@ -4795,19 +5017,19 @@ define pcodeop cmpyrwAdd;
# (v4,12) cmpyrwh -- "Rd32 = cmpyrwh ( Rss32 , Rt32 ) :<<1 :rnd :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 1 0 1 + + + s s s s s P P + t t t t t 1 1 0 d d d d d
+# 1 1 0 0 0 1 0 1 - - - s s s s s P P - t t t t t 1 1 0 d d d d d
define pcodeop cmpyrwhX2RndSat;
-:cmpyrwh":<<1:rnd:sat" Rd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x28 & op13=0 & op0507=6 & rss5 & rt5 & Rd5 & rd5 & $(END_PACKET) {
+:cmpyrwh":<<1:rnd:sat" Rd5,rss5,rt5 EndPacket is iclass=12 & op2427=0x5 & op0507=6 & rss5 & rt5 & Rd5 & rd5 & $(END_PACKET) {
Rd5 = cmpyrwhX2RndSat(rd5,rss5,rt5);
build EndPacket;
}
# (v5,12) cmpyrwh -- "Rd32 = cmpyrwh ( Rss32 , Rt32 * ) :<<1 :rnd :sat"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 1 0 1 + + + s s s s s P P + t t t t t 1 1 1 d d d d d
+# 1 1 0 0 0 1 0 1 - - - s s s s s P P - t t t t t 1 1 1 d d d d d
-:cmpyrwh":<<1:rnd:sat" Rd5,rss5,Rt5Conjugate EndPacket is iclass=12 & op2127=0x28 & op13=0 & op0507=7 & rss5 & Rt5Conjugate & Rd5 & rd5 & $(END_PACKET) {
+:cmpyrwh":<<1:rnd:sat" Rd5,rss5,Rt5Conjugate EndPacket is iclass=12 & op2427=0x5 & op0507=7 & rss5 & Rt5Conjugate & Rd5 & rd5 & $(END_PACKET) {
Rd5 = cmpyrwhX2RndSat(rd5,rss5,Rt5Conjugate);
build EndPacket;
}
@@ -4817,7 +5039,7 @@ define pcodeop cmpyrwhX2RndSat;
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 1 1 1 0 0 1 1 1 0 0 s s s s s P P - t t t t t - - - d d d d d
-:combine Rd5,rt5H,rs5H EndPacket is iclass=0xf & op2127=0x1c & op13=0 & op0507=0 & Rd5 & rt5H & rs5H & $(END_PACKET) {
+:combine Rd5,rt5H,rs5H EndPacket is iclass=0xf & op2127=0x1c & Rd5 & rt5H & rs5H & $(END_PACKET) {
Rd5 = (zext(rt5H) << 16) + zext(rs5H);
build EndPacket;
}
@@ -4827,7 +5049,7 @@ define pcodeop cmpyrwhX2RndSat;
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 1 1 1 0 0 1 1 1 0 1 s s s s s P P - t t t t t - - - d d d d d
-:combine Rd5,rt5H,rs5L EndPacket is iclass=0xf & op2127=0x1d & op13=0 & op0507=0 & Rd5 & rt5H & rs5L & $(END_PACKET) {
+:combine Rd5,rt5H,rs5L EndPacket is iclass=0xf & op2127=0x1d & Rd5 & rt5H & rs5L & $(END_PACKET) {
Rd5 = (zext(rt5H) << 16) + zext(rs5L);
build EndPacket;
}
@@ -4837,7 +5059,7 @@ define pcodeop cmpyrwhX2RndSat;
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 1 1 1 0 0 1 1 1 1 0 s s s s s P P - t t t t t - - - d d d d d
-:combine Rd5,rt5L,rs5H EndPacket is iclass=0xf & op2127=0x1e & op13=0 & op0507=0 & Rd5 & rt5L & rs5H & $(END_PACKET) {
+:combine Rd5,rt5L,rs5H EndPacket is iclass=0xf & op2127=0x1e & Rd5 & rt5L & rs5H & $(END_PACKET) {
Rd5 = (zext(rt5L) << 16) + zext(rs5H);
build EndPacket;
}
@@ -4847,7 +5069,7 @@ define pcodeop cmpyrwhX2RndSat;
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 1 1 1 0 0 1 1 1 1 1 s s s s s P P - t t t t t - - - d d d d d
-:combine Rd5,rt5L,rs5L EndPacket is iclass=0xf & op2127=0x1f & op13=0 & op0507=0 & Rd5 & rt5L & rs5L & $(END_PACKET) {
+:combine Rd5,rt5L,rs5L EndPacket is iclass=0xf & op2127=0x1f & Rd5 & rt5L & rs5L & $(END_PACKET) {
Rd5 = (zext(rt5L) << 16) + zext(rs5L);
build EndPacket;
}
@@ -4855,9 +5077,9 @@ define pcodeop cmpyrwhX2RndSat;
# (v4,7) combine -- "Rdd32 = combine ( #s8 , #U6x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 1 1 1 0 0 1 + + I I I I I P P I i i i i i i i i d d d d d
+# 0 1 1 1 1 1 0 0 1 - - I I I I I P P I i i i i i i i i d d d d d
-:combine Rdd5,Simm8_0512,Uimm32_1620_13x EndPacket is iclass=7 & op2127=0x64 & Rdd5 & rdd5h_ & rd5_ & Simm8_0512 & Uimm32_1620_13x & $(END_PACKET) {
+:combine Rdd5,Simm8_0512,Uimm32_1620_13x EndPacket is iclass=7 & op2327=0x19 & Rdd5 & rdd5h_ & rd5_ & Simm8_0512 & Uimm32_1620_13x & $(END_PACKET) {
build Rdd5; # build Rdd5 and assign hi/lo words separately to aid analysis
rdd5h_ = sext(Simm8_0512);
rd5_ = Uimm32_1620_13x;
@@ -4875,23 +5097,13 @@ define pcodeop cmpyrwhX2RndSat;
rd5_ = sext(Simm8_1622_13);
build EndPacket;
}
-# Special case (no immext): Rdd=combine(#-1,#s8) where s8 < 0 (maps to Rdd=#s8)
-:assign Rdd5,Simm8_1622_13 EndPacket is iclass=7 & op2427=0xc & op23=0 & Rdd5 & Simm8_1622_13 & s0512=0xff & s22=1 & immext=0 & $(END_PACKET) {
- Rdd5 = sext(Simm8_1622_13);
- build EndPacket;
-}
-# Special case (no immext): Rdd=combine(#0,#s8) where s8 > 0 (maps to Rdd=#s8)
-:assign Rdd5,Simm8_1622_13 EndPacket is iclass=7 & op2427=0xc & op23=0 & Rdd5 & Simm8_1622_13 & s0512=0 & s22=0 & immext=0 & $(END_PACKET) {
- Rdd5 = zext(Simm8_1622_13);
- build EndPacket;
-}
# (v4,7) combine -- "Rdd32 = combine ( #s8x , Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 1 0 0 1 1 + 0 1 s s s s s P P 1 i i i i i i i i d d d d d
+# 0 1 1 1 0 0 1 1 - 0 1 s s s s s P P 1 i i i i i i i i d d d d d
-:combine Rdd5,Simm32_0512x,rs5 EndPacket is iclass=7 & op2127=0x19 & op13=1 & Rdd5 & rdd5h_ & rd5_ & rs5 & Simm32_0512x & $(END_PACKET) {
+:combine Rdd5,Simm32_0512x,rs5 EndPacket is iclass=7 & op2427=0x3 & op2122=0x1 & op13=1 & Rdd5 & rdd5h_ & rd5_ & rs5 & Simm32_0512x & $(END_PACKET) {
build Rdd5; # build Rdd5 and assign hi/lo words separately to aid analysis
rdd5h_ = Simm32_0512x;
rd5_ = rs5;
@@ -4901,9 +5113,9 @@ define pcodeop cmpyrwhX2RndSat;
# (v4,7) combine -- "Rdd32 = combine ( Rs32 , #s8x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 1 0 0 1 1 + 0 0 s s s s s P P 1 i i i i i i i i d d d d d
+# 0 1 1 1 0 0 1 1 - 0 0 s s s s s P P 1 i i i i i i i i d d d d d
-:combine Rdd5,rs5,Simm32_0512x EndPacket is iclass=7 & op2127=0x18 & op13=1 & Rdd5 & rdd5h_ & rd5_ & rs5 & Simm32_0512x & $(END_PACKET) {
+:combine Rdd5,rs5,Simm32_0512x EndPacket is iclass=7 & op2427=0x3 & op2122=0x0 & op13=1 & Rdd5 & rdd5h_ & rd5_ & rs5 & Simm32_0512x & $(END_PACKET) {
build Rdd5; # build Rdd5 and assign hi/lo words separately to aid analysis
rdd5h_ = rs5;
rd5_ = Simm32_0512x;
@@ -4915,7 +5127,7 @@ define pcodeop cmpyrwhX2RndSat;
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 1 1 1 0 1 0 1 0 - - s s s s s P P - t t t t t - - - d d d d d
-:combine Rdd5,rs5,rt5 EndPacket is iclass=0xf & op2427=5 & op2123=0 & op13=0 & op0507=0 & Rdd5 & rdd5h_ & rd5_ & rs5 & rt5 & $(END_PACKET) {
+:combine Rdd5,rs5,rt5 EndPacket is iclass=0xf & op2427=5 & op23=0 & Rdd5 & rdd5h_ & rd5_ & rs5 & rt5 & $(END_PACKET) {
build Rdd5; # build Rdd5 and assign hi/lo words separately to aid analysis
rdd5h_ = rs5;
rd5_ = rt5;
@@ -4940,14 +5152,15 @@ define pcodeop cmpyrwhX2RndSat;
# (v2,15) combine -- "if ( ! Pu4 .new ) Rdd32 = combine ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 1 1 1 1 0 1 + + + s s s s s P P 1 t t t t t 1 u u d d d d d
+# 1 1 1 1 1 1 0 1 0 0 0 s s s s s P P 1 t t t t t 1 u u d d d d d
-:combine^PuCond0506_N13_S07 rdd5,rs5,rt5 EndPacket is iclass=15 & op2127=0x68 & PuCond0506_N13_S07 & rs5 & rt5 & rdd5 & rdd5h & rd5 & $(END_PACKET) {
+:combine^PuCond0506_N13_S07 rdd5,rs5,rt5 EndPacket is iclass=15 & op2427=0xd & op23=0 & op22=0 & op21=0 & PuCond0506_N13_S07 & rs5 & rt5 & rdd5 & rdd5h & rd5 & $(END_PACKET) {
hi:4 = rs5;
lo:4 = rt5;
build PuCond0506_N13_S07;
build EndPacket;
<>
+ build PuCond0506_N13_S07;
if (ConditionReg == 0) goto ;
# Write hi/lo regs separately to simplify analysis
rdd5h = hi;
@@ -4955,29 +5168,22 @@ define pcodeop cmpyrwhX2RndSat;
}
-# if ([!]Pu4[.new]) Rdd32 = Rs32:Rt32 ( simplification of if ([!]Pu4[.new]) Rdd32 = combine ( Rs32 , Rt32 )
-# where Rs32 is odd and Rt32 is the corresponding low reg
-:assign^PuCond0506_N13_S07 rdd5,rtt5 EndPacket is iclass=15 & op2127=0x68 & op16=1 & op8=0 & op0912=op1720 & PuCond0506_N13_S07 & rtt5 & rdd5 & $(END_PACKET) {
- tmp:8 = rtt5;
- build PuCond0506_N13_S07;
- build EndPacket;
- <>
- if (ConditionReg == 0) goto ;
- rdd5 = tmp;
-
-}
-
# (v4,8) cround -- "Rd32 = cround ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 0 0 1 1 1 s s s s s P P 0 i i i i i 0 0 + d d d d d
+# 1 0 0 0 1 1 0 0 1 1 1 s s s s s P P 0 i i i i i 0 0 - d d d d d
-:cround Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x67 & op13=0 & op0507=0 & Rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+:cround Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x67 & op13=0 & op0607=0 & Rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
Rd5 = roundConvergent(rs5, Uimm8_0812);
build EndPacket;
}
-:cround Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x67 & op13=0 & op0507=2 & Rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+# (v67,8) cround -- "Rdd32 = cround ( Rss32 , #u6 )"
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# 1 0 0 0 1 1 0 0 1 1 1 s s s s s P P i i i i i i 0 1 - d d d d d
+
+:cround Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x67 & op0607=1 & Rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
Rdd5 = roundConvergent(rss5, Uimm8_0813);
build EndPacket;
}
@@ -4986,14 +5192,19 @@ define pcodeop cmpyrwhX2RndSat;
# (v4,12) cround -- "Rd32 = cround ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 1 1 0 1 1 + s s s s s P P + t t t t t 0 0 + d d d d d
+# 1 1 0 0 0 1 1 0 1 1 - s s s s s P P - t t t t t 0 0 - d d d d d
-:cround Rd5,rs5,rt5 EndPacket is iclass=12 & op2127=0x36 & op13=0 & op0507=0 & Rd5 & rs5 & rt5 & $(END_PACKET) {
+:cround Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x1b & op0607=0 & Rd5 & rs5 & rt5 & $(END_PACKET) {
Rd5 = roundConvergent(rs5, rt5);
build EndPacket;
}
-:cround Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x36 & op13=0 & op0507=2 & Rdd5 & rss5 & rt5 & $(END_PACKET) {
+# (v67,12) cround -- "Rdd32 = cround ( Rss32 , Rt32 )"
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# 1 1 0 0 0 1 1 0 1 1 - s s s s s P P - t t t t t 0 1 - d d d d d
+
+:cround Rdd5,rss5,rt5 EndPacket is iclass=12 & op2227=0x1b & op0607=1 & Rdd5 & rss5 & rt5 & $(END_PACKET) {
Rdd5 = roundConvergent(rss5, rt5);
build EndPacket;
}
@@ -5001,9 +5212,9 @@ define pcodeop cmpyrwhX2RndSat;
# (v2,6) crswap -- "crswap ( Rx32 , sgp0 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 1 0 1 0 0 0 x x x x x P P + + + + + + + + + + + + + +
+# 0 1 1 0 0 1 0 1 0 0 0 x x x x x P P - - - - - - - - - - - - - -
-:crswap Rx5,S0 EndPacket is iclass=6 & op2127=0x28 & op0013=0x00 & Rx5 & rx5 & S0 & $(END_PACKET) {
+:crswap Rx5,S0 EndPacket is iclass=6 & op2127=0x28 & Rx5 & rx5 & S0 & $(END_PACKET) {
# TODO: Verify semantics - this was a guess based upon mnemonic
tmp:4 = S0;
S0 = rx5;
@@ -5014,9 +5225,9 @@ define pcodeop cmpyrwhX2RndSat;
# (v4,6) crswap -- "crswap ( Rx32 , sgp1 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 1 0 1 0 0 1 x x x x x P P + + + + + + + + + + + + + +
+# 0 1 1 0 0 1 0 1 0 0 1 x x x x x P P - - - - - - - - - - - - - -
-:crswap Rx5,S1 EndPacket is iclass=6 & op2127=0x29 & op0013=0x00 & Rx5 & rx5 & S1 & $(END_PACKET) {
+:crswap Rx5,S1 EndPacket is iclass=6 & op2127=0x29 & Rx5 & rx5 & S1 & $(END_PACKET) {
# TODO: Verify semantics - this was a guess based upon mnemonic
tmp:4 = S1;
S1 = rx5;
@@ -5027,9 +5238,9 @@ define pcodeop cmpyrwhX2RndSat;
# (v4,6) crswap -- "crswap ( Rxx32 , sgp1:0 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 1 1 0 1 1 + + x x x x x P P + + + + + + + + + 0 0 0 0 0
+# 0 1 1 0 1 1 0 1 1 - - x x x x x P P - - - - - - - - - 0 0 0 0 0
-:crswap Rxx5,S1S0 EndPacket is iclass=6 & op2127=0x6c & op0013=0x00 & Rxx5 & rxx5 & S1S0 & $(END_PACKET) {
+:crswap Rxx5,S1S0 EndPacket is iclass=6 & op2327=0x1b & op0004=0x0 & Rxx5 & rxx5 & S1S0 & $(END_PACKET) {
# TODO: Verify semantics - this was a guess based upon mnemonic
tmp:8 = S1S0;
S1S0 = rxx5;
@@ -5040,11 +5251,11 @@ define pcodeop cmpyrwhX2RndSat;
# (v2,6) cswi -- "cswi ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 1 0 0 0 0 0 s s s s s P P + + + + + + 0 0 1 + + + + +
+# 0 1 1 0 0 1 0 0 0 0 0 s s s s s P P - - - - - - 0 0 1 - - - - -
define pcodeop cswi;
-:cswi rs5 EndPacket is iclass=6 & op2127=0x20 & op0013=0x20 & rs5 & $(END_PACKET) {
+:cswi rs5 EndPacket is iclass=6 & op2127=0x20 & op0507=0x1 & rs5 & $(END_PACKET) {
cswi(rs5);
build EndPacket;
}
@@ -5052,9 +5263,9 @@ define pcodeop cswi;
# (v2,8) ct0 -- "Rd32 = ct0 ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 0 0 0 1 0 s s s s s P P + + + + + + 1 0 0 d d d d d
+# 1 0 0 0 1 1 0 0 0 1 0 s s s s s P P - - - - - - 1 0 0 d d d d d
-:ct0 Rd5,rs5 EndPacket is iclass=8 & op2127=0x62 & op0513=4 & Rd5 & rs5 & $(END_PACKET) {
+:ct0 Rd5,rs5 EndPacket is iclass=8 & op2127=0x62 & op0507=4 & Rd5 & rs5 & $(END_PACKET) {
Rd5 = countTrailingZeros(rs5);
build EndPacket;
}
@@ -5062,9 +5273,9 @@ define pcodeop cswi;
# (v4,8) ct0 -- "Rd32 = ct0 ( Rss32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 0 0 0 1 1 1 s s s s s P P + + + + + + 0 1 + d d d d d
+# 1 0 0 0 1 0 0 0 1 1 1 s s s s s P P - - - - - - 0 1 0 d d d d d
-:ct0 Rd5,rss5 EndPacket is iclass=8 & op2127=0x47 & op0513=2 & Rd5 & rss5 & $(END_PACKET) {
+:ct0 Rd5,rss5 EndPacket is iclass=8 & op2127=0x47 & op0607=1 & op5=0 & Rd5 & rss5 & $(END_PACKET) {
Rd5 = countTrailingZeros(rss5);
build EndPacket;
}
@@ -5072,9 +5283,9 @@ define pcodeop cswi;
# (v2,8) ct1 -- "Rd32 = ct1 ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 0 0 0 1 0 s s s s s P P + + + + + + 1 0 1 d d d d d
+# 1 0 0 0 1 1 0 0 0 1 0 s s s s s P P - - - - - - 1 0 1 d d d d d
-:ct1 Rd5,rs5 EndPacket is iclass=8 & op2127=0x62 & op0513=5 & Rd5 & rs5 & $(END_PACKET) {
+:ct1 Rd5,rs5 EndPacket is iclass=8 & op2127=0x62 & op0507=5 & Rd5 & rs5 & $(END_PACKET) {
Rd5 = countTrailingOnes(rs5);
build EndPacket;
}
@@ -5082,9 +5293,9 @@ define pcodeop cswi;
# (v4,8) ct1 -- "Rd32 = ct1 ( Rss32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 0 0 0 1 1 1 s s s s s P P + + + + + + 1 0 + d d d d d
+# 1 0 0 0 1 0 0 0 1 1 1 s s s s s P P - - - - - - 1 0 0 d d d d d
-:ct1 Rd5,rss5 EndPacket is iclass=8 & op2127=0x47 & op0513=0x04 & Rd5 & rss5 & $(END_PACKET) {
+:ct1 Rd5,rss5 EndPacket is iclass=8 & op2127=0x47 & op0607=0x2 & op5=0 & Rd5 & rss5 & $(END_PACKET) {
Rd5 = countTrailingOnes(rss5);
build EndPacket;
}
@@ -5092,7 +5303,7 @@ define pcodeop cswi;
# (v65,6) ctlbw -- "Rd32 = ctlbw ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 1 1 0 0 1 1 0 s s s s s P P 0 t t t t t + + + d d d d d
+# 0 1 1 0 1 1 0 0 1 1 0 s s s s s P P 0 t t t t t - - - d d d d d
define pcodeop ctlbw;
:ctlbw Rd5,rss5,rt5 EndPacket is iclass=6 & op2127=0x66 & op13=0 & rss5 & rt5 & Rd5 & $(END_PACKET) {
@@ -5103,11 +5314,11 @@ define pcodeop ctlbw;
# (v2,10) dccleana -- "dccleana ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 0 0 0 0 0 0 0 s s s s s P P + + + + + + + + + + + + + +
+# 1 0 1 0 0 0 0 0 0 0 0 s s s s s P P - - - - - - - - - - - - - -
define pcodeop dccleana;
-:dccleana rs5 EndPacket is iclass=10 & op2127=0 & op0013=0 & rs5 & $(END_PACKET) {
+:dccleana rs5 EndPacket is iclass=10 & op2127=0 & rs5 & $(END_PACKET) {
dccleana(rs5);
build EndPacket;
}
@@ -5115,11 +5326,11 @@ define pcodeop dccleana;
# (v2,10) dccleanidx -- "dccleanidx ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 0 0 1 0 0 0 1 s s s s s P P + + + + + + + + + + + + + +
+# 1 0 1 0 0 0 1 0 0 0 1 s s s s s P P - - - - - - - - - - - - - -
define pcodeop dccleanidx;
-:dccleanidx rs5 EndPacket is iclass=10 & op2127=0x11 & op0013=0 & rs5 & $(END_PACKET) {
+:dccleanidx rs5 EndPacket is iclass=10 & op2127=0x11 & rs5 & $(END_PACKET) {
dccleanidx(rs5);
build EndPacket;
}
@@ -5127,11 +5338,11 @@ define pcodeop dccleanidx;
# (v2,10) dccleaninva -- "dccleaninva ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 0 0 0 0 0 1 0 s s s s s P P + + + + + + + + + + + + + +
+# 1 0 1 0 0 0 0 0 0 1 0 s s s s s P P - - - - - - - - - - - - - -
define pcodeop dccleaninva;
-:dccleaninva rs5 EndPacket is iclass=10 & op2127=0x02 & op0013=0 & rs5 & $(END_PACKET) {
+:dccleaninva rs5 EndPacket is iclass=10 & op2127=0x02 & rs5 & $(END_PACKET) {
dccleaninva(rs5);
build EndPacket;
}
@@ -5139,11 +5350,11 @@ define pcodeop dccleaninva;
# (v2,10) dccleaninvidx -- "dccleaninvidx ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 0 0 1 0 0 1 1 s s s s s P P + + + + + + + + + + + + + +
+# 1 0 1 0 0 0 1 0 0 1 1 s s s s s P P - - - - - - - - - - - - - -
define pcodeop dccleaninvidx;
-:dccleaninvidx rs5 EndPacket is iclass=10 & op2127=0x13 & op0013=0 & rs5 & $(END_PACKET) {
+:dccleaninvidx rs5 EndPacket is iclass=10 & op2127=0x13 & rs5 & $(END_PACKET) {
dccleaninvidx(rs5);
build EndPacket;
}
@@ -5151,14 +5362,14 @@ define pcodeop dccleaninvidx;
# (v2,9) dcfetch -- "dcfetch ( Rs32 + #u11:3 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 0 1 0 0 0 0 0 s s s s s P P 0 + + i i i i i i i i i i i
+# 1 0 0 1 0 1 0 0 0 0 0 s s s s s P P 0 - - i i i i i i i i i i i
FetchAddrRsReld: "("^rs5^"+"^Uimm16_0010_shift3^")" is rs5 & Uimm16_0010_shift3 { ptr:4 = rs5 + zext(Uimm16_0010_shift3); export *[ram]:8 ptr; }
FetchAddrRsReld: "("^rs5^")" is rs5 & i0010=0 { export *[ram]:8 rs5; }
define pcodeop dcfetch;
-:dcfetch FetchAddrRsReld EndPacket is iclass=9 & op2127=0x20 & op1112=0 & FetchAddrRsReld & $(END_PACKET) {
+:dcfetch^MemNt13 FetchAddrRsReld EndPacket is iclass=9 & op2127=0x20 & FetchAddrRsReld & MemNt13 & $(END_PACKET) {
dcfetch(FetchAddrRsReld);
build EndPacket;
}
@@ -5166,11 +5377,11 @@ define pcodeop dcfetch;
# (v2,10) dcinva -- "dcinva ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 0 0 0 0 0 0 1 s s s s s P P + + + + + + + + + + + + + +
+# 1 0 1 0 0 0 0 0 0 0 1 s s s s s P P - - - - - - - - - - - - - -
define pcodeop dcinva;
-:dcinva rs5 EndPacket is iclass=10 & op2127=0x01 & op0013=0 & rs5 & $(END_PACKET) {
+:dcinva rs5 EndPacket is iclass=10 & op2127=0x01 & rs5 & $(END_PACKET) {
dcinva(rs5);
build EndPacket;
}
@@ -5178,11 +5389,11 @@ define pcodeop dcinva;
# (v2,10) dcinvidx -- "dcinvidx ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 0 0 1 0 0 1 0 s s s s s P P + + + + + + + + + + + + + +
+# 1 0 1 0 0 0 1 0 0 1 0 s s s s s P P - - - - - - - - - - - - - -
define pcodeop dcinvidx;
-:dcinvidx rs5 EndPacket is iclass=10 & op2127=0x12 & op0013=0 & rs5 & $(END_PACKET) {
+:dcinvidx rs5 EndPacket is iclass=10 & op2127=0x12 & rs5 & $(END_PACKET) {
dcinvidx(rs5);
build EndPacket;
}
@@ -5190,11 +5401,11 @@ define pcodeop dcinvidx;
# (v2,10) dckill -- "dckill"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 0 0 1 0 0 0 0 + + + + + P P + + + + + + + + + + + + + +
+# 1 0 1 0 0 0 1 0 0 0 0 - - - - - P P - - - - - - - - - - - - - -
define pcodeop dckill;
-:dckill EndPacket is iclass=10 & op2127=0x10 & op1620=0 & op0013=0 & $(END_PACKET) {
+:dckill EndPacket is iclass=10 & op2127=0x10 & $(END_PACKET) {
dckill();
build EndPacket;
}
@@ -5202,11 +5413,11 @@ define pcodeop dckill;
# (v2,10) dctagr -- "Rd32 = dctagr ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 0 1 0 0 0 0 1 s s s s s P P + + + + + + + + + d d d d d
+# 1 0 1 0 0 1 0 0 0 0 1 s s s s s P P - - - - - - - - - d d d d d
define pcodeop dctagr;
-:dctagr Rd5,rs5 EndPacket is iclass=10 & op2127=0x21 & op0513=0 & rs5 & Rd5 & $(END_PACKET) {
+:dctagr Rd5,rs5 EndPacket is iclass=10 & op2127=0x21 & rs5 & Rd5 & $(END_PACKET) {
Rd5 = dctagr(rs5);
build EndPacket;
}
@@ -5214,154 +5425,165 @@ define pcodeop dctagr;
# (v2,10) dctagw -- "dctagw ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 0 1 0 0 0 0 0 s s s s s P P + t t t t t + + + + + + + +
+# 1 0 1 0 0 1 0 0 0 0 0 s s s s s P P - t t t t t - - - - - - - -
define pcodeop dctagw;
-:dctagw rs5,rt5 EndPacket is iclass=10 & op2127=0x20 & op13=0 & op0007=0 & rs5 & rt5 & $(END_PACKET) {
+:dctagw rs5,rt5 EndPacket is iclass=10 & op2127=0x20 & rs5 & rt5 & $(END_PACKET) {
dctagw(rs5,rt5);
build EndPacket;
}
-# (v2,10) dczeroa -- "dczeroa ( Rs32 )"
+# (v2,10) dczeroa -- "dczeroa ( Rs32 )" (bit13=1 selects the ":nt" hint)
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 0 0 0 0 1 1 0 s s s s s P P 0 + + + + + + + + + + + + +
+# 1 0 1 0 0 0 0 0 1 1 0 s s s s s P P - - - - - - - - - - - - - -
define pcodeop dczeroa;
-:dczeroa rs5 EndPacket is iclass=10 & op2127=0x06 & op0013=0 & rs5 & $(END_PACKET) {
+:dczeroa^MemNt13 rs5 EndPacket is iclass=10 & op2127=0x06 & rs5 & MemNt13 & $(END_PACKET) {
dczeroa(rs5);
build EndPacket;
}
-# (v4,9) dealloc_return -- "dealloc_return"
+# (v65,9) dealloc_return -- "Rdd32 = dealloc_return ( Rs32 ):raw"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 P P 0 0 0 0 + + + + + 1 1 1 1 0
+# 1 0 0 1 0 1 1 0 0 0 0 s s s s s P P 0 0 0 0 - - - - - d d d d d
-:dealloc_return EndPacket is iclass=9 & op2127=0x30 & op1620=0x1e & op0013=0x001e & $(END_PACKET) {
+:dealloc_return^":raw" rdd5,rs5 EndPacket is iclass=9 & op2127=0x30 & op1013=0x0 & rs5 & rdd5 & rdd5h & DeallocFrameRddRsRaw & $(END_PACKET) {
+ build DeallocFrameRddRsRaw; # consumes rs5 and updates rdd5, and SP during <>
build EndPacket;
<>
- deallocframe(FP);
- return [LR];
+ return [rdd5h];
}
# (v4,9) dealloc_return -- "dealloc_return"
+# LR:FP = dealloc_return(FP):raw
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 0 1 1 0 0 0 0 s s s s s P P 0 0 0 0 + + + + + 1 1 1 1 0
+# 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 P P 0 0 0 0 - - - - - 1 1 1 1 0
-:dealloc_return rs5 EndPacket is iclass=9 & op2127=0x30 & rs5 & op0013=0x001e & $(END_PACKET) {
+:dealloc_return EndPacket is iclass=9 & op2127=0x30 & op1620=0x1e & op1013=0x0 & op0004=0x1e & DeallocFrameRddRsRaw & $(END_PACKET) {
+ build DeallocFrameRddRsRaw; # consumes FP and updates LR, FP, and SP during <>
build EndPacket;
<>
- deallocframe(rs5);
return [LR];
}
-# dealloc_return -- "if ( Ps4 ) dealloc_return"
+# (v4,9) dealloc_return -- "if ( Ps4 ) dealloc_return"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 P P 0 1 0 0 s s + + + 1 1 1 1 0
+# 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 P P 0 1 0 0 s s - - - 1 1 1 1 0
#
-# dealloc_return -- "if ( ! Ps4 ) dealloc_return"
+# (v4,9) dealloc_return -- "if ( ! Ps4 ) dealloc_return"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 P P 1 1 0 0 s s + + + 1 1 1 1 0
+# 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 P P 1 1 0 0 s s - - - 1 1 1 1 0
#
-# dealloc_return:nt -- "if ( Ps4 .new ) dealloc_return:nt"
+# (v4,9) dealloc_return:nt -- "if ( Ps4 .new ) dealloc_return:nt"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 P P 0 0 1 0 s s + + + 1 1 1 1 0
+# 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 P P 0 0 1 0 s s - - - 1 1 1 1 0
#
-# dealloc_return:nt -- "if ( ! Ps4 .new ) dealloc_return:nt"
+# (v4,9) dealloc_return:nt -- "if ( ! Ps4 .new ) dealloc_return:nt"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 P P 1 0 1 0 s s + + + 1 1 1 1 0
+# 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 P P 1 0 1 0 s s - - - 1 1 1 1 0
#
-# dealloc_return:t -- "if ( Ps4 .new ) dealloc_return:t"
+# (v4,9) dealloc_return:t -- "if ( Ps4 .new ) dealloc_return:t"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 P P 0 1 1 0 s s + + + 1 1 1 1 0
+# 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 P P 0 1 1 0 s s - - - 1 1 1 1 0
#
-# dealloc_return:t -- "if ( ! Ps4 .new ) dealloc_return:t"
+# (v4,9) dealloc_return:t -- "if ( ! Ps4 .new ) dealloc_return:t"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 P P 1 1 1 0 s s + + + 1 1 1 1 0
+# 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 P P 1 1 1 0 s s - - - 1 1 1 1 0
DRTaken12: is op11=0 & op12=1 { }
DRTaken12: ":t" is op11=1 & op12=1 { }
DRTaken12: ":nt" is op11=1 & op12=0 { }
-:dealloc_return^FlowCond0809_N11_S13^DRTaken12 EndPacket is iclass=9 & op2127=0x30 & op1620=0x1e & (op1112=2 | op11=1) & op0007=0x1e & FlowCond0809_N11_S13 & DRTaken12 & $(END_PACKET) {
- build FlowCond0809_N11_S13;
+:dealloc_return^FlowCond0809_N11_S13^DRTaken12 EndPacket is iclass=9 & op2127=0x30 & op1620=0x1e & op0004=0x1e & (op1112=2 | op11=1) & FlowCond0809_N11_S13 & DeallocFrameRddRsRawCond & DRTaken12 & $(END_PACKET) {
+ build FlowCond0809_N11_S13; # Establishes ConditionReg during <> and <>
+ build DeallocFrameRddRsRawCond; # consumes FP and conditionally updates LR, FP, and SP during <>
build EndPacket;
<>
+ build FlowCond0809_N11_S13;
if (ConditionReg == 0) goto ;
- deallocframe(FP);
return [LR];
}
-# (v4,9) dealloc_return -- "if ( Ps4 ) dealloc_return"
+# (v4,9) dealloc_return -- "if ( Ps4 ) Rdd32 = dealloc_return (Rs32 ):raw"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 0 1 1 0 0 0 0 s s s s s P P 0 1 0 0 s s + + + 1 1 1 1 0
+# 1 0 0 1 0 1 1 0 0 0 0 s s s s s P P 0 1 0 0 s s - - - d d d d d
#
-# (v4,9) dealloc_return -- "if ( ! Ps4 ) dealloc_return"
+# (v4,9) dealloc_return -- "if ( ! Ps4 ) Rdd32 = dealloc_return (Rs32 ):raw"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 0 1 1 0 0 0 0 s s s s s P P 1 1 0 0 s s + + + 1 1 1 1 0
+# 1 0 0 1 0 1 1 0 0 0 0 s s s s s P P 1 1 0 0 s s - - - d d d d d
#
-# (v4,9) dealloc_return:nt -- "if ( Ps4 .new ) dealloc_return:nt"
+# (v4,9) dealloc_return:nt -- "if ( Ps4 .new ) Rdd32 = dealloc_return:nt (Rs32 ):raw"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 0 1 1 0 0 0 0 s s s s s P P 0 0 1 0 s s + + + 1 1 1 1 0
+# 1 0 0 1 0 1 1 0 0 0 0 s s s s s P P 0 0 1 0 s s - - - d d d d d
#
-# (v4,9) dealloc_return:nt -- "if ( ! Ps4 .new ) dealloc_return:nt"
+# (v4,9) dealloc_return:nt -- "if ( ! Ps4 .new ) Rdd32 = dealloc_return:nt (Rs32 ):raw"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 0 1 1 0 0 0 0 s s s s s P P 1 0 1 0 s s + + + 1 1 1 1 0
+# 1 0 0 1 0 1 1 0 0 0 0 s s s s s P P 1 0 1 0 s s - - - d d d d d
#
-# (v4,9) dealloc_return:t -- "if ( Ps4 .new ) dealloc_return:t"
+# (v4,9) dealloc_return:t -- "if ( Ps4 .new ) Rdd32 = dealloc_return:t (Rs32 ):raw"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 0 1 1 0 0 0 0 s s s s s P P 0 1 1 0 s s + + + 1 1 1 1 0
+# 1 0 0 1 0 1 1 0 0 0 0 s s s s s P P 0 1 1 0 s s - - - d d d d d
#
-# (v4,9) dealloc_return:t -- "if ( ! Ps4 .new ) dealloc_return:t"
+# (v4,9) dealloc_return:t -- "if ( ! Ps4 .new ) Rdd32 = dealloc_return:t (Rs32 ):raw"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 0 1 1 0 0 0 0 s s s s s P P 1 1 1 0 s s + + + 1 1 1 1 0
+# 1 0 0 1 0 1 1 0 0 0 0 s s s s s P P 1 1 1 0 s s - - - d d d d d
-:dealloc_return^FlowCond0809_N11_S13^DRTaken12 rs5 EndPacket is iclass=9 & op2127=0x30 & rs5 & (op1112=2 | op11=1) & op0007=0x1e & FlowCond0809_N11_S13 & DRTaken12 & $(END_PACKET) {
- build FlowCond0809_N11_S13;
+:dealloc_return^FlowCond0809_N11_S13^DRTaken12^":raw" rdd5,rs5 EndPacket is iclass=9 & op2127=0x30 & rdd5 & rdd5h & rs5 & (op1112=2 | op11=1) & FlowCond0809_N11_S13 & DeallocFrameRddRsRawCond & DRTaken12 & $(END_PACKET) {
+ build FlowCond0809_N11_S13; # Establishes ConditionReg during <> and <>
+ build DeallocFrameRddRsRawCond; # # consumes rs5 and updates rdd5, and SP during <>
build EndPacket;
<>
+ build FlowCond0809_N11_S13;
if (ConditionReg == 0) goto ;
- deallocframe(rs5);
- return [LR];
+ return [rdd5h];
}
-
# (v2,9) deallocframe -- "deallocframe"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 P P 0 - - - - - - - - 1 1 1 1 0
+# 1 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 P P 0 - - - - - - - - 1 1 1 1 0
-:deallocframe EndPacket is iclass=9 & op2527=0 & op2224=0 & op21=0 & op1620=0x1e & op13=0 & op0512=0 & op0004=0x1e & $(END_PACKET) {
+:deallocframe EndPacket is iclass=9 & op2527=0 & op2224=0 & op21=0 & op1620=0x1e & op13=0 & op0004=0x1e & DeallocFrameRddRsRaw & $(END_PACKET) {
+ build DeallocFrameRddRsRaw; # consumes FP and updates LR, FP, and SP during <>
+ build EndPacket;
+}
+
+# (v65,9) deallocframe -- "Rdd32 = deallocframe ( Rs32 ):raw"
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# 1 0 0 1 0 0 0 0 0 0 0 s s s s s P P 0 - - - - - - - - d d d d d
+
+:deallocframe^":raw" rdd5,rs5 EndPacket is iclass=9 & op2127=0x0 & op13=0 & rdd5 & rs5 & DeallocFrameRddRsRaw & $(END_PACKET) {
+ build DeallocFrameRddRsRaw; # consumes rs5 and updates rdd5, and SP during <>
build EndPacket;
- <>
- deallocframe(FP);
}
# (v4,12) decbin -- "Rdd32 = decbin ( Rss32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 0 0 1 1 1 + s s s s s P P + t t t t t 1 1 + d d d d d
+# 1 1 0 0 0 0 0 1 1 1 - s s s s s P P - t t t t t 1 1 - d d d d d
define pcodeop decbin;
-:decbin Rdd5,rss5,rtt5 EndPacket is iclass=12 & op2127=0x0e & op13=0 & op0507=6 & Rdd5 & rss5 & rtt5 & $(END_PACKET) {
+:decbin Rdd5,rss5,rtt5 EndPacket is iclass=12 & op2227=0x7 & op0607=3 & Rdd5 & rss5 & rtt5 & $(END_PACKET) {
Rdd5 = decbin(rss5, rtt5);
build EndPacket;
}
@@ -5369,9 +5591,9 @@ define pcodeop decbin;
# (v2,8) deinterleave -- "Rdd32 = deinterleave ( Rss32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 0 0 1 1 + s s s s s P P + + + + + + 1 0 0 d d d d d
+# 1 0 0 0 0 0 0 0 1 1 0 s s s s s P P - - - - - - 1 0 0 d d d d d
define pcodeop deinterleave;
-:deinterleave Rdd5,rss5 EndPacket is iclass=8 & op2127=0x06 & op0513=0x04 & Rdd5 & rss5 & $(END_PACKET) {
+:deinterleave Rdd5,rss5 EndPacket is iclass=8 & op2227=0x3 & op21=0 & op0507=0x4 & Rdd5 & rss5 & $(END_PACKET) {
Rdd5 = deinterleave(rss5);
build EndPacket;
}
@@ -5379,7 +5601,7 @@ define pcodeop deinterleave;
# (v69,6) diag -- "diag ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 0 1 0 0 1 0 s s s s s P P + + + + + + 0 0 1 + + + + +
+# 0 1 1 0 0 0 1 0 0 1 0 s s s s s P P - - - - - - 0 0 1 - - - - -
define pcodeop diag;
:diag rs5 EndPacket is iclass=6 & op2127=0x12 & op0507=1 & rs5 & $(END_PACKET) {
@@ -5390,7 +5612,7 @@ define pcodeop diag;
# (v69,6) diag0 -- "diag0 ( Rss32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 0 1 0 0 1 0 s s s s s P P + t t t t t 0 1 0 + + + + +
+# 0 1 1 0 0 0 1 0 0 1 0 s s s s s P P - t t t t t 0 1 0 - - - - -
define pcodeop diag0;
:diag0 rss5,rtt5 EndPacket is iclass=6 & op2127=0x12 & op0507=2 & rss5 & rtt5 & $(END_PACKET) {
@@ -5401,7 +5623,7 @@ define pcodeop diag0;
# (v69,6) diag1 -- "diag1 ( Rss32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 0 1 0 0 1 0 s s s s s P P + t t t t t 0 1 1 + + + + +
+# 0 1 1 0 0 0 1 0 0 1 0 s s s s s P P - t t t t t 0 1 1 - - - - -
define pcodeop diag1;
:diag1 rss5,rtt5 EndPacket is iclass=6 & op2127=0x12 & op0507=3 & rss5 & rtt5 & $(END_PACKET) {
@@ -5420,6 +5642,72 @@ define pcodeop dmsyncht;
build EndPacket;
}
+# (v68,10) dmstart -- "dmstart ( Rs32 )"
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# 1 0 1 0 0 1 1 0 0 0 0 s s s s s P P 0 0 0 0 0 0 0 0 1 0 0 0 0 0
+
+define pcodeop dma_start;
+:dmstart rs5 EndPacket is iclass=10 & op2127=0x30 & op13=0 & op0812=0 & op0507=1 & op0004=0 & rs5 & $(END_PACKET) {
+ dma_start(rs5); # Rs = pointer to DMA descriptor
+ build EndPacket;
+}
+
+# (v68,10) dmlink -- "dmlink ( Rs32 , Rt32 )"
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# 1 0 1 0 0 1 1 0 0 0 0 s s s s s P P 0 t t t t t 0 1 0 0 0 0 0 0
+
+define pcodeop dma_link;
+:dmlink rs5,rt5 EndPacket is iclass=10 & op2127=0x30 & op13=0 & op0507=2 & op0004=0 & rs5 & rt5 & $(END_PACKET) {
+ dma_link(rs5, rt5); # append descriptor Rt to tail Rs
+ build EndPacket;
+}
+
+# (v68,10) dmresume -- "dmresume ( Rs32 )"
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# 1 0 1 0 0 1 1 0 0 0 0 s s s s s P P 0 0 0 0 0 0 1 0 0 0 0 0 0 0
+
+define pcodeop dma_resume;
+:dmresume rs5 EndPacket is iclass=10 & op2127=0x30 & op13=0 & op0812=0 & op0507=4 & op0004=0 & rs5 & $(END_PACKET) {
+ dma_resume(rs5); # resume paused DMA using status pointer Rs
+ build EndPacket;
+}
+
+# (v68,10) dmwait -- "Rd32 = dmwait"
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# 1 0 1 0 1 0 0 0 0 0 0 - - - - - P P - - - - - 0 0 0 1 d d d d d
+
+define pcodeop dma_wait;
+:dmwait Rd5 EndPacket is iclass=10 & op2127=0x40 & op0508=1 & Rd5 & $(END_PACKET) {
+ Rd5 = dma_wait(); # block until all DMAs idle; Rd = status
+ build EndPacket;
+}
+
+# (v68,10) dmpoll -- "Rd32 = dmpoll"
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# 1 0 1 0 1 0 0 0 0 0 0 - - - - - P P - - - - - 0 0 1 0 d d d d d
+
+define pcodeop dma_poll;
+:dmpoll Rd5 EndPacket is iclass=10 & op2127=0x40 & op0508=2 & Rd5 & $(END_PACKET) {
+ Rd5 = dma_poll(); # sample DMA status without blocking
+ build EndPacket;
+}
+
+# (v68,10) dmpause -- "Rd32 = dmpause"
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# 1 0 1 0 1 0 0 0 0 0 0 - - - - - P P - - - - - 0 0 1 1 d d d d d
+
+define pcodeop dma_pause;
+:dmpause Rd5 EndPacket is iclass=10 & op2127=0x40 & op0508=3 & Rd5 & $(END_PACKET) {
+ Rd5 = dma_pause(); # pause all DMAs; Rd = status pointer
+ build EndPacket;
+}
+
# (v4,8) extract -- "Rd32 = extract ( Rs32 , #u5 , #U5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
@@ -5439,9 +5727,9 @@ define pcodeop dmsyncht;
# (v4,12) extract -- "Rd32 = extract ( Rs32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 1 0 0 1 0 0 + s s s s s P P + t t t t t 0 1 + d d d d d
+# 1 1 0 0 1 0 0 1 0 0 - s s s s s P P - t t t t t 0 1 - d d d d d
-:extract Rd5,rs5,rtt5 EndPacket is iclass=12 & op2127=0x48 & op13=0 & op0507=2 & Rd5 & rs5 & rtt5 & rtt5h & rt5 & $(END_PACKET) {
+:extract Rd5,rs5,rtt5 EndPacket is iclass=12 & op2227=0x24 & op0607=1 & Rd5 & rs5 & rtt5 & rtt5h & rt5 & $(END_PACKET) {
# width: rtt5h (hi-word of rtt5)
# offset: rt5 (lo-word of rtt5)
mask:4 = ~(-1 << rtt5h);
@@ -5471,9 +5759,9 @@ define pcodeop dmsyncht;
# (v4,12) extract -- "Rdd32 = extract ( Rss32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 0 0 1 1 1 + s s s s s P P + t t t t t 1 0 + d d d d d
+# 1 1 0 0 0 0 0 1 1 1 - s s s s s P P - t t t t t 1 0 - d d d d d
-:extract Rdd5,rss5,rtt5 EndPacket is iclass=12 & op2127=0x0e & op13=0 & op0507=4 & Rdd5 & rss5 & rtt5 & rtt5h & rt5 & $(END_PACKET) {
+:extract Rdd5,rss5,rtt5 EndPacket is iclass=12 & op2227=0x7 & op0607=2 & Rdd5 & rss5 & rtt5 & rtt5h & rt5 & $(END_PACKET) {
# width: rtt5h (hi-word of rtt5)
# offset: rt5 (lo-word of rtt5)
mask:8 = ~(-1 << rtt5h);
@@ -5500,9 +5788,9 @@ define pcodeop dmsyncht;
# (v2,12) extractu -- "Rd32 = extractu ( Rs32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 1 0 0 1 0 0 + s s s s s P P + t t t t t 0 0 + d d d d d
+# 1 1 0 0 1 0 0 1 0 0 - s s s s s P P - t t t t t 0 0 - d d d d d
-:extractu Rd5,rs5,rtt5 EndPacket is iclass=12 & op2127=0x48 & op13=0 & op0507=0 & Rd5 & rs5 & rtt5 & rtt5h & rt5 & $(END_PACKET) {
+:extractu Rd5,rs5,rtt5 EndPacket is iclass=12 & op2227=0x24 & op0607=0 & Rd5 & rs5 & rtt5 & rtt5h & rt5 & $(END_PACKET) {
# width: rtt5h (hi-word of rtt5)
# offset: rt5 (lo-word of rtt5)
mask:4 = ~(-1 << rtt5h);
@@ -5526,9 +5814,9 @@ define pcodeop dmsyncht;
# (v2,12) extractu -- "Rdd32 = extractu ( Rss32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 0 0 1 0 0 + s s s s s P P + t t t t t 0 0 + d d d d d
+# 1 1 0 0 0 0 0 1 0 0 - s s s s s P P - t t t t t 0 0 - d d d d d
-:extractu Rdd5,rss5,rtt5 EndPacket is iclass=12 & op2127=0x08 & op13=0 & op0507=0 & Rdd5 & rss5 & rtt5 & rtt5h & rt5 & $(END_PACKET) {
+:extractu Rdd5,rss5,rtt5 EndPacket is iclass=12 & op2227=0x4 & op0607=0 & Rdd5 & rss5 & rtt5 & rtt5h & rt5 & $(END_PACKET) {
# width: rtt5h (hi-word of rtt5)
# offset: rt5 (lo-word of rtt5)
mask:8 = ~(-1 << rtt5h);
@@ -5539,11 +5827,11 @@ define pcodeop dmsyncht;
# (v4,6) fastcorner9 -- "Pd4 = fastcorner9 ( Ps4 , Pt4 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 1 0 1 1 0 0 0 0 + + s s P P 1 + + + t t 1 + + 1 + + d d
+# 0 1 1 0 1 0 1 1 0 0 0 0 - - s s P P 1 - - - t t 1 - - 1 - - d d
define pcodeop fastcorner9;
-:fastcorner9 Pd2,pu1617,pu0809 EndPacket is iclass=6 & op2127=0x58 & op1820=0 & op13=1 & op1012=0 & op0207=0x24 & Pd2 & pu1617 & pu0809 & $(END_PACKET) {
+:fastcorner9 Pd2,pu1617,pu0809 EndPacket is iclass=6 & op2127=0x58 & op20=0 & op13=1 & op7=0x1 & op4=0x1 & Pd2 & pu1617 & pu0809 & $(END_PACKET) {
Pd2 = Pd2 & fastcorner9(pu1617,pu0809);
build EndPacket;
}
@@ -5551,9 +5839,9 @@ define pcodeop fastcorner9;
# (v4,6) fastcorner9 -- "Pd4 = ! fastcorner9 ( Ps4 , Pt4 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 1 0 1 1 0 0 0 1 + + s s P P 1 + + + t t 1 + + 1 + + d d
+# 0 1 1 0 1 0 1 1 0 0 0 1 - - s s P P 1 - - - t t 1 - - 1 - - d d
-:fastcorner9! Pd2,pu1617,pu0809 EndPacket is iclass=6 & op2127=0x58 & op1820=4 & op13=1 & op1012=0 & op0207=0x24 & Pd2 & pu1617 & pu0809 & $(END_PACKET) {
+:fastcorner9! Pd2,pu1617,pu0809 EndPacket is iclass=6 & op2127=0x58 & op20=1 & op13=1 & op7=0x1 & op4=0x1 & Pd2 & pu1617 & pu0809 & $(END_PACKET) {
Pd2 = Pd2 & ~fastcorner9(pu1617,pu0809);
build EndPacket;
}
@@ -5561,11 +5849,11 @@ define pcodeop fastcorner9;
# (v4,6) getimask -- "Rd32 = getimask ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 1 1 0 0 0 0 s s s s s P P + + + + + + + + + d d d d d
+# 0 1 1 0 0 1 1 0 0 0 0 s s s s s P P - - - - - - - - - d d d d d
define pcodeop getimask;
-:getimask Rd5,rs5 EndPacket is iclass=6 & op2127=0x30 & op0513=0 & Rd5 & rs5 & $(END_PACKET) {
+:getimask Rd5,rs5 EndPacket is iclass=6 & op2127=0x30 & Rd5 & rs5 & $(END_PACKET) {
Rd5 = getimask(rs5);
build EndPacket;
}
@@ -5573,21 +5861,21 @@ define pcodeop getimask;
# (v4,5) hintjr -- "hintjr ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 0 0 1 0 1 0 1 s s s s s P P + + + + + + + + + + + + + +
+# 0 1 0 1 0 0 1 0 1 0 1 s s s s s P P - - - - - - - - - - - - - -
-:hintjr rs5 EndPacket is iclass=5 & op2127=0x15 & op0013=0 & rs5 & $(END_PACKET) {
- # TODO: appears in decomp compilation - not sure what it does
+:hintjr rs5 EndPacket is iclass=5 & op2127=0x15 & rs5 & $(END_PACKET) {
+ # branch hint - intentionally no-op
build EndPacket;
}
# (v2,6) iassignr -- "Rd32 = iassignr ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 1 1 0 0 1 1 s s s s s P P + + + + + + + + + d d d d d
+# 0 1 1 0 0 1 1 0 0 1 1 s s s s s P P - - - - - - - - - d d d d d
define pcodeop iassignr;
-:iassignr Rd5,rs5 EndPacket is iclass=6 & op2127=0x33 & op0513=0 & rs5 & Rd5 & $(END_PACKET) {
+:iassignr Rd5,rs5 EndPacket is iclass=6 & op2127=0x33 & rs5 & Rd5 & $(END_PACKET) {
Rd5 = iassignr(rs5);
build EndPacket;
}
@@ -5595,11 +5883,11 @@ define pcodeop iassignr;
# (v2,6) iassignw -- "iassignw ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 1 0 0 0 0 0 s s s s s P P + + + + + + 0 1 0 + + + + +
+# 0 1 1 0 0 1 0 0 0 0 0 s s s s s P P - - - - - - 0 1 0 - - - - -
define pcodeop iassignw; # TODO: What affect does this have
-:iassignw rs5 EndPacket is iclass=6 & op2127=0x20 & op0013=0x40 & rs5 & $(END_PACKET) {
+:iassignw rs5 EndPacket is iclass=6 & op2127=0x20 & op0507=0x2 & rs5 & $(END_PACKET) {
iassignw(rs5);
build EndPacket;
}
@@ -5607,11 +5895,11 @@ define pcodeop iassignw; # TODO: What affect does this have
# (v4,5) icdatar -- "Rd32 = icdatar ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 0 1 0 1 1 0 1 s s s s s P P + + + + + + + + + d d d d d
+# 0 1 0 1 0 1 0 1 1 0 1 s s s s s P P - - - - - - - - - d d d d d
define pcodeop icdatar;
-:icdatar Rd5,rs5 EndPacket is iclass=5 & op2127=0x2d & op0513=0 & rs5 & Rd5 & $(END_PACKET) {
+:icdatar Rd5,rs5 EndPacket is iclass=5 & op2127=0x2d & rs5 & Rd5 & $(END_PACKET) {
Rd5 = icdatar(rs5);
build EndPacket;
}
@@ -5619,11 +5907,11 @@ define pcodeop icdatar;
# (v66,5) icdataw -- "icdataw ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 0 1 0 1 1 1 0 s s s s s P P + t t t t t + + + + + + + +
+# 0 1 0 1 0 1 0 1 1 1 0 s s s s s P P 1 t t t t t - - - - - - - -
define pcodeop icache_data_write; # TODO: What affect does this have
-:icdataw rs5, rt5 EndPacket is iclass=5 & op2127=0x36 & rs5 & rt5 & $(END_PACKET) {
+:icdataw rs5, rt5 EndPacket is iclass=5 & op2127=0x2e & op13=1 & rs5 & rt5 & $(END_PACKET) {
icache_data_write(rs5, rt5);
build EndPacket;
}
@@ -5631,11 +5919,11 @@ define pcodeop icache_data_write; # TODO: What affect does this have
# (v2,5) icinva -- "icinva ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 0 1 1 0 1 1 0 s s s s s P P 0 0 0 + + + + + + + + + + +
+# 0 1 0 1 0 1 1 0 1 1 0 s s s s s P P 0 0 0 - - - - - - - - - - -
define pcodeop icache_inv_addr;
-:icinva rs5 EndPacket is iclass=5 & op2127=0x36 & op0013=0 & rs5 & $(END_PACKET) {
+:icinva rs5 EndPacket is iclass=5 & op2127=0x36 & op1113=0 & rs5 & $(END_PACKET) {
icache_inv_addr(rs5);
build EndPacket;
}
@@ -5643,11 +5931,11 @@ define pcodeop icache_inv_addr;
# (v2,5) icinvidx -- "icinvidx ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 0 1 1 0 1 1 0 s s s s s P P 0 0 1 + + + + + + + + + + +
+# 0 1 0 1 0 1 1 0 1 1 0 s s s s s P P 0 0 1 - - - - - - - - - - -
define pcodeop icinvidx; # TODO: What affect does this have
-:icinvidx rs5 EndPacket is iclass=5 & op2127=0x36 & op0013=0x800 & rs5 & $(END_PACKET) {
+:icinvidx rs5 EndPacket is iclass=5 & op2127=0x36 & op1113=0x1 & rs5 & $(END_PACKET) {
icinvidx(rs5);
build EndPacket;
}
@@ -5655,7 +5943,7 @@ define pcodeop icinvidx; # TODO: What affect does this have
# (v2,5) ickill -- "ickill"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 0 1 1 0 1 1 0 + + + + + P P 0 1 0 + + + + + + + + + + +
+# 0 1 0 1 0 1 1 0 1 1 0 - - - - - P P 0 1 0 - - - - - - - - - - -
define pcodeop ickill;
@@ -5667,11 +5955,11 @@ define pcodeop ickill;
# (v2,5) ictagr -- "Rd32 = ictagr ( Rs32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 0 1 0 1 1 1 1 s s s s s P P + + + + + + + + + d d d d d
+# 0 1 0 1 0 1 0 1 1 1 1 s s s s s P P - - - - - - - - - d d d d d
define pcodeop ictagr;
-:ictagr Rd5,rs5 EndPacket is iclass=5 & op2127=0x2f & op0513=0 & Rd5 & rs5 & $(END_PACKET) {
+:ictagr Rd5,rs5 EndPacket is iclass=5 & op2127=0x2f & Rd5 & rs5 & $(END_PACKET) {
Rd5 = ictagr(rs5);
build EndPacket;
}
@@ -5679,11 +5967,11 @@ define pcodeop ictagr;
# (v4,5) ictagw -- "ictagw ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 0 1 0 1 1 1 0 s s s s s P P + t t t t t + + + + + + + +
+# 0 1 0 1 0 1 0 1 1 1 0 s s s s s P P 0 t t t t t 0 0 0 0 0 0 0 0
define pcodeop ictagw;
-:ictagw rs5,rt5 EndPacket is iclass=5 & op2127=0x2e & op13=0 & op0007=0 & Rd5 & rs5 & rt5 & $(END_PACKET) {
+:ictagw rs5,rt5 EndPacket is iclass=5 & op2127=0x2e & op13=0 & op0007=0 & rs5 & rt5 & $(END_PACKET) {
ictagw(rs5, rt5);
build EndPacket;
}
@@ -5719,9 +6007,9 @@ Uimm32_1627_0013_6: "#"^val is i1627 & i0013 [ val = (i1627 << 20) | (i0013 <<
# (v2,12) insert -- "Rx32 = insert ( Rs32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 1 0 0 0 + + + s s s s s P P + t t t t t + + + x x x x x
+# 1 1 0 0 1 0 0 0 - - - s s s s s P P - t t t t t - - - x x x x x
-:insert Rd5,rs5,rtt5 EndPacket is iclass=12 & op2127=0x40 & op13=0 & op0507=0 & Rd5 & rd5 & rs5 & rtt5 & rtt5h & rt5 & $(END_PACKET) {
+:insert Rd5,rs5,rtt5 EndPacket is iclass=12 & op2427=0x8 & Rd5 & rd5 & rs5 & rtt5 & rtt5h & rt5 & $(END_PACKET) {
# width: rtt5h (hi-word of rtt5)
# offset: rt5 (lo-word of rtt5)
clrMask:4 = ~(((1 << rtt5h) - 1) << rt5);
@@ -5747,9 +6035,9 @@ Uimm32_1627_0013_6: "#"^val is i1627 & i0013 [ val = (i1627 << 20) | (i0013 <<
# (v2,12) insert -- "Rxx32 = insert ( Rss32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 1 0 1 0 0 + + s s s s s P P + t t t t t + + + x x x x x
+# 1 1 0 0 1 0 1 0 0 - - s s s s s P P 0 t t t t t - - - x x x x x
-:insert Rdd5,rss5,rtt5 EndPacket is iclass=12 & op2127=0x50 & op13=0 & op0507=0 & Rdd5 & rdd5 & rss5 & rtt5 & rtt5h & rt5 & $(END_PACKET) {
+:insert Rdd5,rss5,rtt5 EndPacket is iclass=12 & op2327=0x14 & op13=0 & Rdd5 & rdd5 & rss5 & rtt5 & rtt5h & rt5 & $(END_PACKET) {
# width: rtt5h (hi-word of rtt5)
# offset: rt5 (lo-word of rtt5)
clrMask:8 = ~(((1 << rtt5h) - 1) << rt5);
@@ -5761,9 +6049,9 @@ Uimm32_1627_0013_6: "#"^val is i1627 & i0013 [ val = (i1627 << 20) | (i0013 <<
# (v2,8) interleave -- "Rdd32 = interleave ( Rss32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 0 0 1 1 + s s s s s P P + + + + + + 1 0 1 d d d d d
+# 1 0 0 0 0 0 0 0 1 1 0 s s s s s P P - - - - - - 1 0 1 d d d d d
define pcodeop interleave;
-:interleave Rdd5,rss5 EndPacket is iclass=8 & op2127=0x06 & op0513=0x05 & Rdd5 & rss5 & $(END_PACKET) {
+:interleave Rdd5,rss5 EndPacket is iclass=8 & op2227=0x3 & op21=0 & op0507=0x5 & Rdd5 & rss5 & $(END_PACKET) {
Rdd5 = interleave(rss5);
build EndPacket;
}
@@ -5785,7 +6073,7 @@ define pcodeop isync;
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 0 1 0 1 1 0 0 i i i i i i i i i P P i i i i i i i i i i i i i -
-:jump RelDest22x EndPacket is iclass=5 & op2527=4 & op0=0 & RelDest22x & $(END_PACKET) {
+:jump RelDest22x EndPacket is iclass=5 & op2527=4 & RelDest22x & $(END_PACKET) {
build EndPacket;
<>
goto RelDest22x;
@@ -5794,17 +6082,18 @@ define pcodeop isync;
# (v2,5) jump -- "if ( Pu4 ) jump #r15:2x"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 1 1 0 0 i i 0 i i i i i P P i - 0 - u u i i i i i i i -
+# 0 1 0 1 1 1 0 0 i i 0 i i i i i P P i 0 0 - u u i i i i i i i -
#
# (v2,5) jump -- "if ( ! Pu4 ) jump #r15:2x"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 1 1 0 0 i i 1 i i i i i P P i - 0 - u u i i i i i i i -
+# 0 1 0 1 1 1 0 0 i i 1 i i i i i P P i 0 0 - u u i i i i i i i -
-:jump^FlowCondUU RelDest15x EndPacket is iclass=5 & op2427=0xc & op1112=0 & op10=0 & op0=0 & FlowCondUU & RelDest15x & $(END_PACKET) {
+:jump^FlowCondUU RelDest15x EndPacket is iclass=5 & op2427=0xc & op1112=0 & FlowCondUU & RelDest15x & $(END_PACKET) {
build FlowCondUU;
build EndPacket;
<>
+ build FlowCondUU;
if (ConditionReg == 0) goto ;
goto RelDest15x;
@@ -5813,27 +6102,28 @@ define pcodeop isync;
# (v60,5) jump:nt -- "if ( Pu4 ) jump:nt #r15:2x"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 1 1 0 0 i i 0 i i i i i P P i 0 0 + u u i i i i i i i +
+# 0 1 0 1 1 1 0 0 i i 0 i i i i i P P i 0 0 - u u i i i i i i i -
#
# (v60,5) jump:nt -- "if ( ! Pu4 ) jump:nt #r15:2x"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 1 1 0 0 i i 1 i i i i i P P i 0 0 + u u i i i i i i i +
+# 0 1 0 1 1 1 0 0 i i 1 i i i i i P P i 0 0 - u u i i i i i i i -
#
# (v60,5) jump:t -- "if ( Pu4 ) jump:t #r15:2x"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 1 1 0 0 i i 0 i i i i i P P i 1 0 + u u i i i i i i i +
+# 0 1 0 1 1 1 0 0 i i 0 i i i i i P P i 1 0 - u u i i i i i i i -
#
# (v60,5) jump:t -- "if ( ! Pu4 ) jump:t #r15:2x"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 1 1 0 0 i i 1 i i i i i P P i 1 0 + u u i i i i i i i +
+# 0 1 0 1 1 1 0 0 i i 1 i i i i i P P i 1 0 - u u i i i i i i i -
-:jump^FlowCondUU^Taken12 RelDest15x EndPacket is iclass=5 & op2427=0xc & op1011=0 & op0=0 & Taken12 & FlowCondUU & RelDest15x & $(END_PACKET) {
+:jump^FlowCondUU^Taken12 RelDest15x EndPacket is iclass=5 & op2427=0xc & op11=0 & Taken12 & FlowCondUU & RelDest15x & $(END_PACKET) {
build FlowCondUU;
build EndPacket;
<>
+ build FlowCondUU;
if (ConditionReg == 0) goto ;
goto RelDest15x;
@@ -5842,27 +6132,28 @@ define pcodeop isync;
# (v2,5) jump:nt -- "if ( Pu4 .new ) jump:nt #r15:2x"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 1 1 0 0 i i 0 i i i i i P P i 0 1 + u u i i i i i i i +
+# 0 1 0 1 1 1 0 0 i i 0 i i i i i P P i 0 1 - u u i i i i i i i -
#
# (v2,5) jump:nt -- "if ( ! Pu4 .new ) jump:nt #r15:2x"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 1 1 0 0 i i 1 i i i i i P P i 0 1 + u u i i i i i i i +
+# 0 1 0 1 1 1 0 0 i i 1 i i i i i P P i 0 1 - u u i i i i i i i -
#
# (v2,5) jump:t -- "if ( Pu4 .new ) jump:t #r15:2x"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 1 1 0 0 i i 0 i i i i i P P i 1 1 + u u i i i i i i i +
+# 0 1 0 1 1 1 0 0 i i 0 i i i i i P P i 1 1 - u u i i i i i i i -
#
# (v2,5) jump:t -- "if ( ! Pu4 .new ) jump:t #r15:2x"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 0 1 1 1 0 0 i i 1 i i i i i P P i 1 1 + u u i i i i i i i +
+# 0 1 0 1 1 1 0 0 i i 1 i i i i i P P i 1 1 - u u i i i i i i i -
-:jump^FlowCondNewUU^Taken12 RelDest15x EndPacket is iclass=5 & op2427=0xc & op1011=2 & op0=0 & Taken12 & FlowCondNewUU & RelDest15x & $(END_PACKET) {
+:jump^FlowCondNewUU^Taken12 RelDest15x EndPacket is iclass=5 & op2427=0xc & op11=1 & Taken12 & FlowCondNewUU & RelDest15x & $(END_PACKET) {
build FlowCondNewUU;
build EndPacket;
<>
+ build FlowCondNewUU;
if (ConditionReg == 0) goto ;
goto RelDest15x;
@@ -5871,49 +6162,49 @@ define pcodeop isync;
# (v4,6) jump:nt -- "if ( Rs32 != #0 ) jump:nt #r13:2"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 0 0 1 0 0 i s s s s s P P i 0 i i i i i i i i i i i +
+# 0 1 1 0 0 0 0 1 0 0 i s s s s s P P i 0 i i i i i i i i i i i -
#
# (v4,6) jump:t -- "if ( Rs32 != #0 ) jump:t #r13:2"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 0 0 1 0 0 i s s s s s P P i 1 i i i i i i i i i i i +
+# 0 1 1 0 0 0 0 1 0 0 i s s s s s P P i 1 i i i i i i i i i i i -
#
# (v4,6) jump:nt -- "if ( Rs32 <= #0 ) jump:nt #r13:2"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 0 0 1 1 1 i s s s s s P P i 0 i i i i i i i i i i i +
+# 0 1 1 0 0 0 0 1 1 1 i s s s s s P P i 0 i i i i i i i i i i i -
#
# (v4,6) jump:t -- "if ( Rs32 <= #0 ) jump:t #r13:2"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 0 0 1 1 1 i s s s s s P P i 1 i i i i i i i i i i i +
+# 0 1 1 0 0 0 0 1 1 1 i s s s s s P P i 1 i i i i i i i i i i i -
#
# (v4,6) jump:nt -- "if ( Rs32 == #0 ) jump:nt #r13:2"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 0 0 1 1 0 i s s s s s P P i 0 i i i i i i i i i i i +
+# 0 1 1 0 0 0 0 1 1 0 i s s s s s P P i 0 i i i i i i i i i i i -
#
# (v4,6) jump:t -- "if ( Rs32 == #0 ) jump:t #r13:2"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 0 0 1 1 0 i s s s s s P P i 1 i i i i i i i i i i i +
+# 0 1 1 0 0 0 0 1 1 0 i s s s s s P P i 1 i i i i i i i i i i i -
#
# (v4,6) jump:nt -- "if ( Rs32 >= #0 ) jump:nt #r13:2"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 0 0 1 0 1 i s s s s s P P i 0 i i i i i i i i i i i +
+# 0 1 1 0 0 0 0 1 0 1 i s s s s s P P i 0 i i i i i i i i i i i -
#
# (v4,6) jump:t -- "if ( Rs32 >= #0 ) jump:t #r13:2"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 1 1 0 0 0 0 1 0 1 i s s s s s P P i 1 i i i i i i i i i i i +
+# 0 1 1 0 0 0 0 1 0 1 i s s s s s P P i 1 i i i i i i i i i i i -
JmpRsCmp_2223: "("^rs5^"!=#0)" is op2223=0 & rs5 { tmp:1 = rs5 != 0; export tmp; }
JmpRsCmp_2223: "("^rs5^">=#0)" is op2223=1 & rs5 { tmp:1 = rs5 s>= 0; export tmp; }
JmpRsCmp_2223: "("^rs5^"==#0)" is op2223=2 & rs5 { tmp:1 = rs5 == 0; export tmp; }
JmpRsCmp_2223: "("^rs5^"<=#0)" is op2223=3 & rs5 { tmp:1 = rs5 s<= 0; export tmp; }
-:jump.if^Taken12 JmpRsCmp_2223,RelDest13 EndPacket is iclass=6 & op2427=1 & op0=0 & Taken12 & JmpRsCmp_2223 & RelDest13 & $(END_PACKET) {
+:jump.if^Taken12 JmpRsCmp_2223,RelDest13 EndPacket is iclass=6 & op2427=1 & Taken12 & JmpRsCmp_2223 & RelDest13 & $(END_PACKET) {
build EndPacket;
<>
if (JmpRsCmp_2223 == 0) goto ;
@@ -6218,7 +6509,7 @@ JumpIf_2326_S22: "!"^JumpCmp_2326 is op22=1 & JumpCmp_2326 {
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 0 1 0 1 0 0 1 0 1 0 0 s s s s s P P - - - - - - - - - - - - - -
-:jumpr rs5 EndPacket is iclass=5 & op2127=0x14 & op0013=0 & rs5 & $(END_PACKET) {
+:jumpr rs5 EndPacket is iclass=5 & op2127=0x14 & rs5 & $(END_PACKET) {
dest:4 = rs5;
build EndPacket;
<>
@@ -6226,6 +6517,11 @@ JumpIf_2326_S22: "!"^JumpCmp_2326 is op22=1 & JumpCmp_2326 {
}
# jumpr LR (special case: treat as return)
+# (v2,5) jumpr -- "jumpr LR"
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# 0 1 0 1 0 0 0 1 0 0 0 1 1 1 1 1 P P 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+
:jumpr LR EndPacket is iclass=5 & op2127=0x14 & op1620=31 & op0013=0 & LR & $(END_PACKET) {
dest:4 = LR;
build EndPacket;
@@ -6238,7 +6534,12 @@ JumpIf_2326_S22: "!"^JumpCmp_2326 is op22=1 & JumpCmp_2326 {
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 0 1 0 1 0 0 1 0 1 1 0 s s s s s P P - - - - - - - - - - - - - -
-:jumprh rs5 EndPacket is iclass=5 & op2127=0x16 & op0013=0 & rs5 & $(END_PACKET) {
+# (v2,5) jumprh -- "jumprh ( Rs32 )"
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# 0 1 0 1 0 0 0 1 0 1 1 s s s s s P P 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+
+:jumprh rs5 EndPacket is iclass=5 & op2127=0x16 & rs5 & $(END_PACKET) {
dest:4 = rs5;
build EndPacket;
<>
@@ -6273,22 +6574,24 @@ JumpIf_2326_S22: "!"^JumpCmp_2326 is op22=1 & JumpCmp_2326 {
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 0 1 0 1 0 0 1 1 0 1 1 s s s s s P P - 1 0 - u u - - - - - - - -
-:jumpr^FlowCondUU^Taken12 rs5 EndPacket is iclass=5 & op2227=0xd & Taken12 & op11=0 & op0007=0 & rs5 & FlowCondUU & $(END_PACKET) {
+:jumpr^FlowCondUU^Taken12 rs5 EndPacket is iclass=5 & op2227=0xd & op11=0 & Taken12 & rs5 & FlowCondUU & $(END_PACKET) {
dest:4 = rs5;
build FlowCondUU;
build EndPacket;
<>
+ build FlowCondUU;
if (ConditionReg == 0) goto ;
goto [dest];
}
# if ([!]Pu) jumpr LR (special case: treat as conditional return)
-:jumpr^FlowCondUU^Taken12 LR EndPacket is iclass=5 & op2227=0xd & op1620=31 & Taken12 & op11=0 & op0007=0 & LR & FlowCondUU & $(END_PACKET) {
+:jumpr^FlowCondUU^Taken12 LR EndPacket is iclass=5 & op2227=0xd & op1620=31 & op11=0 & op0007=0 & Taken12 & LR & FlowCondUU & $(END_PACKET) {
dest:4 = LR;
build FlowCondUU;
build EndPacket;
<>
+ build FlowCondUU;
if (ConditionReg == 0) goto ;
return [dest];
@@ -6314,22 +6617,29 @@ JumpIf_2326_S22: "!"^JumpCmp_2326 is op22=1 & JumpCmp_2326 {
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 0 1 0 1 0 0 1 1 0 1 1 s s s s s P P - 1 1 - u u - - - - - - - -
-:jumpr^FlowCondNewUU^Taken12 rs5 EndPacket is iclass=5 & op2227=0xd & Taken12 & op11=1 & rs5 & FlowCondNewUU & $(END_PACKET) {
+:jumpr^FlowCondNewUU^Taken12 rs5 EndPacket is iclass=5 & op2227=0xd & op11=1 & Taken12 & rs5 & FlowCondNewUU & $(END_PACKET) {
dest:4 = rs5;
build FlowCondNewUU;
build EndPacket;
<>
+ build FlowCondNewUU;
if (ConditionReg == 0) goto ;
goto [dest];
}
# if ([!]Pu.new) jumpr LR (special case: treat as conditional return)
-:jumpr^FlowCondNewUU LR EndPacket is iclass=5 & op2227=0xd & op1620=31 & Taken12 & op11=1 & LR & FlowCondNewUU & $(END_PACKET) {
+# (v2,5) jumpr -- "if ([!]Pu4) jumpr:t LR"
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# 0 1 0 1 0 0 1 1 0 N - 1 1 1 1 1 P P 1 - - - - - 1 T - - - - - -
+
+:jumpr^FlowCondNewUU LR EndPacket is iclass=5 & op2227=0xd & op1620=31 & op11=1 & Taken12 & LR & FlowCondNewUU & $(END_PACKET) {
dest:4 = LR;
build FlowCondNewUU;
build EndPacket;
<>
+ build FlowCondNewUU;
if (ConditionReg == 0) goto ;
return [dest];
@@ -6386,21 +6696,21 @@ define pcodeop l2cleaninvidx;
# (v4,10) l2fetch -- "l2fetch ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 0 1 1 0 0 + + s s s s s P P - t t t t t - - - - - - - -
+# 1 0 1 0 0 1 1 0 0 0 0 s s s s s P P - t t t t t 0 0 0 - - - - -
define pcodeop l2fetch;
-:l2fetch rs5,rt5 EndPacket is iclass=10 & op2127=0x30 & rs5 & rt5 & op13=0 & op0007=0 & $(END_PACKET) {
+:l2fetch rs5,rt5 EndPacket is iclass=10 & op2327=0xc & op22=0 & op21=0 & op7=0 & op6=0 & op5=0 & rs5 & rt5 & $(END_PACKET) {
l2fetch(rs5,rt5);
build EndPacket;
}
-# (v?,10) l2fetch -- "l2fetch ( Rs32 , Rtt32 )"
+# (v5,10) l2fetch -- "l2fetch ( Rs32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 0 1 1 0 1 + + s s s s s P P - t t t t t - - - - - - - -
+# 1 0 1 0 0 1 1 0 1 0 0 s s s s s P P - t t t t t - - - - - - - -
-:l2fetch rs5,rtt5 EndPacket is iclass=10 & op2127=0x34 & rs5 & rtt5 & $(END_PACKET) {
+:l2fetch rs5,rtt5 EndPacket is iclass=10 & op2327=0xd & op22=0 & op21=0 & rs5 & rtt5 & $(END_PACKET) {
l2fetch(rs5,rtt5);
build EndPacket;
}
@@ -6408,7 +6718,7 @@ define pcodeop l2fetch;
# (v65,10) l2gclean -- "l2gclean"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 0 0 0 0 0 1 + + + + + P P - 1 0 0 - - - - - - - - - -
+# 1 0 1 0 1 0 0 0 0 0 1 - - - - - P P - 1 0 0 - - - - - - - - - -
define pcodeop l2gclean;
@@ -6420,7 +6730,7 @@ define pcodeop l2gclean;
# (v65,10) l2gclean -- "l2gclean ( Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 0 1 1 0 1 0 1 + + + + + P P - t t t t t - - - - - - - -
+# 1 0 1 0 0 1 1 0 1 0 1 - - - - - P P - t t t t t - - - - - - - -
:l2gclean rtt5 EndPacket is iclass=10 & op2127=0x35 & rtt5 & $(END_PACKET) {
l2gclean(rtt5);
@@ -6430,7 +6740,7 @@ define pcodeop l2gclean;
# (v65,10) l2gcleaninv -- "l2gcleaninv"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 0 0 0 0 0 1 + + + + + P P - 1 1 0 - - - - - - - - - -
+# 1 0 1 0 1 0 0 0 0 0 1 - - - - - P P - 1 1 0 - - - - - - - - - -
define pcodeop l2gcleaninv;
@@ -6442,7 +6752,7 @@ define pcodeop l2gcleaninv;
# (v65,10) l2gcleaninv -- "l2gcleaninv ( Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 0 1 1 0 1 1 0 + + + + + P P - t t t t t - - - - - - - -
+# 1 0 1 0 0 1 1 0 1 1 0 - - - - - P P - t t t t t - - - - - - - -
:l2gcleaninv rtt5 EndPacket is iclass=10 & op2127=0x36 & rtt5 & $(END_PACKET) {
l2gcleaninv(rtt5);
@@ -6452,7 +6762,7 @@ define pcodeop l2gcleaninv;
# (v65,10) l2gunlock -- "l2gunlock"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 0 0 0 0 0 1 + + + + + P P - 0 1 0 - - - - - - - - - -
+# 1 0 1 0 1 0 0 0 0 0 1 - - - - - P P - 0 1 0 - - - - - - - - - -
define pcodeop l2gunlock;
@@ -6536,21 +6846,21 @@ define pcodeop l2locka;
# (v2,12) lfs -- "Rdd32 = lfs ( Rss32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 0 0 0 0 1 1 0 + s s s s s P P + t t t t t 1 1 + d d d d d
+# 1 1 0 0 0 0 0 1 1 0 - s s s s s P P - t t t t t 1 1 0 d d d d d
define pcodeop lfs;
-:lfs Rdd5,rss5,rtt5 EndPacket is iclass=12 & op2127=0x0c & op13=0 & op0507=6 & Rdd5 & rss5 & rtt5 & $(END_PACKET) {
+:lfs Rdd5,rss5,rtt5 EndPacket is iclass=12 & op2227=0x6 & op0607=3 & op5=0 & Rdd5 & rss5 & rtt5 & $(END_PACKET) {
Rdd5 = lfs(rss5, rtt5);
build EndPacket;
}
-
# linecpy -- "Rdd32 = linecpy( Rs32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 0 0 1 1 0 0 1 1 1 1 t t t t t P P 0 s s s s s 0 0 1 d d d d d
define pcodeop linecpy;
+
:linecpy Rdd5,rt5,rss5 EndPacket is iclass=0x9 & op2127=0x4f & op13=0 & op0507=1 & Rdd5 & rss5 & rt5 & $(END_PACKET) {
Rdd5 = linecpy(rt5, rss5);
}
@@ -6572,7 +6882,7 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 0 1 1 0 1 0 0 1 0 0 0 I I I I I P P - i i i i i I I I i i - I I
-:loop0 LoopRelMem7x,LoopUimm10 EndPacket is iclass=6 & op2127=0x48 & op13=0 & op2=0 & LoopRelMem7x & LoopRelAddr7x & LoopUimm10 & $(END_PACKET) {
+:loop0 LoopRelMem7x,LoopUimm10 EndPacket is iclass=6 & op2127=0x48 & LoopRelMem7x & LoopRelAddr7x & LoopUimm10 & $(END_PACKET) {
SA0_ = LoopRelAddr7x;
LC0_ = LoopUimm10;
build EndPacket;
@@ -6587,7 +6897,7 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 0 1 1 0 0 0 0 0 0 0 0 s s s s s P P - i i i i i - - - i i - - -
-:loop0 LoopRelMem7x,rs5 EndPacket is iclass=6 & op2127=0 & op13=0 & op0507=0 & op0002=0 & LoopRelMem7x & LoopRelAddr7x & rs5 & $(END_PACKET) {
+:loop0 LoopRelMem7x,rs5 EndPacket is iclass=6 & op2127=0 & LoopRelMem7x & LoopRelAddr7x & rs5 & $(END_PACKET) {
SA0_ = LoopRelAddr7x;
LC0_ = rs5;
build EndPacket;
@@ -6602,7 +6912,7 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 0 1 1 0 1 0 0 1 0 0 1 I I I I I P P - i i i i i I I I i i - I I
-:loop1 LoopRelMem7x,LoopUimm10 EndPacket is iclass=6 & op2127=0x49 & op13=0 & op2=0 & LoopRelMem7x & LoopRelAddr7x & LoopUimm10 & $(END_PACKET) {
+:loop1 LoopRelMem7x,LoopUimm10 EndPacket is iclass=6 & op2127=0x49 & LoopRelMem7x & LoopRelAddr7x & LoopUimm10 & $(END_PACKET) {
SA1_ = LoopRelAddr7x;
LC1_ = LoopUimm10;
build EndPacket;
@@ -6617,7 +6927,7 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 0 1 1 0 0 0 0 0 0 0 1 s s s s s P P - i i i i i - - - i i - - -
-:loop1 LoopRelMem7x,rs5 EndPacket is iclass=6 & op2127=1 & op13=0 & op0507=0 & op0002=0 & LoopRelMem7x & LoopRelAddr7x & rs5 & $(END_PACKET) {
+:loop1 LoopRelMem7x,rs5 EndPacket is iclass=6 & op2127=1 & LoopRelMem7x & LoopRelAddr7x & rs5 & $(END_PACKET) {
SA1_ = LoopRelAddr7x;
LC1_ = rs5;
build EndPacket;
@@ -6630,43 +6940,48 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v4,12) lsl -- "Rd32 = lsl ( #s6 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x34 & op13=0 & op0607=3 & Rd5 & rt5 & Simm8_1620_05 & $(END_PACKET) {
- Rd5 = sext(Simm8_1620_05) << rt5;
+:lsl Rd5,Simm8_1620_05,rt5 EndPacket is iclass=12 & op2227=0x1a & op0607=3 & Rd5 & rt5 & Simm8_1620_05 & $(END_PACKET) {
+ 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;
}
# (v2,12) lsl -- "Rd32 = lsl ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x32 & op13=0 & op0507=6 & Rd5 & rt5 & rs5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- Rd5 = (zext(right) * (rs5 >> -rt5)) + (zext(!right) * (rs5 << rt5));
+:lsl Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x19 & op0607=3 & Rd5 & rt5 & rs5 & $(END_PACKET) {
+ shamt:4 = (rt5 << 25) s>> 25;
+ right:1 = shamt s< 0;
+ Rd5 = (zext(right) * (rs5 >> -shamt)) + (zext(!right) * (rs5 << shamt));
build EndPacket;
}
# (v2,12) lsl -- "Rdd32 = lsl ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x1c & op13=0 & op0507=6 & Rdd5 & rt5 & rss5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- Rdd5 = (zext(right) * (rss5 >> -rt5)) + (zext(!right) * (rss5 << rt5));
+:lsl Rdd5,rss5,rt5 EndPacket is iclass=12 & op2227=0xe & op0607=3 & Rdd5 & rt5 & rss5 & $(END_PACKET) {
+ shamt:4 = (rt5 << 25) s>> 25;
+ right:1 = shamt s< 0;
+ Rdd5 = (zext(right) * (rss5 >> -shamt)) + (zext(!right) * (rss5 << shamt));
build EndPacket;
}
# (v2,12) lsl -- "Rx32 &= lsl ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x62 & op13=0 & op0507=6 & Rd5 & rd5 & rt5 & rs5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- result:4 = (zext(right) * (rs5 >> -rt5)) + (zext(!right) * (rs5 << rt5));
+:lsl&= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x31 & op0607=3 & Rd5 & rd5 & rt5 & rs5 & $(END_PACKET) {
+ 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;
}
@@ -6674,11 +6989,12 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,12) lsl -- "Rx32 += lsl ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x66 & op13=0 & op0507=6 & Rd5 & rd5 & rt5 & rs5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- result:4 = (zext(right) * (rs5 >> -rt5)) + (zext(!right) * (rs5 << rt5));
+:lsl+= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x33 & op0607=3 & Rd5 & rd5 & rt5 & rs5 & $(END_PACKET) {
+ 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;
}
@@ -6686,11 +7002,12 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,12) lsl -- "Rx32 -= lsl ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x64 & op13=0 & op0507=6 & Rd5 & rd5 & rt5 & rs5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- result:4 = (zext(right) * (rs5 >> -rt5)) + (zext(!right) * (rs5 << rt5));
+:lsl-= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x32 & op0607=3 & Rd5 & rd5 & rt5 & rs5 & $(END_PACKET) {
+ 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;
}
@@ -6698,11 +7015,12 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,12) lsl -- "Rx32 |= lsl ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x60 & op13=0 & op0507=6 & Rd5 & rd5 & rt5 & rs5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- result:4 = (zext(right) * (rs5 >> -rt5)) + (zext(!right) * (rs5 << rt5));
+:lsl|= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x30 & op0607=3 & Rd5 & rd5 & rt5 & rs5 & $(END_PACKET) {
+ 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;
}
@@ -6710,21 +7028,25 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,12) lsl -- "Rxx32 &= lsl ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=6 & Rdd5 & rdd5 & rt5 & rss5 & $(END_PACKET) {
- Rdd5 = rdd5 & (rss5 << rt5);
+:lsl&= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5a & op0607=3 & Rdd5 & rdd5 & rt5 & rss5 & $(END_PACKET) {
+ 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;
}
# (v2,12) lsl -- "Rxx32 += lsl ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=6 & Rdd5 & rdd5 & rt5 & rss5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- result:8 = (zext(right) * (rss5 >> -rt5)) + (zext(!right) * (rss5 << rt5));
+:lsl+= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5e & op0607=3 & Rdd5 & rdd5 & rt5 & rss5 & $(END_PACKET) {
+ 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;
}
@@ -6732,11 +7054,12 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,12) lsl -- "Rxx32 -= lsl ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=6 & Rdd5 & rdd5 & rt5 & rss5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- result:8 = (zext(right) * (rss5 >> -rt5)) + (zext(!right) * (rss5 << rt5));
+:lsl-= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5c & op0607=3 & Rdd5 & rdd5 & rt5 & rss5 & $(END_PACKET) {
+ 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;
}
@@ -6744,11 +7067,12 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v4,12) lsl -- "Rxx32 ^= lsl ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=6 & Rdd5 & rdd5 & rt5 & rss5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- result:8 = (zext(right) * (rss5 >> -rt5)) + (zext(!right) * (rss5 << rt5));
+:lsl"^=" Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5b & op0607=3 & Rdd5 & rdd5 & rt5 & rss5 & $(END_PACKET) {
+ 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;
}
@@ -6756,11 +7080,12 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,12) lsl -- "Rxx32 |= lsl ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=6 & Rdd5 & rdd5 & rt5 & rss5 & $(END_PACKET) {
- right:1 = rt5 s< 0;
- result:8 = (zext(right) * (rss5 >> -rt5)) + (zext(!right) * (rss5 << rt5));
+:lsl|= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x58 & op0607=3 & Rdd5 & rdd5 & rt5 & rss5 & $(END_PACKET) {
+ 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;
}
@@ -6778,20 +7103,21 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,12) lsr -- "Rd32 = lsr ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x32 & op13=0 & op0507=2 & Rd5 & rs5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- Rd5 = (zext(!left) * (rs5 >> rt5)) + (zext(left) * (rs5 << -rt5));
+:lsr Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x19 & op0607=1 & Rd5 & rs5 & rt5 & $(END_PACKET) {
+ shamt:4 = (rt5 << 25) s>> 25;
+ left:1 = shamt s< 0;
+ Rd5 = (zext(!left) * (rs5 >> shamt)) + (zext(left) * (rs5 << -shamt));
build EndPacket;
}
# (v2,8) lsr -- "Rdd32 = lsr ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 0 0 0 0 + s s s s s P P i i i i i i 0 0 1 d d d d d
+# 1 0 0 0 0 0 0 0 0 0 0 s s s s s P P i i i i i i 0 0 1 d d d d d
-:lsr Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x00 & op0507=1 & Rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+:lsr Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x0 & op21=0 & op0507=1 & Rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
Rdd5 = rss5 >> Uimm8_0813;
build EndPacket;
}
@@ -6799,20 +7125,21 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,12) lsr -- "Rdd32 = lsr ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x1c & op13=0 & op0507=2 & Rdd5 & rss5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- Rdd5 = (zext(!left) * (rss5 >> rt5)) + (zext(left) * (rss5 << -rt5));
+:lsr Rdd5,rss5,rt5 EndPacket is iclass=12 & op2227=0xe & op0607=1 & Rdd5 & rss5 & rt5 & $(END_PACKET) {
+ shamt:4 = (rt5 << 25) s>> 25;
+ left:1 = shamt s< 0;
+ Rdd5 = (zext(!left) * (rss5 >> shamt)) + (zext(left) * (rss5 << -shamt));
build EndPacket;
}
# (v2,8) lsr -- "Rx32 &= lsr ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 0 1 + s s s s s P P 0 i i i i i 0 0 1 x x x x x
+# 1 0 0 0 1 1 1 0 0 1 - s s s s s P P 0 i i i i i 0 0 1 x x x x x
-:lsr&= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x72 & op13=0 & op0507=1 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+:lsr&= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x39 & op13=0 & op0507=1 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
Rd5 = rd5 & (rs5 >> Uimm8_0812);
build EndPacket;
}
@@ -6820,11 +7147,12 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,12) lsr -- "Rx32 &= lsr ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x62 & op13=0 & op0507=2 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- result:4 = (zext(!left) * (rs5 >> rt5)) + (zext(left) * (rs5 << -rt5));
+:lsr&= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x31 & op0607=1 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -6832,9 +7160,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,8) lsr -- "Rx32 += lsr ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 0 0 + s s s s s P P 0 i i i i i 1 0 1 x x x x x
+# 1 0 0 0 1 1 1 0 0 0 - s s s s s P P 0 i i i i i 1 0 1 x x x x x
-:lsr+= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x70 & op13=0 & op0507=5 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+:lsr+= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x38 & op13=0 & op0507=5 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
Rd5 = rd5 + (rs5 >> Uimm8_0812);
build EndPacket;
}
@@ -6842,11 +7170,12 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,12) lsr -- "Rx32 += lsr ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x66 & op13=0 & op0507=2 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- result:4 = (zext(!left) * (rs5 >> rt5)) + (zext(left) * (rs5 << -rt5));
+:lsr+= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x33 & op0607=1 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -6854,9 +7183,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,8) lsr -- "Rx32 -= lsr ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 0 0 + s s s s s P P 0 i i i i i 0 0 1 x x x x x
+# 1 0 0 0 1 1 1 0 0 0 - s s s s s P P 0 i i i i i 0 0 1 x x x x x
-:lsr-= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x70 & op13=0 & op0507=1 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+:lsr-= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x38 & op13=0 & op0507=1 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
Rd5 = rd5 - (rs5 >> Uimm8_0812);
build EndPacket;
}
@@ -6864,11 +7193,12 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,12) lsr -- "Rx32 -= lsr ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x64 & op13=0 & op0507=2 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- result:4 = (zext(!left) * (rs5 >> rt5)) + (zext(left) * (rs5 << -rt5));
+:lsr-= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x32 & op0607=1 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -6876,9 +7206,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,8) lsr -- "Rx32 ^= lsr ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 1 0 + s s s s s P P 0 i i i i i 0 0 1 x x x x x
+# 1 0 0 0 1 1 1 0 1 0 - s s s s s P P 0 i i i i i 0 0 1 x x x x x
-:lsr"^=" Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x74 & op13=0 & op0507=1 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+:lsr"^=" Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x3a & op13=0 & op0507=1 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
Rd5 = rd5 ^ (rs5 >> Uimm8_0812);
build EndPacket;
}
@@ -6886,9 +7216,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,8) lsr -- "Rx32 |= lsr ( Rs32 , #u5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 1 1 1 0 0 1 + s s s s s P P 0 i i i i i 1 0 1 x x x x x
+# 1 0 0 0 1 1 1 0 0 1 - s s s s s P P 0 i i i i i 1 0 1 x x x x x
-:lsr|= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2127=0x72 & op13=0 & op0507=5 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
+:lsr|= Rd5,rs5,Uimm8_0812 EndPacket is iclass=8 & op2227=0x39 & op13=0 & op0507=5 & Rd5 & rd5 & rs5 & Uimm8_0812 & $(END_PACKET) {
Rd5 = rd5 | (rs5 >> Uimm8_0812);
build EndPacket;
}
@@ -6896,11 +7226,12 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,12) lsr -- "Rx32 |= lsr ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op2127=0x60 & op13=0 & op0507=2 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- result:4 = (zext(!left) * (rs5 >> rt5)) + (zext(left) * (rs5 << -rt5));
+:lsr|= Rd5,rs5,rt5 EndPacket is iclass=12 & op2227=0x30 & op0607=1 & Rd5 & rd5 & rs5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -6908,9 +7239,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,8) lsr -- "Rxx32 &= lsr ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 0 1 + s s s s s P P i i i i i i 0 0 1 x x x x x
+# 1 0 0 0 0 0 1 0 0 1 - s s s s s P P i i i i i i 0 0 1 x x x x x
-:lsr&= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x12 & op0507=1 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+:lsr&= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x9 & op0507=1 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
Rdd5 = rdd5 & (rss5 >> Uimm8_0813);
build EndPacket;
}
@@ -6918,11 +7249,12 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,12) lsr -- "Rxx32 &= lsr ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=2 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- result:8 = (zext(!left) * (rss5 >> rt5)) + (zext(left) * (rss5 << -rt5));
+:lsr&= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5a & op0607=1 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -6930,9 +7262,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,8) lsr -- "Rxx32 += lsr ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 0 0 + s s s s s P P i i i i i i 1 0 1 x x x x x
+# 1 0 0 0 0 0 1 0 0 0 - s s s s s P P i i i i i i 1 0 1 x x x x x
-:lsr+= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x10 & op0507=5 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+:lsr+= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x8 & op0507=5 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
Rdd5 = rdd5 + (rss5 >> Uimm8_0813);
build EndPacket;
}
@@ -6940,11 +7272,12 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,12) lsr -- "Rxx32 += lsr ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=2 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- result:8 = (zext(!left) * (rss5 >> rt5)) + (zext(left) * (rss5 << -rt5));
+:lsr+= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5e & op0607=1 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -6952,9 +7285,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,8) lsr -- "Rxx32 -= lsr ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 0 0 + s s s s s P P i i i i i i 0 0 1 x x x x x
+# 1 0 0 0 0 0 1 0 0 0 - s s s s s P P i i i i i i 0 0 1 x x x x x
-:lsr-= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x10 & op0507=1 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+:lsr-= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x8 & op0507=1 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
Rdd5 = rdd5 - (rss5 >> Uimm8_0813);
build EndPacket;
}
@@ -6962,11 +7295,12 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,12) lsr -- "Rxx32 -= lsr ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=2 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- result:8 = (zext(!left) * (rss5 >> rt5)) + (zext(left) * (rss5 << -rt5));
+:lsr-= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5c & op0607=1 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -6974,9 +7308,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,8) lsr -- "Rxx32 ^= lsr ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 1 0 + s s s s s P P i i i i i i 0 0 1 x x x x x
+# 1 0 0 0 0 0 1 0 1 0 - s s s s s P P i i i i i i 0 0 1 x x x x x
-:lsr"^=" Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x14 & op0507=1 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+:lsr"^=" Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0xa & op0507=1 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
Rdd5 = rdd5 ^ (rss5 >> Uimm8_0813);
build EndPacket;
}
@@ -6984,11 +7318,12 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v4,12) lsr -- "Rxx32 ^= lsr ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=2 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- result:8 = (zext(!left) * (rss5 >> rt5)) + (zext(left) * (rss5 << -rt5));
+:lsr"^=" Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x5b & op0607=1 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -6996,9 +7331,9 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,8) lsr -- "Rxx32 |= lsr ( Rss32 , #u6 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 0 1 0 0 1 + s s s s s P P i i i i i i 1 0 1 x x x x x
+# 1 0 0 0 0 0 1 0 0 1 - s s s s s P P i i i i i i 1 0 1 x x x x x
-:lsr|= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2127=0x12 & op0507=5 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
+:lsr|= Rdd5,rss5,Uimm8_0813 EndPacket is iclass=8 & op2227=0x9 & op0507=5 & Rdd5 & rdd5 & rss5 & Uimm8_0813 & $(END_PACKET) {
Rdd5 = rdd5 | (rss5 >> Uimm8_0813);
build EndPacket;
}
@@ -7006,11 +7341,12 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,12) lsr -- "Rxx32 |= lsr ( Rss32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 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
+# 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 & op13=0 & op0507=2 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
- left:1 = rt5 s< 0;
- result:8 = (zext(!left) * (rss5 >> rt5)) + (zext(left) * (rss5 << -rt5));
+:lsr|= Rdd5,rss5,rt5 EndPacket is iclass=12 & op2127=0x58 & op0607=1 & Rdd5 & rdd5 & rss5 & rt5 & $(END_PACKET) {
+ 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;
}
@@ -7018,10 +7354,10 @@ LoopUimm10: "#"^val is i1620 & i0507 & i0001 [ val = (i1620 << 5) | (i0507 <<
# (v2,8) mask -- "Rdd32 = mask ( Pt4 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 0 0 1 1 0 + + + + + + + + P P + + + + t t + + + d d d d d
+# 1 0 0 0 0 1 1 0 - - - - - - - - P P - - - - t t - - - d d d d d
define pcodeop maskGenerate;
-:mask Rdd5,pu0809 EndPacket is iclass=8 & op2127=0x30 & op1620=0 & op1013=0 & op0507=0 & Rdd5 & pu0809 & $(END_PACKET) {
+:mask Rdd5,pu0809 EndPacket is iclass=8 & op2427=0x6 & Rdd5 & pu0809 & $(END_PACKET) {
val:1 = 0xff;
Rdd5[0,8] = val * (pu0809) & 1;
Rdd5[8,8] = val * (pu0809 >> 1) & 1;
@@ -7039,7 +7375,12 @@ define pcodeop maskGenerate;
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 0 0 0 1 1 0 1 0 I I - - - - - P P 1 i i i i i I I I d d d d d
-:mask Rd5,Uimm8_0812,Uimm8_2122_0507 EndPacket is iclass=8 & op2327=0x1a & op13=1 & Rd5 & op1620=0 & Uimm8_0812 & Uimm8_2122_0507 & $(END_PACKET) {
+# (v2,8) mask -- "Rd32 = mask ( #u5 , Uimm8 )"
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# 1 0 0 0 0 0 0 1 - - - - - - - - P P - i i i i i i i i i i i i i
+
+:mask Rd5,Uimm8_0812,Uimm8_2122_0507 EndPacket is iclass=8 & op2327=0x1a & op13=1 & Rd5 & Uimm8_0812 & Uimm8_2122_0507 & $(END_PACKET) {
Rd5 = ((1< rt5;
Rd5 = (zext(bool) * rs5) + (zext(!bool) * rt5);
build EndPacket;
@@ -7058,9 +7399,9 @@ define pcodeop maskGenerate;
# (v4,13) max -- "Rdd32 = max ( Rss32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 0 1 1 1 1 0 s s s s s P P + t t t t t 1 0 0 d d d d d
+# 1 1 0 1 0 0 1 1 1 1 0 s s s s s P P - t t t t t 1 0 0 d d d d d
-:max Rdd5,rss5,rtt5 EndPacket is iclass=13 & op2127=0x1e & op13=0 & op0507=4 & Rdd5 & rss5 & rtt5 & $(END_PACKET) {
+:max Rdd5,rss5,rtt5 EndPacket is iclass=13 & op2127=0x1e & op0507=4 & Rdd5 & rss5 & rtt5 & $(END_PACKET) {
bool:1 = rss5 s> rtt5;
Rdd5 = (zext(bool) * rss5) + (zext(!bool) * rtt5);
build EndPacket;
@@ -7069,9 +7410,9 @@ define pcodeop maskGenerate;
# (v2,13) maxu -- "Rd32 = maxu ( Rs32 , Rt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 1 0 1 1 1 0 s s s s s P P + t t t t t 1 + + d d d d d
+# 1 1 0 1 0 1 0 1 1 1 0 s s s s s P P - t t t t t 1 - - d d d d d
-:maxu Rd5,rs5,rt5 EndPacket is iclass=13 & op2127=0x2e & op13=0 & op0507=4 & Rd5 & rs5 & rt5 & $(END_PACKET) {
+:maxu Rd5,rs5,rt5 EndPacket is iclass=13 & op2127=0x2e & op7=1 & Rd5 & rs5 & rt5 & $(END_PACKET) {
bool:1 = rs5 > rt5;
Rd5 = (zext(bool) * rs5) + (zext(!bool) * rt5);
build EndPacket;
@@ -7080,9 +7421,9 @@ define pcodeop maskGenerate;
# (v4,13) maxu -- "Rdd32 = maxu ( Rss32 , Rtt32 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 1 0 1 0 0 1 1 1 1 0 s s s s s P P + t t t t t 1 0 1 d d d d d
+# 1 1 0 1 0 0 1 1 1 1 0 s s s s s P P - t t t t t 1 0 1 d d d d d
-:maxu Rdd5,rss5,rtt5 EndPacket is iclass=13 & op2127=0x1e & op13=0 & op0507=5 & Rdd5 & rss5 & rtt5 & $(END_PACKET) {
+:maxu Rdd5,rss5,rtt5 EndPacket is iclass=13 & op2127=0x1e & op0507=5 & Rdd5 & rss5 & rtt5 & $(END_PACKET) {
bool:1 = rss5 > rtt5;
Rdd5 = (zext(bool) * rss5) + (zext(!bool) * rtt5);
build EndPacket;
@@ -7101,9 +7442,9 @@ define pcodeop maskGenerate;
# (v4,3) memb -- "Rd32 = memb ( Rs32 + Rt32 << #n2 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 0 1 1 1 0 1 0 0 0 0 s s s s s P P n t t t t t n + + d d d d d
+# 0 0 1 1 1 0 1 0 0 0 0 s s s s s P P n t t t t t n - - d d d d d
-:memb Rd5,MemRsRelShiftC3b EndPacket is iclass=3 & op2127=0x50 & op0506=0 & Rd5 & MemRsRelShiftC3b & $(END_PACKET) {
+:memb Rd5,MemRsRelShiftC3b EndPacket is iclass=3 & op2127=0x50 & Rd5 & MemRsRelShiftC3b & $(END_PACKET) {
Rd5 = sext(MemRsRelShiftC3b);
build EndPacket;
}
@@ -7121,9 +7462,9 @@ define pcodeop maskGenerate;
# (v4,9) memb -- "Rd32 = memb ( Rf32 = #U6x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 1 1 0 0 0 f f f f f P P 0 1 I I I I + I I d d d d d
+# 1 0 0 1 1 0 1 1 0 0 0 f f f f f P P 0 1 I I I I - I I d d d d d
-:memb Rd5,LdMemRsAssignxC9b EndPacket is iclass=9 & op2127=0x58 & op1213=1 & op7=0 & Rd5 & LdMemRsAssignxC9b & $(END_PACKET) {
+:memb Rd5,LdMemRsAssignxC9b EndPacket is iclass=9 & op2127=0x58 & op1213=1 & Rd5 & LdMemRsAssignxC9b & $(END_PACKET) {
Rd5 = sext(LdMemRsAssignxC9b);
build EndPacket;
}
@@ -7131,9 +7472,9 @@ define pcodeop maskGenerate;
# (v2,9) memb -- "Rd32 = memb ( Rz32 ++ #s4:0 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 1 1 0 0 0 z z z z z P P 0 0 + + + i i i i d d d d d
+# 1 0 0 1 1 0 1 1 0 0 0 z z z z z P P 0 0 - - - i i i i d d d d d
-:memb Rd5,LdMemAIS4C9b0 EndPacket is iclass=9 & op2127=0x58 & op0913=0 & Rd5 & LdMemAIS4C9b0 & $(END_PACKET) {
+:memb Rd5,LdMemAIS4C9b0 EndPacket is iclass=9 & op2127=0x58 & op1213=0 & Rd5 & LdMemAIS4C9b0 & $(END_PACKET) {
Rd5 = sext(LdMemAIS4C9b0);
build EndPacket;
}
@@ -7142,14 +7483,14 @@ define pcodeop maskGenerate;
# (v2,9) memb -- "Rd32 = memb ( Rz32 ++ Mu2 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 1 0 1 0 0 0 z z z z z P P u 0 + + + + 0 + + d d d d d
+# 1 0 0 1 1 1 0 1 0 0 0 z z z z z P P u 0 - - - - 0 - - d d d d d
#
# (v2,9) memb -- "Rd32 = memb ( Rz32 ++ Mu2 :brev )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 1 1 1 0 0 0 z z z z z P P u 0 + + + + 0 + + d d d d d
+# 1 0 0 1 1 1 1 1 0 0 0 z z z z z P P u 0 - - - - 0 - - d d d d d
-:memb Rd5,LdMemAIMuC9b EndPacket is iclass=9 & op2627=3 & op2124=8 & op0512=0 & Rd5 & LdMemAIMuC9b & $(END_PACKET) {
+:memb Rd5,LdMemAIMuC9b EndPacket is iclass=9 & op2627=3 & op2124=8 & op12=0 & op7=0 & Rd5 & LdMemAIMuC9b & $(END_PACKET) {
Rd5 = sext(LdMemAIMuC9b);
build EndPacket;
}
@@ -7157,9 +7498,9 @@ define pcodeop maskGenerate;
# (v2,9) memb -- "Rd32 = memb ( Rz32 ++ #s4:0 :circ ( Mu2 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 0 1 0 0 0 z z z z z P P u 0 + + 0 i i i i d d d d d
+# 1 0 0 1 1 0 0 1 0 0 0 z z z z z P P u 0 - - 0 i i i i d d d d d
-:memb Rd5,LdMemAIS4CircMuC9b0 EndPacket is iclass=9 & op2127=0x48 & op0912=0 & Rd5 & LdMemAIS4CircMuC9b0 & $(END_PACKET) {
+:memb Rd5,LdMemAIS4CircMuC9b0 EndPacket is iclass=9 & op2127=0x48 & op12=0 & i9=0 & Rd5 & LdMemAIS4CircMuC9b0 & $(END_PACKET) {
Rd5 = sext(LdMemAIS4CircMuC9b0);
build EndPacket;
}
@@ -7167,9 +7508,9 @@ define pcodeop maskGenerate;
# (v2,9) memb -- "Rd32 = memb ( Rz32 ++I :circ ( Mu2 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 0 1 0 0 0 z z z z z P P u 0 + + 1 + 0 + + d d d d d
+# 1 0 0 1 1 0 0 1 0 0 0 z z z z z P P u 0 - - 1 - 0 - - d d d d d
-:memb Rd5,LdMemAIICircMuC9b EndPacket is iclass=9 & op2127=0x48 & op0512=0x10 & Rd5 & LdMemAIICircMuC9b & $(END_PACKET) {
+:memb Rd5,LdMemAIICircMuC9b EndPacket is iclass=9 & op2127=0x48 & op12=0x0 & i9=0x1 & op7=0x0 & Rd5 & LdMemAIICircMuC9b & $(END_PACKET) {
Rd5 = sext(LdMemAIICircMuC9b);
build EndPacket;
}
@@ -7188,9 +7529,9 @@ define pcodeop maskGenerate;
# (v4,10) memb -- "memb ( Rf32 = #U6x ) = Nt8 .new"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 0 1 1 1 0 1 f f f f f P P 0 0 0 t t t 1 + I I I I I I
+# 1 0 1 0 1 0 1 1 1 0 1 f f f f f P P 0 0 0 t t t 1 - I I I I I I
-:memb StMemRsAssignxC10b,Nreg0810 EndPacket is iclass=10 & op2127=0x5d & op1113=0 & op0607=2 & Nreg0810 & StMemRsAssignxC10b & $(END_PACKET) {
+:memb StMemRsAssignxC10b,Nreg0810 EndPacket is iclass=10 & op2127=0x5d & op1113=0 & op7=1 & Nreg0810 & StMemRsAssignxC10b & $(END_PACKET) {
build EndPacket;
<>
StMemRsAssignxC10b = Nreg0810:1;
@@ -7199,9 +7540,9 @@ define pcodeop maskGenerate;
# (v4,10) memb -- "memb ( Rf32 = #U6x ) = Rt32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 0 1 1 0 0 0 f f f f f P P 0 t t t t t 1 + I I I I I I
+# 1 0 1 0 1 0 1 1 0 0 0 f f f f f P P 0 t t t t t 1 - I I I I I I
-:memb StMemRsAssignxC10b,rt5 EndPacket is iclass=10 & op2127=0x58 & op13=0 & op0607=2 & rt5 & StMemRsAssignxC10b & $(END_PACKET) {
+:memb StMemRsAssignxC10b,rt5 EndPacket is iclass=10 & op2127=0x58 & op13=0 & op7=1 & rt5 & StMemRsAssignxC10b & $(END_PACKET) {
tmp:1 = rt5:1;
build EndPacket;
<>
@@ -7234,9 +7575,9 @@ define pcodeop maskGenerate;
# (v4,3) memb -- "memb ( Rs32 + #u6:0 ) = #S8x"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 0 1 1 1 1 0 + + 0 0 s s s s s P P I i i i i i i I I I I I I I
+# 0 0 1 1 1 1 0 - - 0 0 s s s s s P P I i i i i i i I I I I I I I
-:memb StMemRsRelC3b,Simm8_13_0006x EndPacket is iclass=3 & op2127=0x60 & StMemRsRelC3b & Simm8_13_0006x & $(END_PACKET) {
+:memb StMemRsRelC3b,Simm8_13_0006x EndPacket is iclass=3 & op2527=0x6 & op2122=0x0 & StMemRsRelC3b & Simm8_13_0006x & $(END_PACKET) {
build EndPacket;
<>
StMemRsRelC3b = Simm8_13_0006x;
@@ -7245,9 +7586,9 @@ define pcodeop maskGenerate;
# (v4,3) memb -- "memb ( Rs32 + #u6:0x ) &= Rt32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 0 1 1 1 1 1 0 + 0 0 s s s s s P P 0 i i i i i i 1 0 t t t t t
+# 0 0 1 1 1 1 1 0 - 0 0 s s s s s P P 0 i i i i i i 1 0 t t t t t
-:memb&= StMemRsRelxC3b,ru5 EndPacket is iclass=3 & op2127=0x70 & op13=0 & op0506=2 & StMemRsRelxC3b & ru5 & $(END_PACKET) {
+:memb&= StMemRsRelxC3b,ru5 EndPacket is iclass=3 & op2427=0xe & op2122=0x0 & op13=0 & op0506=2 & StMemRsRelxC3b & ru5 & $(END_PACKET) {
tmp:1 = StMemRsRelxC3b & ru5:1;
build EndPacket;
<>
@@ -7257,9 +7598,9 @@ define pcodeop maskGenerate;
# (v4,3) memb -- "memb ( Rs32 + #u6:0x ) += #U5"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 0 1 1 1 1 1 1 + 0 0 s s s s s P P 0 i i i i i i 0 0 I I I I I
+# 0 0 1 1 1 1 1 1 - 0 0 s s s s s P P 0 i i i i i i 0 0 I I I I I
-:memb+= StMemRsRelxC3b,Uimm8_0004 EndPacket is iclass=3 & op2127=0x78 & op13=0 & op0506=0 & StMemRsRelxC3b & Uimm8_0004 & $(END_PACKET) {
+:memb+= StMemRsRelxC3b,Uimm8_0004 EndPacket is iclass=3 & op2427=0xf & op2122=0x0 & op13=0 & op0506=0 & StMemRsRelxC3b & Uimm8_0004 & $(END_PACKET) {
tmp:1 = StMemRsRelxC3b + Uimm8_0004;
build EndPacket;
<>
@@ -7269,9 +7610,9 @@ define pcodeop maskGenerate;
# (v4,3) memb -- "memb ( Rs32 + #u6:0x ) += Rt32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 0 1 1 1 1 1 0 + 0 0 s s s s s P P 0 i i i i i i 0 0 t t t t t
+# 0 0 1 1 1 1 1 0 - 0 0 s s s s s P P 0 i i i i i i 0 0 t t t t t
-:memb+= StMemRsRelxC3b,ru5 EndPacket is iclass=3 & op2127=0x70 & op13=0 & op0506=0 & StMemRsRelxC3b & ru5 & $(END_PACKET) {
+:memb+= StMemRsRelxC3b,ru5 EndPacket is iclass=3 & op2427=0xe & op2122=0x0 & op13=0 & op0506=0 & StMemRsRelxC3b & ru5 & $(END_PACKET) {
tmp:1 = StMemRsRelxC3b + ru5:1;
build EndPacket;
<>
@@ -7281,9 +7622,9 @@ define pcodeop maskGenerate;
# (v4,3) memb -- "memb ( Rs32 + #u6:0x ) -= #U5"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 0 1 1 1 1 1 1 + 0 0 s s s s s P P 0 i i i i i i 0 1 I I I I I
+# 0 0 1 1 1 1 1 1 - 0 0 s s s s s P P 0 i i i i i i 0 1 I I I I I
-:memb-= StMemRsRelxC3b,Uimm8_0004 EndPacket is iclass=3 & op2127=0x78 & op13=0 & op0506=1 & StMemRsRelxC3b & Uimm8_0004 & $(END_PACKET) {
+:memb-= StMemRsRelxC3b,Uimm8_0004 EndPacket is iclass=3 & op2427=0xf & op2122=0x0 & op13=0 & op0506=1 & StMemRsRelxC3b & Uimm8_0004 & $(END_PACKET) {
tmp:1 = StMemRsRelxC3b - Uimm8_0004;
build EndPacket;
<>
@@ -7293,9 +7634,9 @@ define pcodeop maskGenerate;
# (v4,3) memb -- "memb ( Rs32 + #u6:0x ) -= Rt32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 0 1 1 1 1 1 0 + 0 0 s s s s s P P 0 i i i i i i 0 1 t t t t t
+# 0 0 1 1 1 1 1 0 - 0 0 s s s s s P P 0 i i i i i i 0 1 t t t t t
-:memb-= StMemRsRelxC3b,ru5 EndPacket is iclass=3 & op2127=0x70 & op13=0 & op0506=1 & StMemRsRelxC3b & ru5 & $(END_PACKET) {
+:memb-= StMemRsRelxC3b,ru5 EndPacket is iclass=3 & op2427=0xe & op2122=0x0 & op13=0 & op0506=1 & StMemRsRelxC3b & ru5 & $(END_PACKET) {
tmp:1 = StMemRsRelxC3b - ru5:1;
build EndPacket;
<>
@@ -7305,9 +7646,9 @@ define pcodeop maskGenerate;
# (v4,3) memb -- "memb ( Rs32 + #u6:0x ) = clrbit ( #U5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 0 1 1 1 1 1 1 + 0 0 s s s s s P P 0 i i i i i i 1 0 I I I I I
+# 0 0 1 1 1 1 1 1 - 0 0 s s s s s P P 0 i i i i i i 1 0 I I I I I
-:memb StMemRsRelxC3b,ClrBit_0004b EndPacket is iclass=3 & op2127=0x78 & op13=0 & op0506=2 & StMemRsRelxC3b & ClrBit_0004b & $(END_PACKET) {
+:memb StMemRsRelxC3b,ClrBit_0004b EndPacket is iclass=3 & op2427=0xf & op2122=0x0 & op13=0 & op0506=2 & StMemRsRelxC3b & ClrBit_0004b & $(END_PACKET) {
tmp:1 = StMemRsRelxC3b & ClrBit_0004b;
build EndPacket;
<>
@@ -7317,9 +7658,9 @@ define pcodeop maskGenerate;
# (v4,3) memb -- "memb ( Rs32 + #u6:0x ) = setbit ( #U5 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 0 1 1 1 1 1 1 + 0 0 s s s s s P P 0 i i i i i i 1 1 I I I I I
+# 0 0 1 1 1 1 1 1 - 0 0 s s s s s P P 0 i i i i i i 1 1 I I I I I
-:memb StMemRsRelxC3b,SetBit_0004b EndPacket is iclass=3 & op2127=0x78 & op13=0 & op0506=3 & StMemRsRelxC3b & SetBit_0004b & $(END_PACKET) {
+:memb StMemRsRelxC3b,SetBit_0004b EndPacket is iclass=3 & op2427=0xf & op2122=0x0 & op13=0 & op0506=3 & StMemRsRelxC3b & SetBit_0004b & $(END_PACKET) {
tmp:1 = StMemRsRelxC3b | SetBit_0004b;
build EndPacket;
<>
@@ -7329,9 +7670,9 @@ define pcodeop maskGenerate;
# (v4,3) memb -- "memb ( Rs32 + #u6:0x ) |= Rt32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 0 1 1 1 1 1 0 + 0 0 s s s s s P P 0 i i i i i i 1 1 t t t t t
+# 0 0 1 1 1 1 1 0 - 0 0 s s s s s P P 0 i i i i i i 1 1 t t t t t
-:memb|= StMemRsRelxC3b,ru5 EndPacket is iclass=3 & op2127=0x70 & op13=0 & op0506=3 & StMemRsRelxC3b & ru5 & $(END_PACKET) {
+:memb|= StMemRsRelxC3b,ru5 EndPacket is iclass=3 & op2427=0xe & op2122=0x0 & op13=0 & op0506=3 & StMemRsRelxC3b & ru5 & $(END_PACKET) {
tmp:1 = StMemRsRelxC3b | ru5:1;
build EndPacket;
<>
@@ -7341,9 +7682,9 @@ define pcodeop maskGenerate;
# (v4,3) memb -- "memb ( Rs32 + Ru32 << #n2 ) = Nt8 .new"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 0 1 1 1 0 1 1 1 0 1 s s s s s P P n u u u u u n + + 0 0 t t t
+# 0 0 1 1 1 0 1 1 1 0 1 s s s s s P P n u u u u u n - - 0 0 t t t
-:memb MemRsRelShiftC3b,Nreg0002 EndPacket is iclass=3 & op2127=0x5d & op0306=0 & MemRsRelShiftC3b & Nreg0002 & $(END_PACKET) {
+:memb MemRsRelShiftC3b,Nreg0002 EndPacket is iclass=3 & op2127=0x5d & op0304=0 & MemRsRelShiftC3b & Nreg0002 & $(END_PACKET) {
build EndPacket;
<>
MemRsRelShiftC3b = Nreg0002:1;
@@ -7352,9 +7693,9 @@ define pcodeop maskGenerate;
# (v4,3) memb -- "memb ( Rs32 + Ru32 << #n2 ) = Rt32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 0 0 1 1 1 0 1 1 0 0 0 s s s s s P P n u u u u u n + + t t t t t
+# 0 0 1 1 1 0 1 1 0 0 0 s s s s s P P n u u u u u n - - t t t t t
-:memb MemRsRelShiftC3b,ru5 EndPacket is iclass=3 & op2127=0x58 & op0506=0 & MemRsRelShiftC3b & ru5 & $(END_PACKET) {
+:memb MemRsRelShiftC3b,ru5 EndPacket is iclass=3 & op2127=0x58 & MemRsRelShiftC3b & ru5 & $(END_PACKET) {
tmp:1 = ru5:1;
build EndPacket;
<>
@@ -7387,9 +7728,9 @@ define pcodeop maskGenerate;
# (v4,10) memb -- "memb ( Rz32 ++ #s4:0 ) = Nt8 .new"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 0 1 1 1 0 1 z z z z z P P 0 0 0 t t t 0 i i i i + 0 +
+# 1 0 1 0 1 0 1 1 1 0 1 z z z z z P P 0 0 0 t t t 0 i i i i - 0 -
-:memb StMemAIS4C10b,Nreg0810 EndPacket is iclass=10 & op2127=0x5d & op1113=0 & op7=0 & op0002=0 & Nreg0810 & StMemAIS4C10b & $(END_PACKET) {
+:memb StMemAIS4C10b,Nreg0810 EndPacket is iclass=10 & op2127=0x5d & op1113=0 & op7=0 & op1=0 & Nreg0810 & StMemAIS4C10b & $(END_PACKET) {
build EndPacket;
<>
StMemAIS4C10b = Nreg0810:1;
@@ -7398,9 +7739,9 @@ define pcodeop maskGenerate;
# (v4,10) memb -- "memb ( Rz32 ++ #s4:0 :circ ( Mu2 ) ) = Nt8 .new"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 0 0 1 1 0 1 z z z z z P P u 0 0 t t t 0 i i i i + 0 +
+# 1 0 1 0 1 0 0 1 1 0 1 z z z z z P P u 0 0 t t t 0 i i i i - 0 -
-:memb StMemAIS4CircMuC10b,Nreg0810 EndPacket is iclass=10 & op2127=0x4d & op1112=0 & op7=0 & op0002=0 & Nreg0810 & StMemAIS4CircMuC10b & $(END_PACKET) {
+:memb StMemAIS4CircMuC10b,Nreg0810 EndPacket is iclass=10 & op2127=0x4d & op1112=0 & op7=0 & op1=0 & Nreg0810 & StMemAIS4CircMuC10b & $(END_PACKET) {
build EndPacket;
<>
StMemAIS4CircMuC10b = Nreg0810:1;
@@ -7409,14 +7750,14 @@ define pcodeop maskGenerate;
# (v4,10) memb -- "memb ( Rz32 ++ Mu2 ) = Nt8 .new"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 1 0 1 1 0 1 z z z z z P P u 0 0 t t t 0 + + + + + + +
+# 1 0 1 0 1 1 0 1 1 0 1 z z z z z P P u 0 0 t t t 0 - - - - - - -
#
# (v4,10) memb -- "memb ( Rz32 ++ Mu2 :brev ) = Nt8 .new"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 1 1 1 1 0 1 z z z z z P P u 0 0 t t t 0 + + + + + + +
+# 1 0 1 0 1 1 1 1 1 0 1 z z z z z P P u 0 0 t t t 0 - - - - - - -
-:memb StMemAIMuC10b,Nreg0810 EndPacket is iclass=10 & op2627=3 & op2124=0xd & op1112=0 & op0007=0 & Nreg0810 & StMemAIMuC10b & $(END_PACKET) {
+:memb StMemAIMuC10b,Nreg0810 EndPacket is iclass=10 & op2627=3 & op2124=0xd & op1112=0 & op7=0 & Nreg0810 & StMemAIMuC10b & $(END_PACKET) {
build EndPacket;
<>
StMemAIMuC10b = Nreg0810:1;
@@ -7425,9 +7766,9 @@ define pcodeop maskGenerate;
# (v4,10) memb -- "memb ( Rz32 ++I :circ ( Mu2 ) ) = Nt8 .new"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 0 0 1 1 0 1 z z z z z P P u 0 0 t t t 0 + + + + + 1 +
+# 1 0 1 0 1 0 0 1 1 0 1 z z z z z P P u 0 0 t t t 0 - - - - - 1 -
-:memb StMemAIICircMuC10b,Nreg0810 EndPacket is iclass=10 & op2127=0x4d & op1112=0 & op0007=2 & Nreg0810 & StMemAIICircMuC10b & $(END_PACKET) {
+:memb StMemAIICircMuC10b,Nreg0810 EndPacket is iclass=10 & op2127=0x4d & op1112=0 & op7=0 & op1=1 & Nreg0810 & StMemAIICircMuC10b & $(END_PACKET) {
build EndPacket;
<>
StMemAIICircMuC10b = Nreg0810:1;
@@ -7436,9 +7777,9 @@ define pcodeop maskGenerate;
# (v2,10) memb -- "memb ( Rz32 ++ #s4:0 ) = Rt32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 0 1 1 0 0 0 z z z z z P P 0 t t t t t 0 i i i i + 0 +
+# 1 0 1 0 1 0 1 1 0 0 0 z z z z z P P 0 t t t t t 0 i i i i - 0 -
-:memb StMemAIS4C10b,rt5 EndPacket is iclass=10 & op2127=0x58 & op13=0 & op7=0 & op0002=0 & rt5 & StMemAIS4C10b & $(END_PACKET) {
+:memb StMemAIS4C10b^StNt24,rt5 EndPacket is iclass=10 & op2527=5 & op2123=0 & op13=0 & op7=0 & op1=0 & StNt24 & rt5 & StMemAIS4C10b & $(END_PACKET) {
tmp:1 = rt5:1;
build EndPacket;
<>
@@ -7448,9 +7789,9 @@ define pcodeop maskGenerate;
# (v2,10) memb -- "memb ( Rz32 ++ #s4:0 :circ ( Mu2 ) ) = Rt32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 0 0 1 0 0 0 z z z z z P P u t t t t t 0 i i i i + 0 +
+# 1 0 1 0 1 0 0 1 0 0 0 z z z z z P P u t t t t t 0 i i i i - 0 -
-:memb StMemAIS4CircMuC10b,rt5 EndPacket is iclass=10 & op2127=0x48 & op7=0 & op0002=0 & rt5 & StMemAIS4CircMuC10b & $(END_PACKET) {
+:memb StMemAIS4CircMuC10b,rt5 EndPacket is iclass=10 & op2127=0x48 & op7=0 & op1=0 & rt5 & StMemAIS4CircMuC10b & $(END_PACKET) {
tmp:1 = rt5:1;
build EndPacket;
<>
@@ -7460,14 +7801,14 @@ define pcodeop maskGenerate;
# (v2,10) memb -- "memb ( Rz32 ++ Mu2 ) = Rt32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 1 0 1 0 0 0 z z z z z P P u t t t t t 0 + + + + + + +
+# 1 0 1 0 1 1 0 1 0 0 0 z z z z z P P u t t t t t 0 - - - - - - -
#
# (v2,10) memb -- "memb ( Rz32 ++ Mu2 :brev ) = Rt32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 1 1 1 0 0 0 z z z z z P P u t t t t t 0 + + + + + + +
+# 1 0 1 0 1 1 1 1 0 0 0 z z z z z P P u t t t t t 0 - - - - - - -
-:memb StMemAIMuC10b,rt5 EndPacket is iclass=10 & op2627=3 & op2124=8 & op0007=0 & rt5 & StMemAIMuC10b & $(END_PACKET) {
+:memb StMemAIMuC10b,rt5 EndPacket is iclass=10 & op2627=3 & op2124=8 & op7=0 & rt5 & StMemAIMuC10b & $(END_PACKET) {
tmp:1 = rt5:1;
build EndPacket;
<>
@@ -7477,9 +7818,9 @@ define pcodeop maskGenerate;
# (v2,10) memb -- "memb ( Rz32 ++I :circ ( Mu2 ) ) = Rt32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 0 0 1 0 0 0 z z z z z P P u t t t t t 0 + + + + + 1 +
+# 1 0 1 0 1 0 0 1 0 0 0 z z z z z P P u t t t t t 0 - - - - - 1 -
-:memb StMemAIICircMuC10b,rt5 EndPacket is iclass=10 & op2127=0x48 & op0007=0x2 & rt5 & StMemAIICircMuC10b & $(END_PACKET) {
+:memb StMemAIICircMuC10b,rt5 EndPacket is iclass=10 & op2127=0x48 & op7=0x0 & op1=0x1 & rt5 & StMemAIICircMuC10b & $(END_PACKET) {
tmp:1 = rt5:1;
build EndPacket;
<>
@@ -7512,32 +7853,34 @@ define pcodeop maskGenerate;
# (v4,9) memb -- "if ( Pt4 ) Rd32 = memb ( #u6x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 1 1 1 0 0 0 i i i i i P P 1 0 0 t t i 1 + + d d d d d
+# 1 0 0 1 1 1 1 1 0 0 0 i i i i i P P 1 0 0 t t i 1 - - d d d d d
#
# (v4,9) memb -- "if ( ! Pt4 ) Rd32 = memb ( #u6x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 1 1 1 0 0 0 i i i i i P P 1 0 1 t t i 1 + + d d d d d
+# 1 0 0 1 1 1 1 1 0 0 0 i i i i i P P 1 0 1 t t i 1 - - d d d d d
#
# (v4,9) memb -- "if ( Pt4 .new ) Rd32 = memb ( #u6x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 1 1 1 0 0 0 i i i i i P P 1 1 0 t t i 1 + + d d d d d
+# 1 0 0 1 1 1 1 1 0 0 0 i i i i i P P 1 1 0 t t i 1 - - d d d d d
#
# (v4,9) memb -- "if ( ! Pt4 .new ) Rd32 = memb ( #u6x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 1 1 1 0 0 0 i i i i i P P 1 1 1 t t i 1 + + d d d d d
+# 1 0 0 1 1 1 1 1 0 0 0 i i i i i P P 1 1 1 t t i 1 - - d d d d d
-:memb^PuCond0910_N12_S11 rd5,LdMemAbsU6xC9b EndPacket is iclass=9 & op2127=0x78 & op13=1 & op0507=4 & rd5 & LdMemAbsU6xC9b & PuCond0910_N12_S11 & $(END_PACKET) {
+:memb^PuCond0910_N12_S11 rd5,LdMemAbsU6xC9b EndPacket is iclass=9 & op2127=0x78 & op13=1 & op7=1 & rd5 & LdMemAbsU6xC9b & PuCond0910_N12_S11 & $(END_PACKET) {
tmp:4 = 0;
build PuCond0910_N12_S11;
build EndPacket;
<>
+ build PuCond0910_N12_S11;
if (ConditionReg == 0) goto ;
tmp = sext(LdMemAbsU6xC9b);
<>
+ build PuCond0910_N12_S11;
if (ConditionReg == 0) goto ;
rd5 = tmp;
@@ -7568,10 +7911,12 @@ define pcodeop maskGenerate;
build PuCond1112_N25_S26;
build EndPacket;
<>
+ build PuCond1112_N25_S26;
if (ConditionReg == 0) goto ;
tmp = sext(LdMemRsRelxC4b);
<>
+ build PuCond1112_N25_S26;
if (ConditionReg == 0) goto ;
rd5 = tmp;
@@ -7602,10 +7947,13 @@ define pcodeop maskGenerate;
build PuCond0910_N12_S11;
build EndPacket;
<>
+ build PuCond0910_N12_S11;
if (ConditionReg == 0) goto ;
tmp = sext(LdMemAIS4C9b0);
<>
+ build PuCond0910_N12_S11;
+ build LdMemAIS4C9b0;
if (ConditionReg == 0) goto ;
rd5 = tmp;
@@ -7636,10 +7984,12 @@ define pcodeop maskGenerate;
build PuCond0506_N25_S24;
build EndPacket;
<>
+ build PuCond0506_N25_S24;
if (ConditionReg == 0) goto ;
tmp = sext(MemRsRelShiftC3b);
<>
+ build PuCond0506_N25_S24;
if (ConditionReg == 0) goto ;
rd5 = tmp;
@@ -7648,27 +7998,28 @@ define pcodeop maskGenerate;
# (v4,10) memb -- "if ( Pv4 ) memb ( #u6x ) = Nt8 .new"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 1 1 1 1 0 1 + + + i i P P 0 0 0 t t t 1 i i i i 0 v v
+# 1 0 1 0 1 1 1 1 1 0 1 - - - i i P P 0 0 0 t t t 1 i i i i 0 v v
#
# (v4,10) memb -- "if ( Pv4 .new ) memb ( #u6x ) = Nt8 .new"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 1 1 1 1 0 1 + + + i i P P 1 0 0 t t t 1 i i i i 0 v v
+# 1 0 1 0 1 1 1 1 1 0 1 - - - i i P P 1 0 0 t t t 1 i i i i 0 v v
#
# (v4,10) memb -- "if ( ! Pv4 ) memb ( #u6x ) = Nt8 .new"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 1 1 1 1 0 1 + + + i i P P 0 0 0 t t t 1 i i i i 1 v v
+# 1 0 1 0 1 1 1 1 1 0 1 - - - i i P P 0 0 0 t t t 1 i i i i 1 v v
#
# (v4,10) memb -- "if ( ! Pv4 .new ) memb ( #u6x ) = Nt8 .new"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 1 1 1 1 0 1 + + + i i P P 1 0 0 t t t 1 i i i i 1 v v
+# 1 0 1 0 1 1 1 1 1 0 1 - - - i i P P 1 0 0 t t t 1 i i i i 1 v v
-:memb^PuCond0001_N13_S02 StMemAbsU6xC10b,Nreg0810 EndPacket is iclass=10 & op2127=0x7d & op1820=0 & op1112=0 & op7=1 & Nreg0810 & StMemAbsU6xC10b & PuCond0001_N13_S02 & $(END_PACKET) {
+:memb^PuCond0001_N13_S02 StMemAbsU6xC10b,Nreg0810 EndPacket is iclass=10 & op2127=0x7d & op1112=0 & op7=1 & Nreg0810 & StMemAbsU6xC10b & PuCond0001_N13_S02 & $(END_PACKET) {
build PuCond0001_N13_S02;
build EndPacket;
<>
+ build PuCond0001_N13_S02;
if (ConditionReg == 0) goto ;
StMemAbsU6xC10b = Nreg0810:1;
@@ -7694,11 +8045,12 @@ define pcodeop maskGenerate;
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 0 1 0 1 1 1 1 0 0 0 - - - i i P P 1 t t t t t 1 i i i i 1 v v
-:memb^PuCond0001_N13_S02 StMemAbsU6xC10b,rt5 EndPacket is iclass=10 & op2127=0x78 & op1820=0 & op7=1 & rt5 & StMemAbsU6xC10b & PuCond0001_N13_S02 & $(END_PACKET) {
+:memb^PuCond0001_N13_S02 StMemAbsU6xC10b,rt5 EndPacket is iclass=10 & op2127=0x78 & op7=1 & rt5 & StMemAbsU6xC10b & PuCond0001_N13_S02 & $(END_PACKET) {
tmp:1 = rt5:1;
build PuCond0001_N13_S02;
build EndPacket;
<>
+ build PuCond0001_N13_S02;
if (ConditionReg == 0) goto ;
StMemAbsU6xC10b = tmp;
@@ -7728,6 +8080,7 @@ define pcodeop maskGenerate;
build PuCond0506_N24_S23;
build EndPacket;
<>
+ build PuCond0506_N24_S23;
if (ConditionReg == 0) goto ;
StMemRsRelC3b = Simm8_13_0004x;
@@ -7757,6 +8110,7 @@ define pcodeop maskGenerate;
build PuCond0001_N25_S26;
build EndPacket;
<>
+ build PuCond0001_N25_S26;
if (ConditionReg == 0) goto ;
StMemRsRelxC4b = Nreg0810:1;
@@ -7787,6 +8141,7 @@ define pcodeop maskGenerate;
build PuCond0001_N25_S26;
build EndPacket;
<>
+ build PuCond0001_N25_S26;
if (ConditionReg == 0) goto ;
StMemRsRelxC4b = tmp;
@@ -7816,6 +8171,7 @@ define pcodeop maskGenerate;
build PuCond0506_N25_S24;
build EndPacket;
<>
+ build PuCond0506_N25_S24;
if (ConditionReg == 0) goto ;
MemRsRelShiftC3b = Nreg0002:1;
@@ -7846,6 +8202,7 @@ define pcodeop maskGenerate;
build PuCond0506_N25_S24;
build EndPacket;
<>
+ build PuCond0506_N25_S24;
if (ConditionReg == 0) goto ;
MemRsRelShiftC3b = tmp;
@@ -7875,6 +8232,8 @@ define pcodeop maskGenerate;
build PuCond0001_N07_S02;
build EndPacket;
<>
+ build PuCond0001_N07_S02;
+ build StMemAIS4C10b;
if (ConditionReg == 0) goto ;
StMemAIS4C10b = Nreg0810:1;
@@ -7900,11 +8259,13 @@ define pcodeop maskGenerate;
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
# 1 0 1 0 1 0 1 1 0 0 0 z z z z z P P 1 t t t t t 0 i i i i 1 v v
-:memb^PuCond0001_N07_S02 StMemAIS4C10b,rt5 EndPacket is iclass=10 & op2127=0x58 & op13=1 & rt5 & StMemAIS4C10b & PuCond0001_N07_S02 & $(END_PACKET) [ cond=1; ] {
+:memb^PuCond0001_N07_S02 StMemAIS4C10b^StNt24,rt5 EndPacket is iclass=10 & op2527=5 & op2123=0 & op13=1 & StNt24 & rt5 & StMemAIS4C10b & PuCond0001_N07_S02 & $(END_PACKET) [ cond=1; ] {
tmp:1 = rt5:1;
build PuCond0001_N07_S02;
build EndPacket;
<>
+ build PuCond0001_N07_S02;
+ build StMemAIS4C10b;
if (ConditionReg == 0) goto ;
StMemAIS4C10b = tmp;
@@ -7913,10 +8274,10 @@ define pcodeop maskGenerate;
# (v4,9) memb_fifo -- "Ryy32 = memb_fifo ( Rf32 = #U6x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 1 0 1 0 0 f f f f f P P 0 1 I I I I + I I y y y y y
+# 1 0 0 1 1 0 1 0 1 0 0 f f f f f P P 0 1 I I I I - I I y y y y y
-:memb_fifo Rdd5,LdMemRsAssignxC9b EndPacket is iclass=9 & op2127=0x54 & op1213=1 & op7=0 & LdMemRsAssignxC9b & Rdd5 & $(END_PACKET) {
+:memb_fifo Rdd5,LdMemRsAssignxC9b EndPacket is iclass=9 & op2127=0x54 & op1213=1 & LdMemRsAssignxC9b & Rdd5 & $(END_PACKET) {
local tmp_byte = LdMemRsAssignxC9b;
Rdd5 = (Rdd5 >> 8) | (zext(tmp_byte) << 56);
build EndPacket;
@@ -7947,9 +8308,9 @@ define pcodeop maskGenerate;
# (v4,9) memb_fifo -- "Ryy32 = memb_fifo ( Rz32 ++ #s4:0 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 1 0 1 0 0 z z z z z P P 0 0 + + + i i i i y y y y y
+# 1 0 0 1 1 0 1 0 1 0 0 z z z z z P P 0 0 - - - i i i i y y y y y
-:memb_fifo Rdd5,LdMemAIS4C9b0 EndPacket is iclass=9 & op2127=0x54 & op0913=0 & LdMemAIS4C9b0 & Rdd5 & $(END_PACKET) {
+:memb_fifo Rdd5,LdMemAIS4C9b0 EndPacket is iclass=9 & op2127=0x54 & op1213=0 & LdMemAIS4C9b0 & Rdd5 & $(END_PACKET) {
local tmp_byte = LdMemAIS4C9b0;
Rdd5 = (Rdd5 >> 8) | (zext(tmp_byte) << 56);
build EndPacket;
@@ -7958,9 +8319,9 @@ define pcodeop maskGenerate;
# (v4,9) memb_fifo -- "Ryy32 = memb_fifo ( Rz32 ++ #s4:0 :circ ( Mu2 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 0 0 1 0 0 z z z z z P P u 0 + + 0 i i i i y y y y y
+# 1 0 0 1 1 0 0 0 1 0 0 z z z z z P P u 0 - - 0 i i i i y y y y y
-:memb_fifo Rdd5,LdMemAIS4CircMuC9b0 EndPacket is iclass=9 & op2127=0x44 & op0912=0 & LdMemAIS4CircMuC9b0 & Rdd5 & $(END_PACKET) {
+:memb_fifo Rdd5,LdMemAIS4CircMuC9b0 EndPacket is iclass=9 & op2127=0x44 & op12=0 & i9=0 & LdMemAIS4CircMuC9b0 & Rdd5 & $(END_PACKET) {
local tmp_byte = LdMemAIS4CircMuC9b0;
Rdd5 = (Rdd5 >> 8) | (zext(tmp_byte) << 56);
build EndPacket;
@@ -7969,14 +8330,14 @@ define pcodeop maskGenerate;
# (v4,9) memb_fifo -- "Ryy32 = memb_fifo ( Rz32 ++ Mu2 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 1 0 0 1 0 0 z z z z z P P u 0 + + + + 0 + + y y y y y
+# 1 0 0 1 1 1 0 0 1 0 0 z z z z z P P u 0 - - - - 0 - - y y y y y
#
# (v4,9) memb_fifo -- "Ryy32 = memb_fifo ( Rz32 ++ Mu2 :brev )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 1 1 0 1 0 0 z z z z z P P u 0 + + + + 0 + + y y y y y
+# 1 0 0 1 1 1 1 0 1 0 0 z z z z z P P u 0 - - - - 0 - - y y y y y
-:memb_fifo Rdd5,LdMemAIMuC9b EndPacket is iclass=9 & op2627=3 & op2124=4 & op0512=0 & LdMemAIMuC9b & Rdd5 & $(END_PACKET) {
+:memb_fifo Rdd5,LdMemAIMuC9b EndPacket is iclass=9 & op2627=3 & op2124=4 & op12=0 & op7=0 & LdMemAIMuC9b & Rdd5 & $(END_PACKET) {
local tmp_byte = LdMemAIMuC9b;
Rdd5 = (Rdd5 >> 8) | (zext(tmp_byte) << 56);
build EndPacket;
@@ -7985,9 +8346,9 @@ define pcodeop maskGenerate;
# (v4,9) memb_fifo -- "Ryy32 = memb_fifo ( Rz32 ++I :circ ( Mu2 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 0 0 1 0 0 z z z z z P P u 0 + + 1 + 0 + + y y y y y
+# 1 0 0 1 1 0 0 0 1 0 0 z z z z z P P u 0 - - 1 - 0 - - y y y y y
-:memb_fifo Rdd5,LdMemAIICircMuC9b EndPacket is iclass=9 & op2127=0x44 & op0512=0x10 & LdMemAIICircMuC9b & Rdd5 & $(END_PACKET) {
+:memb_fifo Rdd5,LdMemAIICircMuC9b EndPacket is iclass=9 & op2127=0x44 & op12=0x0 & i9=0x1 & op7=0x0 & LdMemAIICircMuC9b & Rdd5 & $(END_PACKET) {
local tmp_byte = LdMemAIICircMuC9b;
Rdd5 = (Rdd5 >> 8) | (zext(tmp_byte) << 56);
build EndPacket;
@@ -7996,13 +8357,13 @@ define pcodeop maskGenerate;
# (v4,9) membh -- "Rd32 = membh ( Rf32 = #U6x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 1 0 0 0 1 f f f f f P P 0 1 I I I I + I I d d d d d
+# 1 0 0 1 1 0 1 0 0 0 1 f f f f f P P 0 1 I I I I - I I d d d d d
# TODO: Uncertain how dest register is modified - could be very simple
define pcodeop membh32; # It is assumed that a byte is loaded from memory at the specified address
define pcodeop membh64; # It is assumed that a byte is loaded from memory at the specified address
-:membh Rd5,LdMemRsAssignxC9b EndPacket is iclass=9 & op2127=0x51 & op1213=1 & op7=0 & Rd5 & LdMemRsAssignxC9b & $(END_PACKET) {
+:membh Rd5,LdMemRsAssignxC9b EndPacket is iclass=9 & op2127=0x51 & op1213=1 & Rd5 & LdMemRsAssignxC9b & $(END_PACKET) {
Rd5 = membh32(LdMemRsAssignxC9b);
build EndPacket;
}
@@ -8030,9 +8391,9 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v4,9) membh -- "Rd32 = membh ( Rz32 ++ #s4:1 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 1 0 0 0 1 z z z z z P P 0 0 + + + i i i i d d d d d
+# 1 0 0 1 1 0 1 0 0 0 1 z z z z z P P 0 0 - - - i i i i d d d d d
-:membh Rd5,LdMemAIS4C9b1 EndPacket is iclass=9 & op2127=0x51 & op0913=0 & Rd5 & LdMemAIS4C9b1 & $(END_PACKET) {
+:membh Rd5,LdMemAIS4C9b1 EndPacket is iclass=9 & op2127=0x51 & op1213=0 & Rd5 & LdMemAIS4C9b1 & $(END_PACKET) {
Rd5 = membh32(LdMemAIS4C9b1);
build EndPacket;
}
@@ -8040,9 +8401,9 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v4,9) membh -- "Rd32 = membh ( Rz32 ++ #s4:1 :circ ( Mu2 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 0 0 0 0 1 z z z z z P P u 0 + + 0 i i i i d d d d d
+# 1 0 0 1 1 0 0 0 0 0 1 z z z z z P P u 0 - - 0 i i i i d d d d d
-:membh Rd5,LdMemAIS4CircMuC9b1 EndPacket is iclass=9 & op2127=0x41 & op0912=0 & Rd5 & LdMemAIS4CircMuC9b1 & $(END_PACKET) {
+:membh Rd5,LdMemAIS4CircMuC9b1 EndPacket is iclass=9 & op2127=0x41 & op12=0 & i9=0 & Rd5 & LdMemAIS4CircMuC9b1 & $(END_PACKET) {
Rd5 = membh32(LdMemAIS4CircMuC9b1);
build EndPacket;
}
@@ -8050,14 +8411,14 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v4,9) membh -- "Rd32 = membh ( Rz32 ++ Mu2 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 1 0 0 0 0 1 z z z z z P P u 0 + + + + 0 + + d d d d d
+# 1 0 0 1 1 1 0 0 0 0 1 z z z z z P P u 0 - - - - 0 - - d d d d d
#
# (v4,9) membh -- "Rd32 = membh ( Rz32 ++ Mu2 :brev )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 1 1 0 0 0 1 z z z z z P P u 0 + + + + 0 + + d d d d d
+# 1 0 0 1 1 1 1 0 0 0 1 z z z z z P P u 0 - - - - 0 - - d d d d d
-:membh Rd5,LdMemAIMuC9b EndPacket is iclass=9 & op2627=3 & op2124=1 & op0512=0 & Rd5 & LdMemAIMuC9b & $(END_PACKET) {
+:membh Rd5,LdMemAIMuC9b EndPacket is iclass=9 & op2627=3 & op2124=1 & op12=0 & op7=0 & Rd5 & LdMemAIMuC9b & $(END_PACKET) {
Rd5 = membh32(LdMemAIMuC9b);
build EndPacket;
}
@@ -8065,9 +8426,9 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v4,9) membh -- "Rd32 = membh ( Rz32 ++I :circ ( Mu2 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 0 0 0 0 1 z z z z z P P u 0 + + 1 + 0 + + d d d d d
+# 1 0 0 1 1 0 0 0 0 0 1 z z z z z P P u 0 - - 1 - 0 - - d d d d d
-:membh Rd5,LdMemAIICircMuC9b EndPacket is iclass=9 & op2127=0x41 & op0512=0x10 & Rd5 & LdMemAIICircMuC9b & $(END_PACKET) {
+:membh Rd5,LdMemAIICircMuC9b EndPacket is iclass=9 & op2127=0x41 & op12=0x0 & i9=0x1 & op7=0x0 & Rd5 & LdMemAIICircMuC9b & $(END_PACKET) {
Rd5 = membh32(LdMemAIICircMuC9b);
build EndPacket;
}
@@ -8075,9 +8436,9 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v4,9) membh -- "Rdd32 = membh ( Rf32 = #U6x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 1 0 1 1 1 f f f f f P P 0 1 I I I I + I I d d d d d
+# 1 0 0 1 1 0 1 0 1 1 1 f f f f f P P 0 1 I I I I - I I d d d d d
-:membh Rdd5,LdMemRsAssignxC9b EndPacket is iclass=9 & op2127=0x57 & op1213=1 & op7=0 & Rdd5 & LdMemRsAssignxC9b & $(END_PACKET) {
+:membh Rdd5,LdMemRsAssignxC9b EndPacket is iclass=9 & op2127=0x57 & op1213=1 & Rdd5 & LdMemRsAssignxC9b & $(END_PACKET) {
Rdd5 = membh64(LdMemRsAssignxC9b);
build EndPacket;
}
@@ -8105,9 +8466,9 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v4,9) membh -- "Rdd32 = membh ( Rz32 ++ #s4:2 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 1 0 1 1 1 z z z z z P P 0 0 + + + i i i i d d d d d
+# 1 0 0 1 1 0 1 0 1 1 1 z z z z z P P 0 0 - - - i i i i d d d d d
-:membh Rdd5,LdMemAIS4C9b2 EndPacket is iclass=9 & op2127=0x57 & op0913=0 & Rdd5 & LdMemAIS4C9b2 & $(END_PACKET) {
+:membh Rdd5,LdMemAIS4C9b2 EndPacket is iclass=9 & op2127=0x57 & op1213=0 & Rdd5 & LdMemAIS4C9b2 & $(END_PACKET) {
Rdd5 = membh64(LdMemAIS4C9b2);
build EndPacket;
}
@@ -8115,9 +8476,9 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v4,9) membh -- "Rdd32 = membh ( Rz32 ++ #s4:2 :circ ( Mu2 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 0 0 1 1 1 z z z z z P P u 0 + + 0 i i i i d d d d d
+# 1 0 0 1 1 0 0 0 1 1 1 z z z z z P P u 0 - - 0 i i i i d d d d d
-:membh Rdd5,LdMemAIS4CircMuC9b2 EndPacket is iclass=9 & op2127=0x47 & op0912=0 & Rdd5 & LdMemAIS4CircMuC9b2 & $(END_PACKET) {
+:membh Rdd5,LdMemAIS4CircMuC9b2 EndPacket is iclass=9 & op2127=0x47 & op12=0 & i9=0 & Rdd5 & LdMemAIS4CircMuC9b2 & $(END_PACKET) {
Rdd5 = membh64(LdMemAIS4CircMuC9b2);
build EndPacket;
}
@@ -8125,14 +8486,14 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v4,9) membh -- "Rdd32 = membh ( Rz32 ++ Mu2 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 1 0 0 1 1 1 z z z z z P P u 0 + + + + 0 + + d d d d d
+# 1 0 0 1 1 1 0 0 1 1 1 z z z z z P P u 0 - - - - 0 - - d d d d d
#
# (v4,9) membh -- "Rdd32 = membh ( Rz32 ++ Mu2 :brev )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 1 1 0 1 1 1 z z z z z P P u 0 + + + + 0 + + d d d d d
+# 1 0 0 1 1 1 1 0 1 1 1 z z z z z P P u 0 - - - - 0 - - d d d d d
-:membh Rdd5,LdMemAIMuC9b EndPacket is iclass=9 & op2627=3 & op2124=7 & op0512=0 & Rdd5 & LdMemAIMuC9b & $(END_PACKET) {
+:membh Rdd5,LdMemAIMuC9b EndPacket is iclass=9 & op2627=3 & op2124=7 & op12=0 & op7=0 & Rdd5 & LdMemAIMuC9b & $(END_PACKET) {
Rdd5 = membh64(LdMemAIMuC9b);
build EndPacket;
}
@@ -8140,19 +8501,30 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v4,9) membh -- "Rdd32 = membh ( Rz32 ++I :circ ( Mu2 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 0 0 1 1 1 z z z z z P P u 0 + + 1 + 0 + + d d d d d
+# 1 0 0 1 1 0 0 0 1 1 1 z z z z z P P u 0 - - 1 - 0 - - d d d d d
-:membh Rdd5,LdMemAIICircMuC9b EndPacket is iclass=9 & op2127=0x47 & op0512=0x10 & Rdd5 & LdMemAIICircMuC9b & $(END_PACKET) {
+:membh Rdd5,LdMemAIICircMuC9b EndPacket is iclass=9 & op2127=0x47 & op12=0x0 & i9=0x1 & op7=0x0 & Rdd5 & LdMemAIICircMuC9b & $(END_PACKET) {
Rdd5 = membh64(LdMemAIICircMuC9b);
build EndPacket;
}
+# (v66,9) memcpy -- "memcpy ( Rs32 , Rt32 , Mu2 )"
+# _________________________________________________________________________________________________
+# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
+# 1 0 0 1 0 0 1 0 0 0 0 s s s s s P P u t t t t t 0 1 0 0 0 0 0 0
+
+define pcodeop memBulkCopy;
+:memcpy rs5,rt5,mu EndPacket is iclass=9 & op2127=0x10 & op0507=2 & op0004=0 & rs5 & rt5 & mu & $(END_PACKET) {
+ memBulkCopy(rs5, rt5, mu);
+ build EndPacket;
+}
+
# (v4,9) memd -- "Rdd32 = memd ( Rf32 = #U6x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 1 1 1 1 0 f f f f f P P 0 1 I I I I + I I d d d d d
+# 1 0 0 1 1 0 1 1 1 1 0 f f f f f P P 0 1 I I I I - I I d d d d d
-:memd Rdd5,LdMemRsAssignxC9d EndPacket is iclass=9 & op2127=0x5e & op7=0 & op1213=1 & Rdd5 & LdMemRsAssignxC9d & $(END_PACKET) {
+:memd Rdd5,LdMemRsAssignxC9d EndPacket is iclass=9 & op2127=0x5e & op1213=1 & Rdd5 & LdMemRsAssignxC9d & $(END_PACKET) {
Rdd5 = LdMemRsAssignxC9d;
build EndPacket;
}
@@ -8190,9 +8562,9 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v2,9) memd -- "Rdd32 = memd ( Rz32 ++ #s4:3 )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 1 1 1 1 0 z z z z z P P 0 0 + + + i i i i d d d d d
+# 1 0 0 1 1 0 1 1 1 1 0 z z z z z P P 0 0 - - - i i i i d d d d d
-:memd Rdd5,LdMemAIS4C9d EndPacket is iclass=9 & op2127=0x5e & op0913=0 & Rdd5 & LdMemAIS4C9d & $(END_PACKET) {
+:memd Rdd5,LdMemAIS4C9d EndPacket is iclass=9 & op2127=0x5e & op1213=0 & Rdd5 & LdMemAIS4C9d & $(END_PACKET) {
Rdd5 = LdMemAIS4C9d;
build EndPacket;
}
@@ -8200,9 +8572,9 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v2,9) memd -- "Rdd32 = memd ( Rz32 ++ #s4:3 :circ ( Mu2 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 0 1 1 1 0 z z z z z P P u 0 + + 0 i i i i d d d d d
+# 1 0 0 1 1 0 0 1 1 1 0 z z z z z P P u 0 - - 0 i i i i d d d d d
-:memd Rdd5,LdMemAIS4CircMuC9d EndPacket is iclass=9 & op2127=0x4e & op0912=0 & Rdd5 & LdMemAIS4CircMuC9d & $(END_PACKET) {
+:memd Rdd5,LdMemAIS4CircMuC9d EndPacket is iclass=9 & op2127=0x4e & op12=0 & i9=0 & Rdd5 & LdMemAIS4CircMuC9d & $(END_PACKET) {
Rdd5 = LdMemAIS4CircMuC9d;
build EndPacket;
}
@@ -8215,9 +8587,9 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v2,9) memd -- "Rdd32 = memd ( Rz32 ++ Mu2 :brev )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 1 1 1 1 1 0 z z z z z P P u 0 + + + + 0 + + d d d d d
+# 1 0 0 1 1 1 1 1 1 1 0 z z z z z P P u 0 - - - - 0 - - d d d d d
-:memd Rdd5,LdMemAIMuC9d EndPacket is iclass=9 & op2627=3 & op2124=0xe & op0512=0 & Rdd5 & LdMemAIMuC9d & $(END_PACKET) {
+:memd Rdd5,LdMemAIMuC9d EndPacket is iclass=9 & op2627=3 & op2124=0xe & op12=0 & op7=0 & Rdd5 & LdMemAIMuC9d & $(END_PACKET) {
Rdd5 = LdMemAIMuC9d;
build EndPacket;
}
@@ -8225,9 +8597,9 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v2,9) memd -- "Rdd32 = memd ( Rz32 ++I :circ ( Mu2 ) )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 0 0 1 1 1 0 z z z z z P P u 0 + + 1 + 0 + + d d d d d
+# 1 0 0 1 1 0 0 1 1 1 0 z z z z z P P u 0 - - 1 - 0 - - d d d d d
-:memd Rdd5,LdMemAIICircMuC9d EndPacket is iclass=9 & op2127=0x4e & op0512=0x10 & Rdd5 & LdMemAIICircMuC9d & $(END_PACKET) {
+:memd Rdd5,LdMemAIICircMuC9d EndPacket is iclass=9 & op2127=0x4e & op12=0x0 & i9=0x1 & op7=0x0 & Rdd5 & LdMemAIICircMuC9d & $(END_PACKET) {
Rdd5 = LdMemAIICircMuC9d;
build EndPacket;
}
@@ -8246,9 +8618,9 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v4,10) memd -- "memd ( Rf32 = #U6x ) = Rtt32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 0 1 1 1 1 0 f f f f f P P 0 t t t t t 1 + I I I I I I
+# 1 0 1 0 1 0 1 1 1 1 0 f f f f f P P 0 t t t t t 1 - I I I I I I
-:memd StMemRsAssignxC10d,rtt5 EndPacket is iclass=10 & op2127=0x5e & op13=0 & op0607=2 & rtt5 & StMemRsAssignxC10d & $(END_PACKET) {
+:memd StMemRsAssignxC10d,rtt5 EndPacket is iclass=10 & op2127=0x5e & op13=0 & op7=1 & rtt5 & StMemRsAssignxC10d & $(END_PACKET) {
tmp:8 = rtt5;
build EndPacket;
<>
@@ -8294,9 +8666,9 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v2,10) memd -- "memd ( Rz32 ++ #s4:3 ) = Rtt32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 0 1 1 1 1 0 z z z z z P P 0 t t t t t 0 i i i i + 0 +
+# 1 0 1 0 1 0 1 1 1 1 0 z z z z z P P 0 t t t t t 0 i i i i - 0 -
-:memd StMemAIS4C10d,rtt5 EndPacket is iclass=10 & op2127=0x5e & op13=0 & op7=0 & op0002=0 & rtt5 & StMemAIS4C10d & $(END_PACKET) {
+:memd StMemAIS4C10d^StNt24,rtt5 EndPacket is iclass=10 & op2527=5 & op2123=6 & op13=0 & op7=0 & op1=0 & StNt24 & rtt5 & StMemAIS4C10d & $(END_PACKET) {
tmp:8 = rtt5;
build EndPacket;
<>
@@ -8306,9 +8678,9 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v2,10) memd -- "memd ( Rz32 ++ #s4:3 :circ ( Mu2 ) ) = Rtt32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 0 0 1 1 1 0 z z z z z P P u t t t t t 0 i i i i + 0 +
+# 1 0 1 0 1 0 0 1 1 1 0 z z z z z P P u t t t t t 0 i i i i - 0 -
-:memd StMemAIS4CircMuC10d,rtt5 EndPacket is iclass=10 & op2127=0x4e & op7=0 & op0002=0 & rtt5 & StMemAIS4CircMuC10d & $(END_PACKET) {
+:memd StMemAIS4CircMuC10d,rtt5 EndPacket is iclass=10 & op2127=0x4e & op7=0 & op1=0 & rtt5 & StMemAIS4CircMuC10d & $(END_PACKET) {
tmp:8 = rtt5;
build EndPacket;
<>
@@ -8318,12 +8690,12 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v2,10) memd -- "memd ( Rz32 ++ Mu2 ) = Rtt32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 1 0 1 1 1 0 z z z z z P P u t t t t t 0 + + + + + + +
+# 1 0 1 0 1 1 0 1 1 1 0 z z z z z P P u t t t t t 0 - - - - - - -
#
# (v2,10) memd -- "memd ( Rz32 ++ Mu2 :brev ) = Rtt32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 1 1 1 1 1 0 z z z z z P P u t t t t t 0 + + + + + + +
+# 1 0 1 0 1 1 1 1 1 1 0 z z z z z P P u t t t t t 0 - - - - - - -
:memd StMemAIMuC10d,rtt5 EndPacket is iclass=10 & op2627=3 & op2124=0xe & rtt5 & StMemAIMuC10d & $(END_PACKET) {
tmp:8 = rtt5;
@@ -8335,9 +8707,9 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v2,10) memd -- "memd ( Rz32 ++I :circ ( Mu2 ) ) = Rtt32"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 1 0 1 0 0 1 1 1 0 z z z z z P P u t t t t t 0 + + + + + 1 +
+# 1 0 1 0 1 0 0 1 1 1 0 z z z z z P P u t t t t t 0 - - - - - 1 -
-:memd StMemAIICircMuC10d,rtt5 EndPacket is iclass=10 & op2127=0x4e & op0007=2 & rtt5 & StMemAIICircMuC10d & $(END_PACKET) {
+:memd StMemAIICircMuC10d,rtt5 EndPacket is iclass=10 & op2127=0x4e & op7=0 & op1=1 & rtt5 & StMemAIICircMuC10d & $(END_PACKET) {
tmp:8 = rtt5;
build EndPacket;
<>
@@ -8359,32 +8731,34 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
# (v4,9) memd -- "if ( Pt4 ) Rdd32 = memd ( #u6x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 1 1 1 1 1 0 i i i i i P P 1 0 0 t t i 1 + + d d d d d
+# 1 0 0 1 1 1 1 1 1 1 0 i i i i i P P 1 0 0 t t i 1 - - d d d d d
#
# (v4,9) memd -- "if ( ! Pt4 ) Rdd32 = memd ( #u6x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 1 1 1 1 1 0 i i i i i P P 1 0 1 t t i 1 + + d d d d d
+# 1 0 0 1 1 1 1 1 1 1 0 i i i i i P P 1 0 1 t t i 1 - - d d d d d
#
# (v4,9) memd -- "if ( Pt4 .new ) Rdd32 = memd ( #u6x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 1 1 1 1 1 0 i i i i i P P 1 1 0 t t i 1 + + d d d d d
+# 1 0 0 1 1 1 1 1 1 1 0 i i i i i P P 1 1 0 t t i 1 - - d d d d d
#
# (v4,9) memd -- "if ( ! Pt4 .new ) Rdd32 = memd ( #u6x )"
# _________________________________________________________________________________________________
# |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
-# 1 0 0 1 1 1 1 1 1 1 0 i i i i i P P 1 1 1 t t i 1 + + d d d d d
+# 1 0 0 1 1 1 1 1 1 1 0 i i i i i P P 1 1 1 t t i 1 - - d d d d d
-:memd^PuCond0910_N12_S11 rdd5,LdMemAbsU6xC9d EndPacket is iclass=9 & op2127=0x7e & op13=1 & op0507=4 & rdd5 & LdMemAbsU6xC9d & PuCond0910_N12_S11 & $(END_PACKET) {
+:memd^PuCond0910_N12_S11 rdd5,LdMemAbsU6xC9d EndPacket is iclass=9 & op2127=0x7e & op13=1 & op7=1 & rdd5 & LdMemAbsU6xC9d & PuCond0910_N12_S11 & $(END_PACKET) {
tmp:8 = 0;
build PuCond0910_N12_S11;
build EndPacket;
<>
+ build PuCond0910_N12_S11;
if (ConditionReg == 0) goto ;
tmp = LdMemAbsU6xC9d;
<>
+ build PuCond0910_N12_S11;
if (ConditionReg == 0) goto ;
rdd5 = tmp;
@@ -8415,10 +8789,12 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
build PuCond1112_N25_S26;
build EndPacket;
<>
+ build PuCond1112_N25_S26;
if (ConditionReg == 0) goto ;
tmp = LdMemRsRelxC4d;
<>
+ build PuCond1112_N25_S26;
if (ConditionReg == 0) goto ;
rdd5 = tmp;
@@ -8449,10 +8825,13 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
build PuCond0910_N12_S11;
build EndPacket;
<>
+ build PuCond0910_N12_S11;
if (ConditionReg == 0) goto ;
tmp = LdMemAIS4C9d;
<>
+ build PuCond0910_N12_S11;
+ build LdMemAIS4C9d;
if (ConditionReg == 0) goto ;
rdd5 = tmp;
@@ -8483,10 +8862,12 @@ define pcodeop membh64; # It is assumed that a byte is loaded from memory at the
build PuCond0506_N25_S24;
build EndPacket;
<>
+ build PuCond0506_N25_S24;
if (ConditionReg == 0) goto ;
tmp = MemRsRelShiftC3d;
<>
+ build PuCond0506_N25_S24;
if (ConditionReg == 0) goto ;
rdd5 = tmp;