Skip to content

Commit 125a3fa

Browse files
committed
Merge remote-tracking branch 'origin/caheckman_sleighx86vector'
2 parents d982c09 + 53e4a67 commit 125a3fa

File tree

4 files changed

+1443
-1970
lines changed

4 files changed

+1443
-1970
lines changed

Ghidra/Processors/x86/data/languages/avx2_manual.sinc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
# VINSERTI128/VINSERTI32x4/VINSERTI64x2/VINSERTI32x8/VINSERTI64x4 5-314 PAGE 2138 LINE 109785
22
define pcodeop vinserti128 ;
3-
:VINSERTI128 YmmReg1, vexVVVV_YmmReg, XmmReg2_m128, imm8 is $(VEX_NDS) & $(VEX_L256) & $(VEX_PRE_66) & $(VEX_0F3A) & $(VEX_W0) & vexVVVV_YmmReg & vexVVVV_YmmReg_DQa & vexVVVV_YmmReg_DQb; byte=0x38; (YmmReg1 & YmmReg1_DQa & YmmReg1_DQb) ... & XmmReg2_m128; imm8 & imm8_0 {
3+
:VINSERTI128 YmmReg1, vexVVVV_YmmReg, XmmReg2_m128, imm8 is $(VEX_NDS) & $(VEX_L256) & $(VEX_PRE_66) & $(VEX_0F3A) & $(VEX_W0) & vexVVVV_YmmReg; byte=0x38; YmmReg1 ... & XmmReg2_m128; imm8 & imm8_0 {
44
local tmp:16 = XmmReg2_m128;
55

66
# ignoring all but the least significant bit
77
if (imm8_0:1 == 0) goto <case0>;
88
if (imm8_0:1 == 1) goto <case1>;
99

1010
<case0>
11-
YmmReg1_DQa = tmp;
12-
YmmReg1_DQb = vexVVVV_YmmReg_DQb;
11+
YmmReg1[0,128] = tmp;
12+
YmmReg1[128,128] = vexVVVV_YmmReg[128,128];
1313
goto <done>;
1414

1515
<case1>
16-
YmmReg1_DQa = vexVVVV_YmmReg_DQa;
17-
YmmReg1_DQb = tmp;
16+
YmmReg1[0,128] = vexVVVV_YmmReg[0,128];
17+
YmmReg1[128,128] = tmp;
1818

1919
<done>
2020
}

Ghidra/Processors/x86/data/languages/avx_manual.sinc

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,46 @@
11
# MOVSD 4-111 PAGE 1231 LINE 63970
2-
:VMOVSD XmmReg1, vexVVVV_XmmReg, XmmReg2 is $(VEX_NDS) & $(VEX_LIG) & $(VEX_PRE_F2) & $(VEX_0F) & $(VEX_WIG) & vexVVVV_XmmReg & vexVVVV_XmmReg_Qb; byte=0x10; (XmmReg1 & XmmReg1_Qa & XmmReg1_Qb & YmmReg1) & (mod=0x3 & XmmReg2 & XmmReg2_Qa)
2+
:VMOVSD XmmReg1, vexVVVV_XmmReg, XmmReg2 is $(VEX_NDS) & $(VEX_LIG) & $(VEX_PRE_F2) & $(VEX_0F) & $(VEX_WIG) & vexVVVV_XmmReg; byte=0x10; XmmReg1 & YmmReg1 & (mod=0x3 & XmmReg2)
33
{
4-
local tmpa:8 = XmmReg2_Qa;
5-
local tmpb:8 = vexVVVV_XmmReg_Qb;
4+
local tmpa:8 = XmmReg2[0,64];
5+
local tmpb:8 = vexVVVV_XmmReg[64,64];
66
YmmReg1 = 0;
7-
XmmReg1_Qa = tmpa;
8-
XmmReg1_Qb = tmpb;
7+
XmmReg1[0,64] = tmpa;
8+
XmmReg1[64,64] = tmpb;
99
# TODO ZmmReg1 = zext(XmmReg1)
1010
}
1111

1212
# MOVSD 4-111 PAGE 1231 LINE 63972
1313
:VMOVSD XmmReg1, m64 is $(VEX_NONE) & $(VEX_LIG) & $(VEX_PRE_F2) & $(VEX_0F) & $(VEX_WIG); byte=0x10; (XmmReg1 & YmmReg1) ... & m64
1414
{
15-
local tmp:16 = zext(m64);
16-
YmmReg1 = zext(tmp);
15+
YmmReg1[0,64] = m64;
16+
YmmReg1[64,64] = 0;
1717
# TODO ZmmReg1 = zext(XmmReg1)
1818
}
1919

2020
# MOVSD 4-111 PAGE 1231 LINE 63974
21-
:VMOVSD XmmReg2, vexVVVV_XmmReg, XmmReg1 is $(VEX_NDS) & $(VEX_LIG) & $(VEX_PRE_F2) & $(VEX_0F) & $(VEX_WIG) & vexVVVV_XmmReg & vexVVVV_XmmReg_Qb; byte=0x11; XmmReg1 & XmmReg1_Qa & (mod=0x3 & (XmmReg2 & XmmReg2_Qa & XmmReg2_Qb & YmmReg2))
21+
:VMOVSD XmmReg2, vexVVVV_XmmReg, XmmReg1 is $(VEX_NDS) & $(VEX_LIG) & $(VEX_PRE_F2) & $(VEX_0F) & $(VEX_WIG) & vexVVVV_XmmReg; byte=0x11; XmmReg1 & (mod=0x3 & (XmmReg2 & YmmReg2))
2222
{
23-
local tmpa:8 = XmmReg1_Qa;
24-
local tmpb:8 = vexVVVV_XmmReg_Qb;
23+
local tmpa:8 = XmmReg1[0,64];
24+
local tmpb:8 = vexVVVV_XmmReg[64,64];
2525
YmmReg2 = 0;
26-
XmmReg2_Qa = tmpa;
27-
XmmReg2_Qb = tmpb;
26+
XmmReg2[0,64] = tmpa;
27+
XmmReg2[64,64] = tmpb;
2828
# TODO ZmmReg2 = zext(XmmReg2)
2929
}
3030

3131
# MOVSD 4-111 PAGE 1231 LINE 63976
32-
:VMOVSD m64, XmmReg1 is $(VEX_NONE) & $(VEX_LIG) & $(VEX_PRE_F2) & $(VEX_0F) & $(VEX_WIG); byte=0x11; (XmmReg1 & XmmReg1_Qa) ... & m64
32+
:VMOVSD m64, XmmReg1 is $(VEX_NONE) & $(VEX_LIG) & $(VEX_PRE_F2) & $(VEX_0F) & $(VEX_WIG); byte=0x11; XmmReg1 ... & m64
3333
{
34-
m64 = XmmReg1_Qa;
34+
m64 = XmmReg1[0,64];
3535
}
3636

3737
# MOVUPS 4-130 PAGE 1250 LINE 64872
3838
:VMOVUPS XmmReg1, XmmReg2_m128 is $(VEX_NONE) & $(VEX_L128) & $(VEX_PRE_NONE) & $(VEX_0F) & $(VEX_WIG); byte=0x10; (XmmReg1 & YmmReg1) ... & XmmReg2_m128
3939
{
4040
local tmp:16 = XmmReg2_m128;
41-
YmmReg1 = zext(tmp);
41+
YmmReg1[0,128] = tmp;
42+
YmmReg1[128,64] = 0;
43+
YmmReg1[192,64] = 0;
4244
}
4345

4446
# MOVUPS 4-130 PAGE 1250 LINE 64874

0 commit comments

Comments
 (0)