@@ -809,6 +809,7 @@ m64: "qword ptr" Mem is Mem { export *:8 Mem; }
809
809
# m80: Mem is Mem { export *:10 Mem; }
810
810
m128: "xmmword ptr" Mem is Mem { export *:16 Mem; }
811
811
m256: "ymmword ptr" Mem is Mem { export *:32 Mem; }
812
+ m512: "64b ptr" Mem is Mem { export *:64 Mem; }
812
813
813
814
# spec versions of the m8/m16/m32/... tables explicitly print the operand size
814
815
spec_m8: "byte ptr "^Mem is Mem { export *:1 Mem; }
@@ -5574,6 +5575,30 @@ define pcodeop minps;
5574
5575
:MOVQ rm64, XmmReg is $(LONGMODE_ON) & vexMode=0 & opsize=2 & $(PRE_66) & byte=0x0F; byte=0x7E; rm64 & XmmReg ... { rm64 = XmmReg(0); }
5575
5576
@endif
5576
5577
5578
+
5579
+ :MOVDIRI Mem,Reg32 is $(LONGMODE_OFF) & vexMode=0 & $(PRE_NO) & byte=0x0F; byte=0x38; byte=0xF9; Mem & Reg32 ... { *Mem = Reg32; }
5580
+ @ifdef IA64
5581
+ :MOVDIRI Mem,Reg64 is vexMode=0 & $(PRE_NO) & $(REX_W) & byte=0x0F; byte=0x38; byte=0xF9; Mem & Reg64 ... { *Mem = Reg64; }
5582
+ @endif
5583
+
5584
+ define pcodeop movdir64b;
5585
+ :MOVDIR64B Reg16, m512 is $(LONGMODE_OFF) & vexMode=0 & $(PRE_66) & addrsize=0 & byte=0x0F; byte=0x38; byte=0xF8; Reg16 ... & m512 {
5586
+ movdir64b(Reg16, m512);
5587
+ }
5588
+ :MOVDIR64B Reg32, m512 is $(LONGMODE_OFF) & vexMode=0 & $(PRE_66) & addrsize=1 & byte=0x0F; byte=0x38; byte=0xF8; Reg32 ... & m512 {
5589
+ movdir64b(Reg32, m512);
5590
+ }
5591
+
5592
+ @ifdef IA64
5593
+ :MOVDIR64B Reg32, m512 is $(LONGMODE_ON) & vexMode=0 & $(PRE_66) & addrsize=1 & byte=0x0F; byte=0x38; byte=0xF8; Reg32 ... & m512 {
5594
+ movdir64b(Reg32, m512);
5595
+ }
5596
+
5597
+ :MOVDIR64B Reg64, m512 is $(LONGMODE_ON) & vexMode=0 & $(PRE_66) & byte=0x0F; byte=0x38; byte=0xF8; Reg64 ... & m512 {
5598
+ movdir64b(Reg64, m512);
5599
+ }
5600
+ @endif
5601
+
5577
5602
:MOVDDUP XmmReg, m64 is vexMode=0 & $(PRE_F2) & byte=0x0F; byte=0x12; m64 & XmmReg ...
5578
5603
{
5579
5604
XmmReg[0,64] = m64;
0 commit comments