Explorar o código

git-svn-id: branches/tg74/avx512@42705 -

tg74 %!s(int64=6) %!d(string=hai) anos
pai
achega
f71f9b702c
Modificáronse 1 ficheiros con 15 adicións e 18 borrados
  1. 15 18
      compiler/x86/aasmcpu.pas

+ 15 - 18
compiler/x86/aasmcpu.pas

@@ -177,10 +177,9 @@ interface
       { register class 5: XMM (both reg and r/m) }
       { register class 5: XMM (both reg and r/m) }
       OT_XMMREG    = OT_REGNORM  or otf_reg_xmm;
       OT_XMMREG    = OT_REGNORM  or otf_reg_xmm;
       OT_XMMRM     = OT_REGMEM   or otf_reg_xmm;
       OT_XMMRM     = OT_REGMEM   or otf_reg_xmm;
-      OT_XMEM      = OT_REGNORM  or otf_reg_xmm or otf_reg_gpr;
-      OT_XMEM32    = OT_XMEM     or OT_BITS32;
+      OT_XMEM32    = OT_REGNORM  or otf_reg_xmm or otf_reg_gpr or OT_BITS32;
       OT_XMEM32_M  = OT_XMEM32   or OT_VECTORMASK;
       OT_XMEM32_M  = OT_XMEM32   or OT_VECTORMASK;
-      OT_XMEM64    = OT_XMEM     or OT_BITS64;
+      OT_XMEM64    = OT_REGNORM  or otf_reg_xmm or otf_reg_gpr or OT_BITS64;
       OT_XMEM64_M  = OT_XMEM64   or OT_VECTORMASK;
       OT_XMEM64_M  = OT_XMEM64   or OT_VECTORMASK;
 
 
       OT_XMMREG_M   = OT_XMMREG  or OT_VECTORMASK;
       OT_XMMREG_M   = OT_XMMREG  or OT_VECTORMASK;
@@ -196,10 +195,9 @@ interface
       { register class 5: YMM (both reg and r/m) }
       { register class 5: YMM (both reg and r/m) }
       OT_YMMREG     = OT_REGNORM or otf_reg_ymm;
       OT_YMMREG     = OT_REGNORM or otf_reg_ymm;
       OT_YMMRM      = OT_REGMEM  or otf_reg_ymm;
       OT_YMMRM      = OT_REGMEM  or otf_reg_ymm;
-      OT_YMEM       = OT_REGNORM or otf_reg_ymm or otf_reg_gpr;
-      OT_YMEM32     = OT_YMEM    or OT_BITS32;
+      OT_YMEM32     = OT_REGNORM or otf_reg_ymm or otf_reg_gpr or OT_BITS32;
       OT_YMEM32_M   = OT_YMEM32  or OT_VECTORMASK;
       OT_YMEM32_M   = OT_YMEM32  or OT_VECTORMASK;
-      OT_YMEM64     = OT_YMEM    or OT_BITS64;
+      OT_YMEM64     = OT_REGNORM or otf_reg_ymm or otf_reg_gpr or OT_BITS64;
       OT_YMEM64_M   = OT_YMEM64  or OT_VECTORMASK;
       OT_YMEM64_M   = OT_YMEM64  or OT_VECTORMASK;
 
 
       OT_YMMREG_M   = OT_YMMREG  or OT_VECTORMASK;
       OT_YMMREG_M   = OT_YMMREG  or OT_VECTORMASK;
@@ -214,20 +212,19 @@ interface
       { register class 5: ZMM (both reg and r/m) }
       { register class 5: ZMM (both reg and r/m) }
       OT_ZMMREG     = OT_REGNORM or otf_reg_zmm;
       OT_ZMMREG     = OT_REGNORM or otf_reg_zmm;
       OT_ZMMRM      = OT_REGMEM  or otf_reg_zmm;
       OT_ZMMRM      = OT_REGMEM  or otf_reg_zmm;
-      OT_ZMEM       = OT_REGNORM or otf_reg_zmm or otf_reg_gpr;
-      OT_ZMEM32     = OT_ZMEM    or OT_BITS32;
+      OT_ZMEM32     = OT_REGNORM or otf_reg_zmm or otf_reg_gpr or OT_BITS32;
       OT_ZMEM32_M   = OT_ZMEM32  or OT_VECTORMASK;
       OT_ZMEM32_M   = OT_ZMEM32  or OT_VECTORMASK;
-      OT_ZMEM64     = OT_ZMEM    or OT_BITS64;
+      OT_ZMEM64     = OT_REGNORM or otf_reg_zmm or otf_reg_gpr or OT_BITS64;
       OT_ZMEM64_M   = OT_ZMEM64  or OT_VECTORMASK;
       OT_ZMEM64_M   = OT_ZMEM64  or OT_VECTORMASK;
 
 
 
 
-      OT_ZMMREG_M   = OT_ZMMREG or OT_VECTORMASK;
-      OT_ZMMREG_MZ  = OT_ZMMREG or OT_VECTORMASK or OT_VECTORZERO;
-      OT_ZMMRM_MZ   = OT_ZMMRM  or OT_VECTORMASK or OT_VECTORZERO;
-      OT_ZMMREG_SAE = OT_ZMMREG or OT_VECTORSAE;
-      OT_ZMMRM_SAE  = OT_ZMMRM  or OT_VECTORSAE;
-      OT_ZMMREG_ER  = OT_ZMMREG or OT_VECTORER;
-      OT_ZMMRM_ER   = OT_ZMMRM  or OT_VECTORER;
+      OT_ZMMREG_M   = OT_ZMMREG  or OT_VECTORMASK;
+      OT_ZMMREG_MZ  = OT_ZMMREG  or OT_VECTORMASK or OT_VECTORZERO;
+      OT_ZMMRM_MZ   = OT_ZMMRM   or OT_VECTORMASK or OT_VECTORZERO;
+      OT_ZMMREG_SAE = OT_ZMMREG  or OT_VECTORSAE;
+      OT_ZMMRM_SAE  = OT_ZMMRM   or OT_VECTORSAE;
+      OT_ZMMREG_ER  = OT_ZMMREG  or OT_VECTORER;
+      OT_ZMMRM_ER   = OT_ZMMRM   or OT_VECTORER;
 
 
 
 
       OT_KREG       = OT_REGNORM or otf_reg_k;
       OT_KREG       = OT_REGNORM or otf_reg_k;
@@ -1712,8 +1709,8 @@ implementation
              exit;
              exit;
 
 
            // IGNORE VECTOR-MEMORY-SIZE
            // IGNORE VECTOR-MEMORY-SIZE
-           if (insot and OT_TYPE_MASK = OT_MEMORY) then
-            insot := insot and not(OT_BITS128 or OT_BITS256 or OT_BITS512);
+           if insot and OT_TYPE_MASK = OT_MEMORY then
+            insot := insot and not(int64(OT_BITS128 or OT_BITS256 or OT_BITS512));
 
 
            { Check if the passed operand size matches with one of
            { Check if the passed operand size matches with one of
              the supported operand sizes }
              the supported operand sizes }