diff --git a/Ghidra/Processors/AARCH64/data/languages/AARCH64base.sinc b/Ghidra/Processors/AARCH64/data/languages/AARCH64base.sinc index 91efb79ed0..ca764510d1 100644 --- a/Ghidra/Processors/AARCH64/data/languages/AARCH64base.sinc +++ b/Ghidra/Processors/AARCH64/data/languages/AARCH64base.sinc @@ -1331,6 +1331,17 @@ is sf=1 & op=1 & s=1 & b_2428=0x1a & b_2123=2 & Rm_GPR64 & CondOp & b_1111=0 & o affectflags(); } +# C6.2.50 CFINV page C6-860 line 48145 MATCH xd500401f/mask=xfffff0ff +# C6.2.194 MSR (immediate) page C6-1126 line 62879 MATCH xd500401f/mask=xfff8f01f +# CONSTRUCT xd500401f/mask=xfffff0ff MATCHED 2 DOCUMENTED OPCODES +# xd500401f/mask=xfffff0ff NOT MATCHED BY ANY CONSTRUCTOR + +:cfinv +is b_1231=0b11010101000000000100 & b_0811 & b_0007=0b00011111 +{ + CY = !CY; +} + # C6.2.52 CINC page C6-862 line 48243 MATCH x1a800400/mask=x7fe00c00 # C6.2.70 CSET page C6-892 line 49783 MATCH x1a9f07e0/mask=x7fff0fe0 # C6.2.72 CSINC page C6-896 line 49956 MATCH x1a800400/mask=x7fe00c00 diff --git a/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc b/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc index a6c78a047b..c77d861f12 100644 --- a/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc +++ b/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc @@ -466,9 +466,9 @@ is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=1 & b_2121=1 & Rm_VPR128.4S is b_3031=1 & u=0 & b_2428=0x1e & b_23=1 & b_1722=0x38 & b_1216=0x1b & b_1011=2 & Rn_VPR128.2D & Rd_FPR64 & Zd { # sipd infix Rd_FPR64 = +(Rn_VPR128.2D) on pairs lane size (8 to 8) - tmp1 = Rn_VPR128.2D[0,64]; - tmp2 = Rn_VPR128.2D[64,64]; - Rd_FPR64[0,64] = tmp1 + tmp2; + local tmp1 = Rn_VPR128.2D[0,64]; + local tmp2 = Rn_VPR128.2D[64,64]; + Rd_FPR64 = tmp1 + tmp2; zext_zd(Zd); # zero upper 24 bytes of Zd } @@ -483,8 +483,8 @@ is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=0 & b_2121=1 & Rm_VPR128.16 { TMPQ1 = 0; # sipd infix TMPQ1 = +(Rn_VPR128.16B,Rm_VPR128.16B) on pairs lane size (1 to 1) - tmp2 = Rn_VPR128.16B[0,8]; - tmp3 = Rn_VPR128.16B[8,8]; + local tmp2 = Rn_VPR128.16B[0,8]; + local tmp3 = Rn_VPR128.16B[8,8]; TMPQ1[0,8] = tmp2 + tmp3; tmp2 = Rn_VPR128.16B[16,8]; tmp3 = Rn_VPR128.16B[24,8]; @@ -546,8 +546,8 @@ is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=3 & b_2121=1 & Rm_VPR128.2D { TMPQ1 = 0; # sipd infix TMPQ1 = +(Rn_VPR128.2D,Rm_VPR128.2D) on pairs lane size (8 to 8) - tmp2 = Rn_VPR128.2D[0,64]; - tmp3 = Rn_VPR128.2D[64,64]; + local tmp2 = Rn_VPR128.2D[0,64]; + local tmp3 = Rn_VPR128.2D[64,64]; TMPQ1[0,64] = tmp2 + tmp3; tmp2 = Rm_VPR128.2D[0,64]; tmp3 = Rm_VPR128.2D[64,64]; @@ -567,8 +567,8 @@ is b_3131=0 & q=0 & u=0 & b_2428=0xe & advSIMD3.size=2 & b_2121=1 & Rm_VPR64.2S { TMPD1 = 0; # sipd infix TMPD1 = +(Rn_VPR64.2S,Rm_VPR64.2S) on pairs lane size (4 to 4) - tmp2 = Rn_VPR64.2S[0,32]; - tmp3 = Rn_VPR64.2S[32,32]; + local tmp2 = Rn_VPR64.2S[0,32]; + local tmp3 = Rn_VPR64.2S[32,32]; TMPD1[0,32] = tmp2 + tmp3; tmp2 = Rm_VPR64.2S[0,32]; tmp3 = Rm_VPR64.2S[32,32]; @@ -588,8 +588,8 @@ is b_3131=0 & q=0 & u=0 & b_2428=0xe & advSIMD3.size=1 & b_2121=1 & Rm_VPR64.4H { TMPD1 = 0; # sipd infix TMPD1 = +(Rn_VPR64.4H,Rm_VPR64.4H) on pairs lane size (2 to 2) - tmp2 = Rn_VPR64.4H[0,16]; - tmp3 = Rn_VPR64.4H[16,16]; + local tmp2 = Rn_VPR64.4H[0,16]; + local tmp3 = Rn_VPR64.4H[16,16]; TMPD1[0,16] = tmp2 + tmp3; tmp2 = Rn_VPR64.4H[32,16]; tmp3 = Rn_VPR64.4H[48,16]; @@ -615,8 +615,8 @@ is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=2 & b_2121=1 & Rm_VPR128.4S { TMPQ1 = 0; # sipd infix TMPQ1 = +(Rn_VPR128.4S,Rm_VPR128.4S) on pairs lane size (4 to 4) - tmp2 = Rn_VPR128.4S[0,32]; - tmp3 = Rn_VPR128.4S[32,32]; + local tmp2 = Rn_VPR128.4S[0,32]; + local tmp3 = Rn_VPR128.4S[32,32]; TMPQ1[0,32] = tmp2 + tmp3; tmp2 = Rn_VPR128.4S[64,32]; tmp3 = Rn_VPR128.4S[96,32]; @@ -642,8 +642,8 @@ is b_3131=0 & q=0 & u=0 & b_2428=0xe & advSIMD3.size=0 & b_2121=1 & Rm_VPR64.8B { TMPD1 = 0; # sipd infix TMPD1 = +(Rn_VPR64.8B,Rm_VPR64.8B) on pairs lane size (1 to 1) - tmp2 = Rn_VPR64.8B[0,8]; - tmp3 = Rn_VPR64.8B[8,8]; + local tmp2 = Rn_VPR64.8B[0,8]; + local tmp3 = Rn_VPR64.8B[8,8]; TMPD1[0,8] = tmp2 + tmp3; tmp2 = Rn_VPR64.8B[16,8]; tmp3 = Rn_VPR64.8B[24,8]; @@ -681,8 +681,8 @@ is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=1 & b_2121=1 & Rm_VPR128.8H { TMPQ1 = 0; # sipd infix TMPQ1 = +(Rn_VPR128.8H,Rm_VPR128.8H) on pairs lane size (2 to 2) - tmp2 = Rn_VPR128.8H[0,16]; - tmp3 = Rn_VPR128.8H[16,16]; + local tmp2 = Rn_VPR128.8H[0,16]; + local tmp3 = Rn_VPR128.8H[16,16]; TMPQ1[0,16] = tmp2 + tmp3; tmp2 = Rn_VPR128.8H[32,16]; tmp3 = Rn_VPR128.8H[48,16]; @@ -3376,9 +3376,9 @@ is m=0 & b_3030=0 & s=0 & b_2428=0x1e & ftype=0 & b_2121=1 & Rm_FPR32 & b_1215=0 is b_3031=1 & u=1 & b_2428=0x1e & b_23=0 & b_1722=0x38 & b_1216=0xd & b_1011=2 & Rn_VPR128.2D & Rd_FPR64 & Zd { # sipd infix Rd_FPR64 = f+(Rn_VPR128.2D) on pairs lane size (8 to 8) - tmp1 = Rn_VPR128.2D[0,64]; - tmp2 = Rn_VPR128.2D[64,64]; - Rd_FPR64[0,64] = tmp1 f+ tmp2; + local tmp1 = Rn_VPR128.2D[0,64]; + local tmp2 = Rn_VPR128.2D[64,64]; + Rd_FPR64 = tmp1 f+ tmp2; zext_zd(Zd); # zero upper 24 bytes of Zd } @@ -3392,9 +3392,9 @@ is b_3031=1 & u=1 & b_2428=0x1e & b_23=0 & b_1722=0x38 & b_1216=0xd & b_1011=2 & is b_3031=1 & u=1 & b_2428=0x1e & b_23=0 & b_1722=0x18 & b_1216=0xd & b_1011=2 & Rn_VPR64.2S & Rd_FPR32 & Zd { # sipd infix Rd_FPR32 = f+(Rn_VPR64.2S) on pairs lane size (4 to 4) - tmp1 = Rn_VPR64.2S[0,32]; - tmp2 = Rn_VPR64.2S[32,32]; - Rd_FPR32[0,32] = tmp1 f+ tmp2; + local tmp1 = Rn_VPR64.2S[0,32]; + local tmp2 = Rn_VPR64.2S[32,32]; + Rd_FPR32 = tmp1 f+ tmp2; zext_zs(Zd); # zero upper 28 bytes of Zd } @@ -3409,9 +3409,9 @@ is b_3031=1 & u=1 & b_2428=0x1e & b_23=0 & b_1722=0x18 & b_1216=0xd & b_1011=2 & is b_1031=0b0101111000110000110110 & Rd_FPR16 & vRn_VPR128 & Rn_FPR32 & Zd { # sipd infix Rd_FPR16 = f+(Rn_FPR32) on pairs lane size (2 to 2) - tmp1 = Rn_FPR32[0,16]; - tmp2 = Rn_FPR32[16,16]; - Rd_FPR16[0,16] = tmp1 f+ tmp2; + local tmp1 = Rn_FPR32[0,16]; + local tmp2 = Rn_FPR32[16,16]; + Rd_FPR16 = tmp1 f+ tmp2; zext_zh(Zd); # zero upper 30 bytes of Zd } @@ -3426,8 +3426,8 @@ is b_3131=0 & q=1 & u=1 & b_2428=0xe & advSIMD3.size=1 & b_21=1 & Rm_VPR128.2D & { TMPQ1 = 0; # sipd infix TMPQ1 = f+(Rn_VPR128.2D,Rm_VPR128.2D) on pairs lane size (8 to 8) - tmp2 = Rn_VPR128.2D[0,64]; - tmp3 = Rn_VPR128.2D[64,64]; + local tmp2 = Rn_VPR128.2D[0,64]; + local tmp3 = Rn_VPR128.2D[64,64]; TMPQ1[0,64] = tmp2 f+ tmp3; tmp2 = Rm_VPR128.2D[0,64]; tmp3 = Rm_VPR128.2D[64,64]; @@ -3447,8 +3447,8 @@ is b_3131=0 & q=0 & u=1 & b_2428=0xe & advSIMD3.size=0 & b_21=1 & Rm_VPR64.2S & { TMPD1 = 0; # sipd infix TMPD1 = f+(Rn_VPR64.2S,Rm_VPR64.2S) on pairs lane size (4 to 4) - tmp2 = Rn_VPR64.2S[0,32]; - tmp3 = Rn_VPR64.2S[32,32]; + local tmp2 = Rn_VPR64.2S[0,32]; + local tmp3 = Rn_VPR64.2S[32,32]; TMPD1[0,32] = tmp2 f+ tmp3; tmp2 = Rm_VPR64.2S[0,32]; tmp3 = Rm_VPR64.2S[32,32]; @@ -3468,8 +3468,8 @@ is b_3131=0 & q=1 & u=1 & b_2428=0xe & advSIMD3.size=0 & b_21=1 & Rm_VPR128.4S & { TMPQ1 = 0; # sipd infix TMPQ1 = f+(Rn_VPR128.4S,Rm_VPR128.4S) on pairs lane size (4 to 4) - tmp2 = Rn_VPR128.4S[0,32]; - tmp3 = Rn_VPR128.4S[32,32]; + local tmp2 = Rn_VPR128.4S[0,32]; + local tmp3 = Rn_VPR128.4S[32,32]; TMPQ1[0,32] = tmp2 f+ tmp3; tmp2 = Rn_VPR128.4S[64,32]; tmp3 = Rn_VPR128.4S[96,32]; @@ -3496,8 +3496,8 @@ is b_31=0 & b_30=0 & b_2129=0b101110010 & b_1015=0b000101 & Rd_VPR64.4H & Rn_VPR { TMPD1 = 0; # sipd infix TMPD1 = f+(Rm_VPR64.4H,Rn_VPR64.4H) on pairs lane size (2 to 2) - tmp2 = Rm_VPR64.4H[0,16]; - tmp3 = Rm_VPR64.4H[16,16]; + local tmp2 = Rm_VPR64.4H[0,16]; + local tmp3 = Rm_VPR64.4H[16,16]; TMPD1[0,16] = tmp2 f+ tmp3; tmp2 = Rm_VPR64.4H[32,16]; tmp3 = Rm_VPR64.4H[48,16]; @@ -3524,8 +3524,8 @@ is b_31=0 & b_30=1 & b_2129=0b101110010 & b_1015=0b000101 & Rd_VPR128.8H & Rn_VP { TMPQ1 = 0; # sipd infix TMPQ1 = f+(Rn_VPR128.8H,Rm_VPR128.8H) on pairs lane size (2 to 2) - tmp2 = Rn_VPR128.8H[0,16]; - tmp3 = Rn_VPR128.8H[16,16]; + local tmp2 = Rn_VPR128.8H[0,16]; + local tmp3 = Rn_VPR128.8H[16,16]; TMPQ1[0,16] = tmp2 f+ tmp3; tmp2 = Rn_VPR128.8H[32,16]; tmp3 = Rn_VPR128.8H[48,16]; @@ -13271,10 +13271,10 @@ is b_31=0 & b_30=0 & b_2429=0b001110 & b_2223=0b00 & b_1021=0b100000011010 & Rd_ { TMPD1 = 0; # sipd infix TMPD1 = +(Rn_VPR64.8B) on pairs lane size (1 to 2) - tmp2 = Rn_VPR64.8B[0,8]; - tmp4 = sext(tmp2); - tmp3 = Rn_VPR64.8B[8,8]; - tmp5 = sext(tmp3); + local tmp2 = Rn_VPR64.8B[0,8]; + local tmp4 = sext(tmp2); + local tmp3 = Rn_VPR64.8B[8,8]; + local tmp5 = sext(tmp3); TMPD1[0,16] = tmp4 + tmp5; tmp2 = Rn_VPR64.8B[16,8]; tmp4 = sext(tmp2); @@ -13311,10 +13311,10 @@ is b_31=0 & b_30=1 & b_2429=0b001110 & b_2223=0b00 & b_1021=0b100000011010 & Rd_ { TMPQ1 = 0; # sipd infix TMPQ1 = +(Rn_VPR128.16B) on pairs lane size (1 to 2) - tmp2 = Rn_VPR128.16B[0,8]; - tmp4 = sext(tmp2); - tmp3 = Rn_VPR128.16B[8,8]; - tmp5 = sext(tmp3); + local tmp2 = Rn_VPR128.16B[0,8]; + local tmp4 = sext(tmp2); + local tmp3 = Rn_VPR128.16B[8,8]; + local tmp5 = sext(tmp3); TMPQ1[0,16] = tmp4 + tmp5; tmp2 = Rn_VPR128.16B[16,8]; tmp4 = sext(tmp2); @@ -13375,10 +13375,10 @@ is b_31=0 & b_30=0 & b_2429=0b001110 & b_2223=0b01 & b_1021=0b100000011010 & Rd_ { TMPD1 = 0; # sipd infix TMPD1 = +(Rn_VPR64.4H) on pairs lane size (2 to 4) - tmp2 = Rn_VPR64.4H[0,16]; - tmp4 = sext(tmp2); - tmp3 = Rn_VPR64.4H[16,16]; - tmp5 = sext(tmp3); + local tmp2 = Rn_VPR64.4H[0,16]; + local tmp4 = sext(tmp2); + local tmp3 = Rn_VPR64.4H[16,16]; + local tmp5 = sext(tmp3); TMPD1[0,32] = tmp4 + tmp5; tmp2 = Rn_VPR64.4H[32,16]; tmp4 = sext(tmp2); @@ -13403,10 +13403,10 @@ is b_31=0 & b_30=1 & b_2429=0b001110 & b_2223=0b01 & b_1021=0b100000011010 & Rd_ { TMPQ1 = 0; # sipd infix TMPQ1 = +(Rn_VPR128.8H) on pairs lane size (2 to 4) - tmp2 = Rn_VPR128.8H[0,16]; - tmp4 = sext(tmp2); - tmp3 = Rn_VPR128.8H[16,16]; - tmp5 = sext(tmp3); + local tmp2 = Rn_VPR128.8H[0,16]; + local tmp4 = sext(tmp2); + local tmp3 = Rn_VPR128.8H[16,16]; + local tmp5 = sext(tmp3); TMPQ1[0,32] = tmp4 + tmp5; tmp2 = Rn_VPR128.8H[32,16]; tmp4 = sext(tmp2); @@ -13441,14 +13441,15 @@ is b_31=0 & b_30=1 & b_2429=0b001110 & b_2223=0b01 & b_1021=0b100000011010 & Rd_ :sadalp Rd_VPR64.1D, Rn_VPR64.2S is b_31=0 & b_30=0 & b_2429=0b001110 & b_2223=0b10 & b_1021=0b100000011010 & Rd_VPR64.1D & Rn_VPR64.2S & Zd { + TMPD1 = 0; # sipd infix TMPD1 = +(Rn_VPR64.2S) on pairs lane size (4 to 8) - tmp2 = Rn_VPR64.2S[0,32]; - tmp4 = sext(tmp2); - tmp3 = Rn_VPR64.2S[32,32]; - tmp5 = sext(tmp3); - tmpd1 = tmp4 + tmp5; + local tmp2 = Rn_VPR64.2S[0,32]; + local tmp4 = sext(tmp2); + local tmp3 = Rn_VPR64.2S[32,32]; + local tmp5 = sext(tmp3); + TMPD1 = tmp4 + tmp5; # simd infix Rd_VPR64.1D = Rd_VPR64.1D + TMPD1 on lane size 8 - Rd_VPR64.1D[0,64] = Rd_VPR64.1D[0,64] + tmpd1; + Rd_VPR64.1D = Rd_VPR64.1D + TMPD1; zext_zd(Zd); # zero upper 24 bytes of Zd } @@ -13464,10 +13465,10 @@ is b_31=0 & b_30=1 & b_2429=0b001110 & b_2223=0b10 & b_1021=0b100000011010 & Rd_ { TMPQ1 = 0; # sipd infix TMPQ1 = +(Rn_VPR128.4S) on pairs lane size (4 to 8) - tmp2 = Rn_VPR128.4S[0,32]; - tmp4 = sext(tmp2); - tmp3 = Rn_VPR128.4S[32,32]; - tmp5 = sext(tmp3); + local tmp2 = Rn_VPR128.4S[0,32]; + local tmp4 = sext(tmp2); + local tmp3 = Rn_VPR128.4S[32,32]; + local tmp5 = sext(tmp3); TMPQ1[0,64] = tmp4 + tmp5; tmp2 = Rn_VPR128.4S[64,32]; tmp4 = sext(tmp2); @@ -13671,11 +13672,11 @@ is b_3131=0 & q=0 & u=0 & b_2428=0xe & advSIMD3.size=2 & b_1721=0x10 & b_1216=2 { TMPD1 = Rn_VPR64.2S; # sipd infix Rd_VPR64.1D = +(TMPD1) on pairs lane size (4 to 8) - tmp2 = TMPD1[0,32]; - tmp4 = sext(tmp2); - tmp3 = TMPD1[32,32]; - tmp5 = sext(tmp3); - Rd_VPR64.1D[0,64] = tmp4 + tmp5; + local tmp2 = TMPD1[0,32]; + local tmp4 = sext(tmp2); + local tmp3 = TMPD1[32,32]; + local tmp5 = sext(tmp3); + Rd_VPR64.1D = tmp4 + tmp5; zext_zd(Zd); # zero upper 24 bytes of Zd } @@ -13690,10 +13691,10 @@ is b_3131=0 & q=0 & u=0 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x10 & b_1216=2 { TMPD1 = Rn_VPR64.4H; # sipd infix Rd_VPR64.2S = +(TMPD1) on pairs lane size (2 to 4) - tmp2 = TMPD1[0,16]; - tmp4 = sext(tmp2); - tmp3 = TMPD1[16,16]; - tmp5 = sext(tmp3); + local tmp2 = TMPD1[0,16]; + local tmp4 = sext(tmp2); + local tmp3 = TMPD1[16,16]; + local tmp5 = sext(tmp3); Rd_VPR64.2S[0,32] = tmp4 + tmp5; tmp2 = TMPD1[32,16]; tmp4 = sext(tmp2); @@ -13714,10 +13715,10 @@ is b_3131=0 & q=0 & u=0 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x10 & b_1216=2 { TMPD1 = Rn_VPR64.8B; # sipd infix Rd_VPR64.4H = +(TMPD1) on pairs lane size (1 to 2) - tmp2 = TMPD1[0,8]; - tmp4 = sext(tmp2); - tmp3 = TMPD1[8,8]; - tmp5 = sext(tmp3); + local tmp2 = TMPD1[0,8]; + local tmp4 = sext(tmp2); + local tmp3 = TMPD1[8,8]; + local tmp5 = sext(tmp3); Rd_VPR64.4H[0,16] = tmp4 + tmp5; tmp2 = TMPD1[16,8]; tmp4 = sext(tmp2); @@ -13748,10 +13749,10 @@ is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=2 & b_1721=0x10 & b_1216=2 { TMPQ1 = Rn_VPR128.4S; # sipd infix Rd_VPR128.2D = +(TMPQ1) on pairs lane size (4 to 8) - tmp2 = TMPQ1[0,32]; - tmp4 = sext(tmp2); - tmp3 = TMPQ1[32,32]; - tmp5 = sext(tmp3); + local tmp2 = TMPQ1[0,32]; + local tmp4 = sext(tmp2); + local tmp3 = TMPQ1[32,32]; + local tmp5 = sext(tmp3); Rd_VPR128.2D[0,64] = tmp4 + tmp5; tmp2 = TMPQ1[64,32]; tmp4 = sext(tmp2); @@ -13772,10 +13773,10 @@ is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x10 & b_1216=2 { TMPQ1 = Rn_VPR128.8H; # sipd infix Rd_VPR128.4S = +(TMPQ1) on pairs lane size (2 to 4) - tmp2 = TMPQ1[0,16]; - tmp4 = sext(tmp2); - tmp3 = TMPQ1[16,16]; - tmp5 = sext(tmp3); + local tmp2 = TMPQ1[0,16]; + local tmp4 = sext(tmp2); + local tmp3 = TMPQ1[16,16]; + local tmp5 = sext(tmp3); Rd_VPR128.4S[0,32] = tmp4 + tmp5; tmp2 = TMPQ1[32,16]; tmp4 = sext(tmp2); @@ -13806,10 +13807,10 @@ is b_3131=0 & q=1 & u=0 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x10 & b_1216=2 { TMPQ1 = Rn_VPR128.16B; # sipd infix Rd_VPR128.8H = +(TMPQ1) on pairs lane size (1 to 2) - tmp2 = TMPQ1[0,8]; - tmp4 = sext(tmp2); - tmp3 = TMPQ1[8,8]; - tmp5 = sext(tmp3); + local tmp2 = TMPQ1[0,8]; + local tmp4 = sext(tmp2); + local tmp3 = TMPQ1[8,8]; + local tmp5 = sext(tmp3); Rd_VPR128.8H[0,16] = tmp4 + tmp5; tmp2 = TMPQ1[16,8]; tmp4 = sext(tmp2); @@ -23639,10 +23640,10 @@ is b_3131=0 & q=1 & u=1 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x10 & b_1216=0x { TMPQ1 = 0; # sipd infix TMPQ1 = +(Rn_VPR128.16B) on pairs lane size (1 to 2) - tmp2 = Rn_VPR128.16B[0,8]; - tmp4 = zext(tmp2); - tmp3 = Rn_VPR128.16B[8,8]; - tmp5 = zext(tmp3); + local tmp2 = Rn_VPR128.16B[0,8]; + local tmp4 = zext(tmp2); + local tmp3 = Rn_VPR128.16B[8,8]; + local tmp5 = zext(tmp3); TMPQ1[0,16] = tmp4 + tmp5; tmp2 = Rn_VPR128.16B[16,8]; tmp4 = zext(tmp2); @@ -23700,14 +23701,15 @@ is b_3131=0 & q=1 & u=1 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x10 & b_1216=0x :uadalp Rd_VPR64.1D, Rn_VPR64.2S is b_3131=0 & q=0 & u=1 & b_2428=0xe & advSIMD3.size=2 & b_1721=0x10 & b_1216=0x6 & b_1011=2 & Rn_VPR64.2S & Rd_VPR64.1D & Zd { + TMPD1 = 0; # sipd infix TMPD1 = +(Rn_VPR64.2S) on pairs lane size (4 to 8) - tmp2 = Rn_VPR64.2S[0,32]; - tmp4 = zext(tmp2); - tmp3 = Rn_VPR64.2S[32,32]; - tmp5 = zext(tmp3); - tmpd1 = tmp4 + tmp5; + local tmp2 = Rn_VPR64.2S[0,32]; + local tmp4 = zext(tmp2); + local tmp3 = Rn_VPR64.2S[32,32]; + local tmp5 = zext(tmp3); + TMPD1 = tmp4 + tmp5; # simd infix Rd_VPR64.1D = Rd_VPR64.1D + TMPD1 on lane size 8 - Rd_VPR64.1D[0,64] = Rd_VPR64.1D[0,64] + tmpd1; + Rd_VPR64.1D = Rd_VPR64.1D + TMPD1; zext_zd(Zd); # zero upper 24 bytes of Zd } @@ -23722,10 +23724,10 @@ is b_3131=0 & q=0 & u=1 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x10 & b_1216=0x { TMPD1 = 0; # sipd infix TMPD1 = +(Rn_VPR64.4H) on pairs lane size (2 to 4) - tmp2 = Rn_VPR64.4H[0,16]; - tmp4 = zext(tmp2); - tmp3 = Rn_VPR64.4H[16,16]; - tmp5 = zext(tmp3); + local tmp2 = Rn_VPR64.4H[0,16]; + local tmp4 = zext(tmp2); + local tmp3 = Rn_VPR64.4H[16,16]; + local tmp5 = zext(tmp3); TMPD1[0,32] = tmp4 + tmp5; tmp2 = Rn_VPR64.4H[32,16]; tmp4 = zext(tmp2); @@ -23749,10 +23751,10 @@ is b_3131=0 & q=1 & u=1 & b_2428=0xe & advSIMD3.size=2 & b_1721=0x10 & b_1216=0x { TMPQ1 = 0; # sipd infix TMPQ1 = +(Rn_VPR128.4S) on pairs lane size (4 to 8) - tmp2 = Rn_VPR128.4S[0,32]; - tmp4 = zext(tmp2); - tmp3 = Rn_VPR128.4S[32,32]; - tmp5 = zext(tmp3); + local tmp2 = Rn_VPR128.4S[0,32]; + local tmp4 = zext(tmp2); + local tmp3 = Rn_VPR128.4S[32,32]; + local tmp5 = zext(tmp3); TMPQ1[0,64] = tmp4 + tmp5; tmp2 = Rn_VPR128.4S[64,32]; tmp4 = zext(tmp2); @@ -23776,10 +23778,10 @@ is b_3131=0 & q=0 & u=1 & b_2428=0xe & advSIMD3.size=0 & b_1721=0x10 & b_1216=0x { TMPD1 = 0; # sipd infix TMPD1 = +(Rn_VPR64.8B) on pairs lane size (1 to 2) - tmp2 = Rn_VPR64.8B[0,8]; - tmp4 = zext(tmp2); - tmp3 = Rn_VPR64.8B[8,8]; - tmp5 = zext(tmp3); + local tmp2 = Rn_VPR64.8B[0,8]; + local tmp4 = zext(tmp2); + local tmp3 = Rn_VPR64.8B[8,8]; + local tmp5 = zext(tmp3); TMPD1[0,16] = tmp4 + tmp5; tmp2 = Rn_VPR64.8B[16,8]; tmp4 = zext(tmp2); @@ -23815,10 +23817,10 @@ is b_3131=0 & q=1 & u=1 & b_2428=0xe & advSIMD3.size=1 & b_1721=0x10 & b_1216=0x { TMPQ1 = 0; # sipd infix TMPQ1 = +(Rn_VPR128.8H) on pairs lane size (2 to 4) - tmp2 = Rn_VPR128.8H[0,16]; - tmp4 = zext(tmp2); - tmp3 = Rn_VPR128.8H[16,16]; - tmp5 = zext(tmp3); + local tmp2 = Rn_VPR128.8H[0,16]; + local tmp4 = zext(tmp2); + local tmp3 = Rn_VPR128.8H[16,16]; + local tmp5 = zext(tmp3); TMPQ1[0,32] = tmp4 + tmp5; tmp2 = Rn_VPR128.8H[32,16]; tmp4 = zext(tmp2); @@ -24035,10 +24037,10 @@ is b_31=0 & b_30=0 & b_2429=0b101110 & b_2223=0b00 & b_1021=0b100000001010 & Rd_ { TMPD1 = Rn_VPR64.8B; # sipd infix Rd_VPR64.4H = +(TMPD1) on pairs lane size (1 to 2) - tmp2 = TMPD1[0,8]; - tmp4 = zext(tmp2); - tmp3 = TMPD1[8,8]; - tmp5 = zext(tmp3); + local tmp2 = TMPD1[0,8]; + local tmp4 = zext(tmp2); + local tmp3 = TMPD1[8,8]; + local tmp5 = zext(tmp3); Rd_VPR64.4H[0,16] = tmp4 + tmp5; tmp2 = TMPD1[16,8]; tmp4 = zext(tmp2); @@ -24070,10 +24072,10 @@ is b_31=0 & b_30=1 & b_2429=0b101110 & b_2223=0b00 & b_1021=0b100000001010 & Rd_ { TMPQ1 = Rn_VPR128.16B; # sipd infix Rd_VPR128.8H = +(TMPQ1) on pairs lane size (1 to 2) - tmp2 = TMPQ1[0,8]; - tmp4 = zext(tmp2); - tmp3 = TMPQ1[8,8]; - tmp5 = zext(tmp3); + local tmp2 = TMPQ1[0,8]; + local tmp4 = zext(tmp2); + local tmp3 = TMPQ1[8,8]; + local tmp5 = zext(tmp3); Rd_VPR128.8H[0,16] = tmp4 + tmp5; tmp2 = TMPQ1[16,8]; tmp4 = zext(tmp2); @@ -24125,10 +24127,10 @@ is b_31=0 & b_30=0 & b_2429=0b101110 & b_2223=0b01 & b_1021=0b100000001010 & Rd_ { TMPD1 = Rn_VPR64.4H; # sipd infix Rd_VPR64.2S = +(TMPD1) on pairs lane size (2 to 4) - tmp2 = TMPD1[0,16]; - tmp4 = zext(tmp2); - tmp3 = TMPD1[16,16]; - tmp5 = zext(tmp3); + local tmp2 = TMPD1[0,16]; + local tmp4 = zext(tmp2); + local tmp3 = TMPD1[16,16]; + local tmp5 = zext(tmp3); Rd_VPR64.2S[0,32] = tmp4 + tmp5; tmp2 = TMPD1[32,16]; tmp4 = zext(tmp2); @@ -24150,10 +24152,10 @@ is b_31=0 & b_30=1 & b_2429=0b101110 & b_2223=0b01 & b_1021=0b100000001010 & Rd_ { TMPQ1 = Rn_VPR128.8H; # sipd infix Rd_VPR128.4S = +(TMPQ1) on pairs lane size (2 to 4) - tmp2 = TMPQ1[0,16]; - tmp4 = zext(tmp2); - tmp3 = TMPQ1[16,16]; - tmp5 = zext(tmp3); + local tmp2 = TMPQ1[0,16]; + local tmp4 = zext(tmp2); + local tmp3 = TMPQ1[16,16]; + local tmp5 = zext(tmp3); Rd_VPR128.4S[0,32] = tmp4 + tmp5; tmp2 = TMPQ1[32,16]; tmp4 = zext(tmp2); @@ -24185,11 +24187,11 @@ is b_31=0 & b_30=0 & b_2429=0b101110 & b_2223=0b10 & b_1021=0b100000001010 & Rd_ { TMPD1 = Rn_VPR64.2S; # sipd infix Rd_VPR64.1D = +(TMPD1) on pairs lane size (4 to 8) - tmp2 = TMPD1[0,32]; - tmp4 = zext(tmp2); - tmp3 = TMPD1[32,32]; - tmp5 = zext(tmp3); - Rd_VPR64.1D[0,64] = tmp4 + tmp5; + local tmp2 = TMPD1[0,32]; + local tmp4 = zext(tmp2); + local tmp3 = TMPD1[32,32]; + local tmp5 = zext(tmp3); + Rd_VPR64.1D = tmp4 + tmp5; zext_zd(Zd); # zero upper 24 bytes of Zd } @@ -24205,10 +24207,10 @@ is b_31=0 & b_30=1 & b_2429=0b101110 & b_2223=0b10 & b_1021=0b100000001010 & Rd_ { TMPQ1 = Rn_VPR128.4S; # sipd infix Rd_VPR128.2D = +(TMPQ1) on pairs lane size (4 to 8) - tmp2 = TMPQ1[0,32]; - tmp4 = zext(tmp2); - tmp3 = TMPQ1[32,32]; - tmp5 = zext(tmp3); + local tmp2 = TMPQ1[0,32]; + local tmp4 = zext(tmp2); + local tmp3 = TMPQ1[32,32]; + local tmp5 = zext(tmp3); Rd_VPR128.2D[0,64] = tmp4 + tmp5; tmp2 = TMPQ1[64,32]; tmp4 = zext(tmp2);