Skip to content

Commit 1209840

Browse files
committed
fix register indices
1 parent fa2736f commit 1209840

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

x86/x86asm/decode.go

+5-3
Original file line numberDiff line numberDiff line change
@@ -1276,7 +1276,8 @@ Decode:
12761276
narg++
12771277
case xArgRM8, xArgRM16, xArgRM32, xArgRM64, xArgR32M16, xArgR32M8, xArgR64M16,
12781278
xArgMmM32, xArgMmM64, xArgMm2M64,
1279-
xArgXmm2M16, xArgXmm2M32, xArgXmm2M64, xArgXmm2M128, xArgXmmM32, xArgXmmM64, xArgXmmM128,
1279+
xArgXmmM32, xArgXmmM64, xArgXmmM128,
1280+
xArgXmm2M8, xArgXmm2M16, xArgXmm2M32, xArgXmm2M64, xArgXmm2M128,
12801281
xArgYmm2M256:
12811282
if haveMem {
12821283
inst.Args[narg] = mem
@@ -1298,8 +1299,8 @@ Decode:
12981299
index -= 4
12991300
base = SPB
13001301
}
1301-
case xArgYmm2M256:
1302-
if vex == 0xC4 && inst.Prefix[vexIndex+1]&0x40 == 0x40 {
1302+
case xArgXmm2M8, xArgXmm2M16, xArgXmm2M32, xArgXmm2M64, xArgXmm2M128, xArgYmm2M256:
1303+
if vex == 0xC4 && inst.Prefix[vexIndex+1]&0x20 == 0 {
13031304
index += 8
13041305
}
13051306
}
@@ -1692,6 +1693,7 @@ var baseReg = [...]Reg{
16921693
xArgXmm2M16: X0,
16931694
xArgXmm2M32: X0,
16941695
xArgXmm2M64: X0,
1696+
xArgXmm2M8: X0,
16951697
xArgXmm: X0,
16961698
xArgXmmV: X0,
16971699
xArgXmmM128: X0,

x86/x86asm/testdata/decode.txt

+9
Original file line numberDiff line numberDiff line change
@@ -6761,6 +6761,15 @@ c4227d2a0c36|6677885f5f5f5f5f5f5f 64 gnu vmovntdqa (%rsi,%r14,1),%ymm9
67616761
c57d7ff7|44556677885f5f5f5f5f5f5f 64 intel vmovdqa ymm7, ymm14
67626762
c57d7ff7|44556677885f5f5f5f5f5f5f 64 plan9 VMOVDQA Y14, Y7
67636763
c57d7ff7|44556677885f5f5f5f5f5f5f 64 gnu vmovdqa %ymm14,%ymm7
6764+
c4e27d791500000000|5f5f5f5f5f5f5f 64 intel vpbroadcastw ymm2, word ptr [rip]
6765+
c4e27d791500000000|5f5f5f5f5f5f5f 64 plan9 VPBROADCASTW 0(IP), Y2
6766+
c4e27d791500000000|5f5f5f5f5f5f5f 64 gnu vpbroadcastww (%rip),%ymm2
6767+
c4e27d78c8|556677885f5f5f5f5f5f5f 64 intel vpbroadcastb ymm1, xmm0
6768+
c4e27d78c8|556677885f5f5f5f5f5f5f 64 plan9 VPBROADCASTB X0, Y1
6769+
c4e27d78c8|556677885f5f5f5f5f5f5f 64 gnu vpbroadcastb %xmm0,%ymm1
6770+
c441305ec2|556677885f5f5f5f5f5f5f 64 intel vdivps xmm8, xmm9, xmm10
6771+
c441305ec2|556677885f5f5f5f5f5f5f 64 plan9 VDIVPS X10, X9, X8
6772+
c441305ec2|556677885f5f5f5f5f5f5f 64 gnu vdivps %xmm10,%xmm9,%xmm8
67646773
c5f5efe2|44556677885f5f5f5f5f5f5f 64 intel vpxor ymm4, ymm1, ymm2
67656774
c5f5efe2|44556677885f5f5f5f5f5f5f 64 plan9 VPXOR Y2, Y1, Y4
67666775
c5f5efe2|44556677885f5f5f5f5f5f5f 64 gnu vpxor %ymm2,%ymm1,%ymm4

0 commit comments

Comments
 (0)