diff options
Diffstat (limited to 'tests/utils/avx/readme.txt')
-rw-r--r-- | tests/utils/avx/readme.txt | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/tests/utils/avx/readme.txt b/tests/utils/avx/readme.txt index a403a53a09..d6954df602 100644 --- a/tests/utils/avx/readme.txt +++ b/tests/utils/avx/readme.txt @@ -2,17 +2,52 @@ create testfiles in shell (linux): for i in `ls /tmp/avx/*.pp`; do /home/torsten/fpc/avx/ppcx64 -Fu/home/torsten/fpc/avx/rtl/units/x86_64-linux/ "$i"; done; +On windows, complete testing would look like: + +i386: +mkdir tmp +fpc avxtestgenerator +fpc avxtestfilecmp +avxtestgenerator -ffpc -otmp +cd tmp +for %%p in (*.pp) do call fpc %%p -v0 +cd .. +avxtestgenerator -fnasm -otmp +cd tmp +for %%a in (*.asm) do nasm -fwin32 %%a +cd .. +avxtestfilecmp -mtmp\*.obj -dtmp -eexe -s + +x86_64: +fpc avxtestgenerator +fpc avxtestfilecmp +avxtestgenerator -px8664 -ffpc -otmp +cd tmp +for %%p in (*.pp) do call fpc -Px86_64 %%p -v0 +cd .. +avxtestgenerator -px8664 -fnasm -otmp +cd tmp +for %%a in (*.asm) do nasm -fwin64 %%a +cd .. +avxtestfilecmp -mtmp\*.obj -dtmp -eexe -s + +**************************************************************************************************** +Note: +While avxtestgenerator supports FASM output, testing with FASM does not work because +FASM assembles slightly different from FPC, e.g. it swaps base and index register +in references if this is benefical (e.g. [rbp+rax] => [rax+rbp] saves one byte). +**************************************************************************************************** compare binary-files: any instructions can have a different binary-streams e.g. - VMOVAPD XMM0, XMM1: + VMOVAPD XMM0, XMM1: possible binary-codes: VMOVAPD xmm1, xmm2/m128 [VEX.128.66.0F.28 /r] - VMOVAPD xmm2/m128, xmm1 [VEX.128.66.0F.29 /r] + VMOVAPD xmm2/m128, xmm1 [VEX.128.66.0F.29 /r] VMOVSD XMM1, XMM2, XMM3 @@ -21,10 +56,9 @@ e.g. VMOVSD xmm1, xmm2, xmm3 [VEX.NDS.LIG.F2.0F.WIG.10 /r] operand encoding: RVM VMOVSD xmm1, xmm2, xmm3 [VEX.NDS.LIG.F2.0F.WIG.11 /r] operand encoding: MVR - currently (AVX I): -VMOVAPD +VMOVAPD VMOVAPS VMOVDQA VMOVDQU |