瀏覽代碼

+ store also ecx and edx after cpuid call with eax=7
+ test VNNI and BIGALG instructions

florian 3 年之前
父節點
當前提交
79cf1dd9cf
共有 3 個文件被更改,包括 8 次插入4 次删除
  1. 2 0
      rtl/i386/cpu.pp
  2. 2 0
      rtl/x86_64/cpu.pp
  3. 4 4
      tests/test/units/cpu/tcpu1.pp

+ 2 - 0
rtl/i386/cpu.pp

@@ -253,6 +253,8 @@ unit cpu;
                     movl $0,%ecx
                     cpuid
                     movl %ebx,_ebx
+                    movl %ecx,_ecx
+                    movl %edx,_edx
                     popl %ebx
                   end;
                   _AVX2Support:=_AVXSupport and ((_ebx and $20)<>0);

+ 2 - 0
rtl/x86_64/cpu.pp

@@ -228,6 +228,8 @@ unit cpu;
               movl $0,%ecx
               cpuid
               movl %ebx,_ebx
+              movl %ecx,_ecx
+              movl %edx,_edx
             end ['rax','rbx','rcx','rdx'];
             _AVX2Support:=_AVXSupport and ((_ebx and $20)<>0);
             _AVX512FSupport:=(_ebx and $10000)<>0;

+ 4 - 4
tests/test/units/cpu/tcpu1.pp

@@ -40,8 +40,8 @@ begin
     begin
       writeln('yes');
       asm
-       // vpxor %ymm0,%ymm0,%ymm0
-       // vaddpd %zmm0,%zmm0,%zmm0
+       vpxor %ymm0,%ymm0,%ymm0
+       vpdpbusd %zmm0,%zmm0,%zmm0
       end;
     end
   else
@@ -51,8 +51,8 @@ begin
     begin
       writeln('yes');
       asm
-        //vpxor %ymm0,%ymm0,%ymm0
-        //vaddpd %zmm0,%zmm0,%zmm0
+        vpxor %ymm0,%ymm0,%ymm0
+        vpopcntb %zmm0,%zmm0
       end;
     end
   else