Jonas Maebe e5a1231931 * updated FSF address (mantis #30198, patch by Paul Gevers) 9 năm trước cách đây
..
asmtestgenerator.pas e5a1231931 * updated FSF address (mantis #30198, patch by Paul Gevers) 9 năm trước cách đây
avxopcodes.pas 8635894de4 * merged new changes to avx2 branch (AVX2 vectory-memory support) by Torsten Grundke 11 năm trước cách đây
avxtestfilecmp.pp dc17b7ef46 * Extention -> extension (By Reinier, bug ID #25979) 11 năm trước cách đây
avxtestgenerator.pp e5a1231931 * updated FSF address (mantis #30198, patch by Paul Gevers) 9 năm trước cách đây
baselist.pas e5a1231931 * updated FSF address (mantis #30198, patch by Paul Gevers) 9 năm trước cách đây
cmpoptions.pas dc17b7ef46 * Extention -> extension (By Reinier, bug ID #25979) 11 năm trước cách đây
filecomparer.pas dc17b7ef46 * Extention -> extension (By Reinier, bug ID #25979) 11 năm trước cách đây
options.pas e5a1231931 * updated FSF address (mantis #30198, patch by Paul Gevers) 9 năm trước cách đây
readme.txt 3b14b28161 + support for FASM output, using it for testing does not work though, see readme.txt 11 năm trước cách đây

readme.txt

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:

possible binary-codes:
VMOVAPD xmm1, xmm2/m128 [VEX.128.66.0F.28 /r]
VMOVAPD xmm2/m128, xmm1 [VEX.128.66.0F.29 /r]


VMOVSD XMM1, XMM2, XMM3

possible binary-codes:
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
VMOVAPS
VMOVDQA
VMOVDQU
VMOVQ
VMOVSD
VMOVSS
VMOVUPD
VMOVUPS