diff options
author | Peter Johnson <peter@tortall.net> | 2009-01-14 08:28:13 +0000 |
---|---|---|
committer | Peter Johnson <peter@tortall.net> | 2009-01-14 08:28:13 +0000 |
commit | 5624364e9096be838dcdb872ee88d704968b4048 (patch) | |
tree | 26deceb3edeb8dbaefae713177c9b77fb88bcb06 | |
parent | ab1449c2067c16b260d4681419ae595139b1a878 (diff) | |
download | yasm-5624364e9096be838dcdb872ee88d704968b4048.tar.gz |
Update AVX and FMA to latest Intel specification (Dec 2008).
- Removed VPERMIL2 opcodes (VPERMIL2PS, VPERMIL2PD).
- Replaced 4-operand FMA instructions with completely new set of opcodes.
Contributed by: Mark Charney, Intel Corporation <mark.charney@intel.com>
svn path=/trunk/yasm/; revision=2170
-rwxr-xr-x | modules/arch/x86/gen_x86_insn.py | 248 | ||||
-rw-r--r-- | modules/arch/x86/tests/Makefile.inc | 3 | ||||
-rw-r--r-- | modules/arch/x86/tests/avx.asm | 22 | ||||
-rw-r--r-- | modules/arch/x86/tests/avx.hex | 120 | ||||
-rw-r--r-- | modules/arch/x86/tests/fma.asm | 396 | ||||
-rw-r--r-- | modules/arch/x86/tests/fma.hex | 1810 | ||||
-rw-r--r-- | modules/arch/x86/tests/vpermil2.asm | 10 | ||||
-rw-r--r-- | modules/arch/x86/tests/vpermil2.hex | 36 |
8 files changed, 1717 insertions, 928 deletions
diff --git a/modules/arch/x86/gen_x86_insn.py b/modules/arch/x86/gen_x86_insn.py index 9dcae4ba..60f27eb4 100755 --- a/modules/arch/x86/gen_x86_insn.py +++ b/modules/arch/x86/gen_x86_insn.py @@ -6283,225 +6283,123 @@ add_group("vpermil", add_insn("vpermilpd", "vpermil", modifiers=[0x05]) add_insn("vpermilps", "vpermil", modifiers=[0x04]) -add_group("vpermil2", - cpu=["AVX"], - modifiers=["Op2Add"], - vex=128, - vexw=0, - prefix=0x66, - opcode=[0x0F, 0x3A, 0x00], - operands=[Operand(type="SIMDReg", size=128, dest="Spare"), - Operand(type="SIMDReg", size=128, dest="VEX"), - Operand(type="SIMDRM", size=128, relaxed=True, dest="EA"), - Operand(type="SIMDReg", size=128, dest="VEXImmSrc"), - Operand(type="Imm", dest="VEXImm")]) -add_group("vpermil2", - cpu=["AVX"], - modifiers=["Op2Add"], - vex=128, - vexw=1, - prefix=0x66, - opcode=[0x0F, 0x3A, 0x00], - operands=[Operand(type="SIMDReg", size=128, dest="Spare"), - Operand(type="SIMDReg", size=128, dest="VEX"), - Operand(type="SIMDReg", size=128, dest="VEXImmSrc"), - Operand(type="SIMDRM", size=128, relaxed=True, dest="EA"), - Operand(type="Imm", dest="VEXImm")]) -add_group("vpermil2", - cpu=["AVX"], - modifiers=["Op2Add"], - vex=256, - vexw=0, - prefix=0x66, - opcode=[0x0F, 0x3A, 0x00], - operands=[Operand(type="SIMDReg", size=256, dest="Spare"), - Operand(type="SIMDReg", size=256, dest="VEX"), - Operand(type="SIMDRM", size=256, relaxed=True, dest="EA"), - Operand(type="SIMDReg", size=256, dest="VEXImmSrc"), - Operand(type="Imm", dest="VEXImm")]) -add_group("vpermil2", +add_group("vperm2f128", cpu=["AVX"], - modifiers=["Op2Add"], vex=256, - vexw=1, prefix=0x66, - opcode=[0x0F, 0x3A, 0x00], + opcode=[0x0F, 0x3A, 0x06], operands=[Operand(type="SIMDReg", size=256, dest="Spare"), Operand(type="SIMDReg", size=256, dest="VEX"), - Operand(type="SIMDReg", size=256, dest="VEXImmSrc"), Operand(type="SIMDRM", size=256, relaxed=True, dest="EA"), - Operand(type="Imm", dest="VEXImm")]) + Operand(type="Imm", size=8, relaxed=True, dest="Imm")]) -add_insn("vpermil2pd", "vpermil2", modifiers=[0x49]) -add_insn("vpermil2ps", "vpermil2", modifiers=[0x48]) +add_insn("vperm2f128", "vperm2f128") -# Immediate aliases for the above -add_group("vpermil2_fixed", - cpu=["AVX"], - modifiers=["Op2Add", "Imm8"], - vex=128, - vexw=0, - prefix=0x66, - opcode=[0x0F, 0x3A, 0x00], - operands=[Operand(type="SIMDReg", size=128, dest="Spare"), - Operand(type="SIMDReg", size=128, dest="VEX"), - Operand(type="SIMDRM", size=128, relaxed=True, dest="EA"), - Operand(type="SIMDReg", size=128, dest="VEXImmSrc")]) -add_group("vpermil2_fixed", - cpu=["AVX"], - modifiers=["Op2Add", "Imm8"], +##################################################################### +# Intel FMA instructions +##################################################################### + +### 128/256b FMA PS +add_group("vfma_ps", + cpu=["FMA"], + modifiers=["Op2Add"], vex=128, - vexw=1, + vexw=0, # single precision prefix=0x66, - opcode=[0x0F, 0x3A, 0x00], + opcode=[0x0F, 0x38, 0x00], operands=[Operand(type="SIMDReg", size=128, dest="Spare"), Operand(type="SIMDReg", size=128, dest="VEX"), - Operand(type="SIMDReg", size=128, dest="VEXImmSrc"), Operand(type="SIMDRM", size=128, relaxed=True, dest="EA")]) -add_group("vpermil2_fixed", - cpu=["AVX"], - modifiers=["Op2Add", "Imm8"], - vex=256, - vexw=0, - prefix=0x66, - opcode=[0x0F, 0x3A, 0x00], - operands=[Operand(type="SIMDReg", size=256, dest="Spare"), - Operand(type="SIMDReg", size=256, dest="VEX"), - Operand(type="SIMDRM", size=256, relaxed=True, dest="EA"), - Operand(type="SIMDReg", size=256, dest="VEXImmSrc")]) -add_group("vpermil2_fixed", - cpu=["AVX"], - modifiers=["Op2Add", "Imm8"], +add_group("vfma_ps", + cpu=["FMA"], + modifiers=["Op2Add"], vex=256, - vexw=1, + vexw=0, # single precision prefix=0x66, - opcode=[0x0F, 0x3A, 0x00], + opcode=[0x0F, 0x38, 0x00], operands=[Operand(type="SIMDReg", size=256, dest="Spare"), Operand(type="SIMDReg", size=256, dest="VEX"), - Operand(type="SIMDReg", size=256, dest="VEXImmSrc"), Operand(type="SIMDRM", size=256, relaxed=True, dest="EA")]) -for ib, cc in [(0, "td"), (2, "mo"), (3, "mz")]: - add_insn("vpermil"+cc+"2pd", "vpermil2_fixed", modifiers=[0x49, ib]) - add_insn("vpermil"+cc+"2ps", "vpermil2_fixed", modifiers=[0x48, ib]) - -add_group("vperm2f128", - cpu=["AVX"], +### 128/256b FMA PD(W=1) +add_group("vfma_pd", + cpu=["FMA"], + modifiers=["Op2Add"], + vex=128, + vexw=1, # double precision + prefix=0x66, + opcode=[0x0F, 0x38, 0x00], + operands=[Operand(type="SIMDReg", size=128, dest="Spare"), + Operand(type="SIMDReg", size=128, dest="VEX"), + Operand(type="SIMDRM", size=128, relaxed=True, dest="EA")]) +add_group("vfma_pd", + cpu=["FMA"], + modifiers=["Op2Add"], vex=256, + vexw=1, # double precision prefix=0x66, - opcode=[0x0F, 0x3A, 0x06], + opcode=[0x0F, 0x38, 0x00], operands=[Operand(type="SIMDReg", size=256, dest="Spare"), Operand(type="SIMDReg", size=256, dest="VEX"), - Operand(type="SIMDRM", size=256, relaxed=True, dest="EA"), - Operand(type="Imm", size=8, relaxed=True, dest="Imm")]) - -add_insn("vperm2f128", "vperm2f128") - -##################################################################### -# Intel FMA instructions -##################################################################### + Operand(type="SIMDRM", size=256, relaxed=True, dest="EA")]) -add_group("fma_128_256", +add_group("vfma_ss", cpu=["FMA"], modifiers=["Op2Add"], vex=128, vexw=0, prefix=0x66, - opcode=[0x0F, 0x3A, 0x00], + opcode=[0x0F, 0x38, 0x00], operands=[Operand(type="SIMDReg", size=128, dest="Spare"), - Operand(type="SIMDReg", size=128, dest="VEXImmSrc"), - Operand(type="SIMDRM", size=128, relaxed=True, dest="EA"), - Operand(type="SIMDReg", size=128, dest="VEX")]) -add_group("fma_128_256", + Operand(type="SIMDReg", size=128, dest="VEX"), + Operand(type="SIMDReg", size=128, dest="EA")]) + +add_group("vfma_ss", cpu=["FMA"], modifiers=["Op2Add"], vex=128, - vexw=1, + vexw=0, prefix=0x66, - opcode=[0x0F, 0x3A, 0x00], + opcode=[0x0F, 0x38, 0x00], operands=[Operand(type="SIMDReg", size=128, dest="Spare"), - Operand(type="SIMDReg", size=128, dest="VEXImmSrc"), Operand(type="SIMDReg", size=128, dest="VEX"), - Operand(type="SIMDRM", size=128, relaxed=True, dest="EA")]) -add_group("fma_128_256", + Operand(type="Mem", size=32, relaxed=True, dest="EA")]) + +add_group("vfma_sd", cpu=["FMA"], modifiers=["Op2Add"], - vex=256, - vexw=0, + vex=128, + vexw=1, prefix=0x66, - opcode=[0x0F, 0x3A, 0x00], - operands=[Operand(type="SIMDReg", size=256, dest="Spare"), - Operand(type="SIMDReg", size=256, dest="VEXImmSrc"), - Operand(type="SIMDRM", size=256, relaxed=True, dest="EA"), - Operand(type="SIMDReg", size=256, dest="VEX")]) -add_group("fma_128_256", + opcode=[0x0F, 0x38, 0x00], + operands=[Operand(type="SIMDReg", size=128, dest="Spare"), + Operand(type="SIMDReg", size=128, dest="VEX"), + Operand(type="SIMDReg", size=128, dest="EA")]) + +add_group("vfma_sd", cpu=["FMA"], modifiers=["Op2Add"], - vex=256, + vex=128, vexw=1, prefix=0x66, - opcode=[0x0F, 0x3A, 0x00], - operands=[Operand(type="SIMDReg", size=256, dest="Spare"), - Operand(type="SIMDReg", size=256, dest="VEXImmSrc"), - Operand(type="SIMDReg", size=256, dest="VEX"), - Operand(type="SIMDRM", size=256, relaxed=True, dest="EA")]) - -add_insn("vfmaddpd", "fma_128_256", modifiers=[0x69]) -add_insn("vfmaddps", "fma_128_256", modifiers=[0x68]) -add_insn("vfmaddsubpd", "fma_128_256", modifiers=[0x5D]) -add_insn("vfmaddsubps", "fma_128_256", modifiers=[0x5C]) -add_insn("vfmsubaddpd", "fma_128_256", modifiers=[0x5F]) -add_insn("vfmsubaddps", "fma_128_256", modifiers=[0x5E]) -add_insn("vfmsubpd", "fma_128_256", modifiers=[0x6D]) -add_insn("vfmsubps", "fma_128_256", modifiers=[0x6C]) -add_insn("vfnmaddpd", "fma_128_256", modifiers=[0x79]) -add_insn("vfnmaddps", "fma_128_256", modifiers=[0x78]) -add_insn("vfnmsubpd", "fma_128_256", modifiers=[0x7D]) -add_insn("vfnmsubps", "fma_128_256", modifiers=[0x7C]) - -for sz in [32, 64]: - add_group("fma_128_m%d" % sz, - cpu=["FMA"], - modifiers=["Op2Add"], - vex=128, - vexw=0, - prefix=0x66, - opcode=[0x0F, 0x3A, 0x00], - operands=[Operand(type="SIMDReg", size=128, dest="Spare"), - Operand(type="SIMDReg", size=128, dest="VEXImmSrc"), - Operand(type="SIMDReg", size=128, dest="EA"), - Operand(type="SIMDReg", size=128, dest="VEX")]) - add_group("fma_128_m%d" % sz, - cpu=["FMA"], - modifiers=["Op2Add"], - vex=128, - vexw=0, - prefix=0x66, - opcode=[0x0F, 0x3A, 0x00], - operands=[Operand(type="SIMDReg", size=128, dest="Spare"), - Operand(type="SIMDReg", size=128, dest="VEXImmSrc"), - Operand(type="Mem", size=sz, relaxed=True, dest="EA"), - Operand(type="SIMDReg", size=128, dest="VEX")]) - add_group("fma_128_m%d" % sz, - cpu=["FMA"], - modifiers=["Op2Add"], - vex=128, - vexw=1, - prefix=0x66, - opcode=[0x0F, 0x3A, 0x00], - operands=[Operand(type="SIMDReg", size=128, dest="Spare"), - Operand(type="SIMDReg", size=128, dest="VEXImmSrc"), - Operand(type="SIMDReg", size=128, dest="VEX"), - Operand(type="Mem", size=sz, relaxed=True, dest="EA")]) + opcode=[0x0F, 0x38, 0x00], + operands=[Operand(type="SIMDReg", size=128, dest="Spare"), + Operand(type="SIMDReg", size=128, dest="VEX"), + Operand(type="Mem", size=64, relaxed=True, dest="EA")]) -add_insn("vfmaddsd", "fma_128_m64", modifiers=[0x6B]) -add_insn("vfmaddss", "fma_128_m32", modifiers=[0x6A]) -add_insn("vfmsubsd", "fma_128_m64", modifiers=[0x6F]) -add_insn("vfmsubss", "fma_128_m32", modifiers=[0x6E]) -add_insn("vfnmaddsd", "fma_128_m64", modifiers=[0x7B]) -add_insn("vfnmaddss", "fma_128_m32", modifiers=[0x7A]) -add_insn("vfnmsubsd", "fma_128_m64", modifiers=[0x7F]) -add_insn("vfnmsubss", "fma_128_m32", modifiers=[0x7E]) +for orderval, order in enumerate(["132", "213", "231"]): + ov = orderval << 4 + for combval, comb in enumerate(["ps", "pd", "ss", "sd"]): + cv = combval >> 1 + add_insn("vfmadd"+order+comb, "vfma_"+comb, modifiers=[0x98+ov+cv]) + add_insn("vfmsub"+order+comb, "vfma_"+comb, modifiers=[0x9A+ov+cv]) + add_insn("vfnmsub"+order+comb, "vfma_"+comb, modifiers=[0x9E+ov+cv]) + add_insn("vfnmadd"+order+comb, "vfma_"+comb, modifiers=[0x9C+ov+cv]) + + # no ss/sd for these + for comb in ["ps", "pd"]: + add_insn("vfmaddsub"+order+comb, "vfma_"+comb, modifiers=[0x96+ov]) + add_insn("vfmsubadd"+order+comb, "vfma_"+comb, modifiers=[0x97+ov]) ##################################################################### # Intel AES instructions diff --git a/modules/arch/x86/tests/Makefile.inc b/modules/arch/x86/tests/Makefile.inc index 687fb31a..bbe26ed2 100644 --- a/modules/arch/x86/tests/Makefile.inc +++ b/modules/arch/x86/tests/Makefile.inc @@ -3,6 +3,7 @@ TESTS += modules/arch/x86/tests/x86_test.sh EXTRA_DIST += modules/arch/x86/tests/x86_test.sh +EXTRA_DIST += modules/arch/x86/tests/gen-fma-test.py EXTRA_DIST += modules/arch/x86/tests/addbyte.asm EXTRA_DIST += modules/arch/x86/tests/addbyte.errwarn EXTRA_DIST += modules/arch/x86/tests/addbyte.hex @@ -212,8 +213,6 @@ EXTRA_DIST += modules/arch/x86/tests/vmx.asm EXTRA_DIST += modules/arch/x86/tests/vmx.hex EXTRA_DIST += modules/arch/x86/tests/vmx-err.asm EXTRA_DIST += modules/arch/x86/tests/vmx-err.errwarn -EXTRA_DIST += modules/arch/x86/tests/vpermil2.asm -EXTRA_DIST += modules/arch/x86/tests/vpermil2.hex EXTRA_DIST += modules/arch/x86/tests/x86label.asm EXTRA_DIST += modules/arch/x86/tests/x86label.hex EXTRA_DIST += modules/arch/x86/tests/xchg64.asm diff --git a/modules/arch/x86/tests/avx.asm b/modules/arch/x86/tests/avx.asm index 6461ea05..eff8cc97 100644 --- a/modules/arch/x86/tests/avx.asm +++ b/modules/arch/x86/tests/avx.asm @@ -1432,17 +1432,6 @@ vpermilpd xmm1, dqword [rax], 5 vpermilpd ymm1, [rax], byte 5 vpermilpd ymm1, yword [rax], 5 -vpermil2pd xmm1, xmm2, xmm3, xmm4, 5 -vpermil2pd xmm1, xmm2, [rax], xmm4, 5 -vpermil2pd xmm1, xmm2, dqword [rax], xmm4, 5 -vpermil2pd xmm1, xmm2, xmm3, [rax], 5 -vpermil2pd xmm1, xmm2, xmm3, dqword [rax], 5 -vpermil2pd ymm1, ymm2, ymm3, ymm4, 5 -vpermil2pd ymm1, ymm2, [rax], ymm4, 5 -vpermil2pd ymm1, ymm2, yword [rax], ymm4, 5 -vpermil2pd ymm1, ymm2, ymm3, [rax], 5 -vpermil2pd ymm1, ymm2, ymm3, yword [rax], 5 - vpermilps xmm1, xmm2, xmm3 vpermilps xmm1, xmm2, [rax] vpermilps xmm1, xmm2, dqword [rax] @@ -1454,17 +1443,6 @@ vpermilps xmm1, dqword [rax], 5 vpermilps ymm1, [rax], byte 5 vpermilps ymm1, yword [rax], 5 -vpermil2ps xmm1, xmm2, xmm3, xmm4, 5 -vpermil2ps xmm1, xmm2, [rax], xmm4, 5 -vpermil2ps xmm1, xmm2, dqword [rax], xmm4, 5 -vpermil2ps xmm1, xmm2, xmm3, [rax], 5 -vpermil2ps xmm1, xmm2, xmm3, dqword [rax], 5 -vpermil2ps ymm1, ymm2, ymm3, ymm4, 5 -vpermil2ps ymm1, ymm2, [rax], ymm4, 5 -vpermil2ps ymm1, ymm2, yword [rax], ymm4, 5 -vpermil2ps ymm1, ymm2, ymm3, [rax], 5 -vpermil2ps ymm1, ymm2, ymm3, yword [rax], 5 - vperm2f128 ymm1, ymm2, ymm3, 5 vperm2f128 ymm1, ymm2, [rax], byte 5 vperm2f128 ymm1, ymm2, yword [rax], 5 diff --git a/modules/arch/x86/tests/avx.hex b/modules/arch/x86/tests/avx.hex index c9ada3e1..4bc11def 100644 --- a/modules/arch/x86/tests/avx.hex +++ b/modules/arch/x86/tests/avx.hex @@ -5463,66 +5463,6 @@ e3 08 05 c4 -e3 -69 -49 -cb -45 -c4 -e3 -69 -49 -08 -45 -c4 -e3 -69 -49 -08 -45 -c4 -e3 -e9 -49 -08 -35 -c4 -e3 -e9 -49 -08 -35 -c4 -e3 -6d -49 -cb -45 -c4 -e3 -6d -49 -08 -45 -c4 -e3 -6d -49 -08 -45 -c4 -e3 -ed -49 -08 -35 -c4 -e3 -ed -49 -08 -35 -c4 e2 69 0c @@ -5578,66 +5518,6 @@ e3 05 c4 e3 -69 -48 -cb -45 -c4 -e3 -69 -48 -08 -45 -c4 -e3 -69 -48 -08 -45 -c4 -e3 -e9 -48 -08 -35 -c4 -e3 -e9 -48 -08 -35 -c4 -e3 -6d -48 -cb -45 -c4 -e3 -6d -48 -08 -45 -c4 -e3 -6d -48 -08 -45 -c4 -e3 -ed -48 -08 -35 -c4 -e3 -ed -48 -08 -35 -c4 -e3 6d 06 cb diff --git a/modules/arch/x86/tests/fma.asm b/modules/arch/x86/tests/fma.asm index 25fdc50d..9bfb512b 100644 --- a/modules/arch/x86/tests/fma.asm +++ b/modules/arch/x86/tests/fma.asm @@ -1,109 +1,289 @@ [bits 64] -vfmaddpd xmm0, xmm1, xmm2, xmm3 -vfmaddpd xmm0, xmm1, [rax], xmm3 -vfmaddpd xmm0, xmm1, dqword [rax], xmm3 -vfmaddpd xmm0, xmm1, xmm2, [rax] -vfmaddpd xmm0, xmm1, xmm2, dqword [rax] -vfmaddpd ymm0, ymm1, ymm2, ymm3 -vfmaddpd ymm0, ymm1, [rax], ymm3 -vfmaddpd ymm0, ymm1, yword [rax], ymm3 -vfmaddpd ymm0, ymm1, ymm2, [rax] -vfmaddpd ymm0, ymm1, ymm2, yword [rax] - -vfmaddps xmm0, xmm1, xmm2, xmm3 -vfmaddps xmm0, xmm1, dqword [rax], xmm3 -vfmaddps xmm0, xmm1, xmm2, dqword [rax] -vfmaddps ymm0, ymm1, ymm2, ymm3 -vfmaddps ymm0, ymm1, yword [rax], ymm3 -vfmaddps ymm0, ymm1, ymm2, yword [rax] - -vfmaddsd xmm0, xmm1, xmm2, xmm3 -vfmaddsd xmm0, xmm1, [rax], xmm3 -vfmaddsd xmm0, xmm1, qword [rax], xmm3 -vfmaddsd xmm0, xmm1, xmm2, [rax] -vfmaddsd xmm0, xmm1, xmm2, qword [rax] - -vfmaddss xmm0, xmm1, xmm2, xmm3 -vfmaddss xmm0, xmm1, dword [rax], xmm3 -vfmaddss xmm0, xmm1, xmm2, dword [rax] - -vfmaddsubpd xmm0, xmm1, xmm2, xmm3 -vfmaddsubpd xmm0, xmm1, dqword [rax], xmm3 -vfmaddsubpd xmm0, xmm1, xmm2, dqword [rax] -vfmaddsubpd ymm0, ymm1, ymm2, ymm3 -vfmaddsubpd ymm0, ymm1, yword [rax], ymm3 -vfmaddsubpd ymm0, ymm1, ymm2, yword [rax] - -vfmaddsubps xmm0, xmm1, xmm2, xmm3 -vfmaddsubps xmm0, xmm1, dqword [rax], xmm3 -vfmaddsubps xmm0, xmm1, xmm2, dqword [rax] -vfmaddsubps ymm0, ymm1, ymm2, ymm3 -vfmaddsubps ymm0, ymm1, yword [rax], ymm3 -vfmaddsubps ymm0, ymm1, ymm2, yword [rax] - -vfmsubpd xmm0, xmm1, xmm2, xmm3 -vfmsubpd xmm0, xmm1, dqword [rax], xmm3 -vfmsubpd xmm0, xmm1, xmm2, dqword [rax] -vfmsubpd ymm0, ymm1, ymm2, ymm3 -vfmsubpd ymm0, ymm1, yword [rax], ymm3 -vfmsubpd ymm0, ymm1, ymm2, yword [rax] - -vfmsubps xmm0, xmm1, xmm2, xmm3 -vfmsubps xmm0, xmm1, dqword [rax], xmm3 -vfmsubps xmm0, xmm1, xmm2, dqword [rax] -vfmsubps ymm0, ymm1, ymm2, ymm3 -vfmsubps ymm0, ymm1, yword [rax], ymm3 -vfmsubps ymm0, ymm1, ymm2, yword [rax] - -vfmsubsd xmm0, xmm1, xmm2, xmm3 -vfmsubsd xmm0, xmm1, qword [rax], xmm3 -vfmsubsd xmm0, xmm1, xmm2, qword [rax] - -vfmsubss xmm0, xmm1, xmm2, xmm3 -vfmsubss xmm0, xmm1, dword [rax], xmm3 -vfmsubss xmm0, xmm1, xmm2, dword [rax] - -vfnmaddpd xmm0, xmm1, xmm2, xmm3 -vfnmaddpd xmm0, xmm1, dqword [rax], xmm3 -vfnmaddpd xmm0, xmm1, xmm2, dqword [rax] -vfnmaddpd ymm0, ymm1, ymm2, ymm3 -vfnmaddpd ymm0, ymm1, yword [rax], ymm3 -vfnmaddpd ymm0, ymm1, ymm2, yword [rax] - -vfnmaddps xmm0, xmm1, xmm2, xmm3 -vfnmaddps xmm0, xmm1, dqword [rax], xmm3 -vfnmaddps xmm0, xmm1, xmm2, dqword [rax] -vfnmaddps ymm0, ymm1, ymm2, ymm3 -vfnmaddps ymm0, ymm1, yword [rax], ymm3 -vfnmaddps ymm0, ymm1, ymm2, yword [rax] - -vfnmaddsd xmm0, xmm1, xmm2, xmm3 -vfnmaddsd xmm0, xmm1, qword [rax], xmm3 -vfnmaddsd xmm0, xmm1, xmm2, qword [rax] - -vfnmaddss xmm0, xmm1, xmm2, xmm3 -vfnmaddss xmm0, xmm1, dword [rax], xmm3 -vfnmaddss xmm0, xmm1, xmm2, dword [rax] - -vfnmsubpd xmm0, xmm1, xmm2, xmm3 -vfnmsubpd xmm0, xmm1, dqword [rax], xmm3 -vfnmsubpd xmm0, xmm1, xmm2, dqword [rax] -vfnmsubpd ymm0, ymm1, ymm2, ymm3 -vfnmsubpd ymm0, ymm1, yword [rax], ymm3 -vfnmsubpd ymm0, ymm1, ymm2, yword [rax] - -vfnmsubps xmm0, xmm1, xmm2, xmm3 -vfnmsubps xmm0, xmm1, dqword [rax], xmm3 -vfnmsubps xmm0, xmm1, xmm2, dqword [rax] -vfnmsubps ymm0, ymm1, ymm2, ymm3 -vfnmsubps ymm0, ymm1, yword [rax], ymm3 -vfnmsubps ymm0, ymm1, ymm2, yword [rax] - -vfnmsubsd xmm0, xmm1, xmm2, xmm3 -vfnmsubsd xmm0, xmm1, qword [rax], xmm3 -vfnmsubsd xmm0, xmm1, xmm2, qword [rax] - -vfnmsubss xmm0, xmm1, xmm2, xmm3 -vfnmsubss xmm0, xmm1, dword [rax], xmm3 -vfnmsubss xmm0, xmm1, xmm2, dword [rax] - +vfmadd132ss xmm1, xmm2, xmm3 +vfmadd132ss xmm1, xmm2, dword [rax] +vfmadd132ss xmm1, xmm2, [rax] +vfmadd231ss xmm1, xmm2, xmm3 +vfmadd231ss xmm1, xmm2, dword [rax] +vfmadd231ss xmm1, xmm2, [rax] +vfmadd213ss xmm1, xmm2, xmm3 +vfmadd213ss xmm1, xmm2, dword [rax] +vfmadd213ss xmm1, xmm2, [rax] +vfmadd132sd xmm1, xmm2, xmm3 +vfmadd132sd xmm1, xmm2, qword [rax] +vfmadd132sd xmm1, xmm2, [rax] +vfmadd231sd xmm1, xmm2, xmm3 +vfmadd231sd xmm1, xmm2, qword [rax] +vfmadd231sd xmm1, xmm2, [rax] +vfmadd213sd xmm1, xmm2, xmm3 +vfmadd213sd xmm1, xmm2, qword [rax] +vfmadd213sd xmm1, xmm2, [rax] +vfmadd132ps xmm1, xmm2, xmm3 +vfmadd132ps xmm1, xmm2, xmm3 +vfmadd132ps xmm1, xmm2, [rax] +vfmadd231ps xmm1, xmm2, xmm3 +vfmadd231ps xmm1, xmm2, xmm3 +vfmadd231ps xmm1, xmm2, [rax] +vfmadd213ps xmm1, xmm2, xmm3 +vfmadd213ps xmm1, xmm2, xmm3 +vfmadd213ps xmm1, xmm2, [rax] +vfmadd132ps ymm1, ymm2, ymm3 +vfmadd132ps ymm1, ymm2, yword [rax] +vfmadd132ps ymm1, ymm2, [rax] +vfmadd231ps ymm1, ymm2, ymm3 +vfmadd231ps ymm1, ymm2, yword [rax] +vfmadd231ps ymm1, ymm2, [rax] +vfmadd213ps ymm1, ymm2, ymm3 +vfmadd213ps ymm1, ymm2, yword [rax] +vfmadd213ps ymm1, ymm2, [rax] +vfmadd132pd xmm1, xmm2, xmm3 +vfmadd132pd xmm1, xmm2, dqword [rax] +vfmadd132pd xmm1, xmm2, [rax] +vfmadd231pd xmm1, xmm2, xmm3 +vfmadd231pd xmm1, xmm2, dqword [rax] +vfmadd231pd xmm1, xmm2, [rax] +vfmadd213pd xmm1, xmm2, xmm3 +vfmadd213pd xmm1, xmm2, dqword [rax] +vfmadd213pd xmm1, xmm2, [rax] +vfmadd132pd ymm1, ymm2, ymm3 +vfmadd132pd ymm1, ymm2, yword [rax] +vfmadd132pd ymm1, ymm2, [rax] +vfmadd231pd ymm1, ymm2, ymm3 +vfmadd231pd ymm1, ymm2, yword [rax] +vfmadd231pd ymm1, ymm2, [rax] +vfmadd213pd ymm1, ymm2, ymm3 +vfmadd213pd ymm1, ymm2, yword [rax] +vfmadd213pd ymm1, ymm2, [rax] +vfmsub132ss xmm1, xmm2, xmm3 +vfmsub132ss xmm1, xmm2, dword [rax] +vfmsub132ss xmm1, xmm2, [rax] +vfmsub231ss xmm1, xmm2, xmm3 +vfmsub231ss xmm1, xmm2, dword [rax] +vfmsub231ss xmm1, xmm2, [rax] +vfmsub213ss xmm1, xmm2, xmm3 +vfmsub213ss xmm1, xmm2, dword [rax] +vfmsub213ss xmm1, xmm2, [rax] +vfmsub132sd xmm1, xmm2, xmm3 +vfmsub132sd xmm1, xmm2, qword [rax] +vfmsub132sd xmm1, xmm2, [rax] +vfmsub231sd xmm1, xmm2, xmm3 +vfmsub231sd xmm1, xmm2, qword [rax] +vfmsub231sd xmm1, xmm2, [rax] +vfmsub213sd xmm1, xmm2, xmm3 +vfmsub213sd xmm1, xmm2, qword [rax] +vfmsub213sd xmm1, xmm2, [rax] +vfmsub132ps xmm1, xmm2, xmm3 +vfmsub132ps xmm1, xmm2, xmm3 +vfmsub132ps xmm1, xmm2, [rax] +vfmsub231ps xmm1, xmm2, xmm3 +vfmsub231ps xmm1, xmm2, xmm3 +vfmsub231ps xmm1, xmm2, [rax] +vfmsub213ps xmm1, xmm2, xmm3 +vfmsub213ps xmm1, xmm2, xmm3 +vfmsub213ps xmm1, xmm2, [rax] +vfmsub132ps ymm1, ymm2, ymm3 +vfmsub132ps ymm1, ymm2, yword [rax] +vfmsub132ps ymm1, ymm2, [rax] +vfmsub231ps ymm1, ymm2, ymm3 +vfmsub231ps ymm1, ymm2, yword [rax] +vfmsub231ps ymm1, ymm2, [rax] +vfmsub213ps ymm1, ymm2, ymm3 +vfmsub213ps ymm1, ymm2, yword [rax] +vfmsub213ps ymm1, ymm2, [rax] +vfmsub132pd xmm1, xmm2, xmm3 +vfmsub132pd xmm1, xmm2, dqword [rax] +vfmsub132pd xmm1, xmm2, [rax] +vfmsub231pd xmm1, xmm2, xmm3 +vfmsub231pd xmm1, xmm2, dqword [rax] +vfmsub231pd xmm1, xmm2, [rax] +vfmsub213pd xmm1, xmm2, xmm3 +vfmsub213pd xmm1, xmm2, dqword [rax] +vfmsub213pd xmm1, xmm2, [rax] +vfmsub132pd ymm1, ymm2, ymm3 +vfmsub132pd ymm1, ymm2, yword [rax] +vfmsub132pd ymm1, ymm2, [rax] +vfmsub231pd ymm1, ymm2, ymm3 +vfmsub231pd ymm1, ymm2, yword [rax] +vfmsub231pd ymm1, ymm2, [rax] +vfmsub213pd ymm1, ymm2, ymm3 +vfmsub213pd ymm1, ymm2, yword [rax] +vfmsub213pd ymm1, ymm2, [rax] +vfnmadd132ss xmm1, xmm2, xmm3 +vfnmadd132ss xmm1, xmm2, dword [rax] +vfnmadd132ss xmm1, xmm2, [rax] +vfnmadd231ss xmm1, xmm2, xmm3 +vfnmadd231ss xmm1, xmm2, dword [rax] +vfnmadd231ss xmm1, xmm2, [rax] +vfnmadd213ss xmm1, xmm2, xmm3 +vfnmadd213ss xmm1, xmm2, dword [rax] +vfnmadd213ss xmm1, xmm2, [rax] +vfnmadd132sd xmm1, xmm2, xmm3 +vfnmadd132sd xmm1, xmm2, qword [rax] +vfnmadd132sd xmm1, xmm2, [rax] +vfnmadd231sd xmm1, xmm2, xmm3 +vfnmadd231sd xmm1, xmm2, qword [rax] +vfnmadd231sd xmm1, xmm2, [rax] +vfnmadd213sd xmm1, xmm2, xmm3 +vfnmadd213sd xmm1, xmm2, qword [rax] +vfnmadd213sd xmm1, xmm2, [rax] +vfnmadd132ps xmm1, xmm2, xmm3 +vfnmadd132ps xmm1, xmm2, xmm3 +vfnmadd132ps xmm1, xmm2, [rax] +vfnmadd231ps xmm1, xmm2, xmm3 +vfnmadd231ps xmm1, xmm2, xmm3 +vfnmadd231ps xmm1, xmm2, [rax] +vfnmadd213ps xmm1, xmm2, xmm3 +vfnmadd213ps xmm1, xmm2, xmm3 +vfnmadd213ps xmm1, xmm2, [rax] +vfnmadd132ps ymm1, ymm2, ymm3 +vfnmadd132ps ymm1, ymm2, yword [rax] +vfnmadd132ps ymm1, ymm2, [rax] +vfnmadd231ps ymm1, ymm2, ymm3 +vfnmadd231ps ymm1, ymm2, yword [rax] +vfnmadd231ps ymm1, ymm2, [rax] +vfnmadd213ps ymm1, ymm2, ymm3 +vfnmadd213ps ymm1, ymm2, yword [rax] +vfnmadd213ps ymm1, ymm2, [rax] +vfnmadd132pd xmm1, xmm2, xmm3 +vfnmadd132pd xmm1, xmm2, dqword [rax] +vfnmadd132pd xmm1, xmm2, [rax] +vfnmadd231pd xmm1, xmm2, xmm3 +vfnmadd231pd xmm1, xmm2, dqword [rax] +vfnmadd231pd xmm1, xmm2, [rax] +vfnmadd213pd xmm1, xmm2, xmm3 +vfnmadd213pd xmm1, xmm2, dqword [rax] +vfnmadd213pd xmm1, xmm2, [rax] +vfnmadd132pd ymm1, ymm2, ymm3 +vfnmadd132pd ymm1, ymm2, yword [rax] +vfnmadd132pd ymm1, ymm2, [rax] +vfnmadd231pd ymm1, ymm2, ymm3 +vfnmadd231pd ymm1, ymm2, yword [rax] +vfnmadd231pd ymm1, ymm2, [rax] +vfnmadd213pd ymm1, ymm2, ymm3 +vfnmadd213pd ymm1, ymm2, yword [rax] +vfnmadd213pd ymm1, ymm2, [rax] +vfnmsub132ss xmm1, xmm2, xmm3 +vfnmsub132ss xmm1, xmm2, dword [rax] +vfnmsub132ss xmm1, xmm2, [rax] +vfnmsub231ss xmm1, xmm2, xmm3 +vfnmsub231ss xmm1, xmm2, dword [rax] +vfnmsub231ss xmm1, xmm2, [rax] +vfnmsub213ss xmm1, xmm2, xmm3 +vfnmsub213ss xmm1, xmm2, dword [rax] +vfnmsub213ss xmm1, xmm2, [rax] +vfnmsub132sd xmm1, xmm2, xmm3 +vfnmsub132sd xmm1, xmm2, qword [rax] +vfnmsub132sd xmm1, xmm2, [rax] +vfnmsub231sd xmm1, xmm2, xmm3 +vfnmsub231sd xmm1, xmm2, qword [rax] +vfnmsub231sd xmm1, xmm2, [rax] +vfnmsub213sd xmm1, xmm2, xmm3 +vfnmsub213sd xmm1, xmm2, qword [rax] +vfnmsub213sd xmm1, xmm2, [rax] +vfnmsub132ps xmm1, xmm2, xmm3 +vfnmsub132ps xmm1, xmm2, xmm3 +vfnmsub132ps xmm1, xmm2, [rax] +vfnmsub231ps xmm1, xmm2, xmm3 +vfnmsub231ps xmm1, xmm2, xmm3 +vfnmsub231ps xmm1, xmm2, [rax] +vfnmsub213ps xmm1, xmm2, xmm3 +vfnmsub213ps xmm1, xmm2, xmm3 +vfnmsub213ps xmm1, xmm2, [rax] +vfnmsub132ps ymm1, ymm2, ymm3 +vfnmsub132ps ymm1, ymm2, yword [rax] +vfnmsub132ps ymm1, ymm2, [rax] +vfnmsub231ps ymm1, ymm2, ymm3 +vfnmsub231ps ymm1, ymm2, yword [rax] +vfnmsub231ps ymm1, ymm2, [rax] +vfnmsub213ps ymm1, ymm2, ymm3 +vfnmsub213ps ymm1, ymm2, yword [rax] +vfnmsub213ps ymm1, ymm2, [rax] +vfnmsub132pd xmm1, xmm2, xmm3 +vfnmsub132pd xmm1, xmm2, dqword [rax] +vfnmsub132pd xmm1, xmm2, [rax] +vfnmsub231pd xmm1, xmm2, xmm3 +vfnmsub231pd xmm1, xmm2, dqword [rax] +vfnmsub231pd xmm1, xmm2, [rax] +vfnmsub213pd xmm1, xmm2, xmm3 +vfnmsub213pd xmm1, xmm2, dqword [rax] +vfnmsub213pd xmm1, xmm2, [rax] +vfnmsub132pd ymm1, ymm2, ymm3 +vfnmsub132pd ymm1, ymm2, yword [rax] +vfnmsub132pd ymm1, ymm2, [rax] +vfnmsub231pd ymm1, ymm2, ymm3 +vfnmsub231pd ymm1, ymm2, yword [rax] +vfnmsub231pd ymm1, ymm2, [rax] +vfnmsub213pd ymm1, ymm2, ymm3 +vfnmsub213pd ymm1, ymm2, yword [rax] +vfnmsub213pd ymm1, ymm2, [rax] +vfmaddsub132ps xmm1, xmm2, xmm3 +vfmaddsub132ps xmm1, xmm2, xmm3 +vfmaddsub132ps xmm1, xmm2, [rax] +vfmaddsub231ps xmm1, xmm2, xmm3 +vfmaddsub231ps xmm1, xmm2, xmm3 +vfmaddsub231ps xmm1, xmm2, [rax] +vfmaddsub213ps xmm1, xmm2, xmm3 +vfmaddsub213ps xmm1, xmm2, xmm3 +vfmaddsub213ps xmm1, xmm2, [rax] +vfmaddsub132ps ymm1, ymm2, ymm3 +vfmaddsub132ps ymm1, ymm2, yword [rax] +vfmaddsub132ps ymm1, ymm2, [rax] +vfmaddsub231ps ymm1, ymm2, ymm3 +vfmaddsub231ps ymm1, ymm2, yword [rax] +vfmaddsub231ps ymm1, ymm2, [rax] +vfmaddsub213ps ymm1, ymm2, ymm3 +vfmaddsub213ps ymm1, ymm2, yword [rax] +vfmaddsub213ps ymm1, ymm2, [rax] +vfmaddsub132pd xmm1, xmm2, xmm3 +vfmaddsub132pd xmm1, xmm2, dqword [rax] +vfmaddsub132pd xmm1, xmm2, [rax] +vfmaddsub231pd xmm1, xmm2, xmm3 +vfmaddsub231pd xmm1, xmm2, dqword [rax] +vfmaddsub231pd xmm1, xmm2, [rax] +vfmaddsub213pd xmm1, xmm2, xmm3 +vfmaddsub213pd xmm1, xmm2, dqword [rax] +vfmaddsub213pd xmm1, xmm2, [rax] +vfmaddsub132pd ymm1, ymm2, ymm3 +vfmaddsub132pd ymm1, ymm2, yword [rax] +vfmaddsub132pd ymm1, ymm2, [rax] +vfmaddsub231pd ymm1, ymm2, ymm3 +vfmaddsub231pd ymm1, ymm2, yword [rax] +vfmaddsub231pd ymm1, ymm2, [rax] +vfmaddsub213pd ymm1, ymm2, ymm3 +vfmaddsub213pd ymm1, ymm2, yword [rax] +vfmaddsub213pd ymm1, ymm2, [rax] +vfmsubadd132ps xmm1, xmm2, xmm3 +vfmsubadd132ps xmm1, xmm2, xmm3 +vfmsubadd132ps xmm1, xmm2, [rax] +vfmsubadd231ps xmm1, xmm2, xmm3 +vfmsubadd231ps xmm1, xmm2, xmm3 +vfmsubadd231ps xmm1, xmm2, [rax] +vfmsubadd213ps xmm1, xmm2, xmm3 +vfmsubadd213ps xmm1, xmm2, xmm3 +vfmsubadd213ps xmm1, xmm2, [rax] +vfmsubadd132ps ymm1, ymm2, ymm3 +vfmsubadd132ps ymm1, ymm2, yword [rax] +vfmsubadd132ps ymm1, ymm2, [rax] +vfmsubadd231ps ymm1, ymm2, ymm3 +vfmsubadd231ps ymm1, ymm2, yword [rax] +vfmsubadd231ps ymm1, ymm2, [rax] +vfmsubadd213ps ymm1, ymm2, ymm3 +vfmsubadd213ps ymm1, ymm2, yword [rax] +vfmsubadd213ps ymm1, ymm2, [rax] +vfmsubadd132pd xmm1, xmm2, xmm3 +vfmsubadd132pd xmm1, xmm2, dqword [rax] +vfmsubadd132pd xmm1, xmm2, [rax] +vfmsubadd231pd xmm1, xmm2, xmm3 +vfmsubadd231pd xmm1, xmm2, dqword [rax] +vfmsubadd231pd xmm1, xmm2, [rax] +vfmsubadd213pd xmm1, xmm2, xmm3 +vfmsubadd213pd xmm1, xmm2, dqword [rax] +vfmsubadd213pd xmm1, xmm2, [rax] +vfmsubadd132pd ymm1, ymm2, ymm3 +vfmsubadd132pd ymm1, ymm2, yword [rax] +vfmsubadd132pd ymm1, ymm2, [rax] +vfmsubadd231pd ymm1, ymm2, ymm3 +vfmsubadd231pd ymm1, ymm2, yword [rax] +vfmsubadd231pd ymm1, ymm2, [rax] +vfmsubadd213pd ymm1, ymm2, ymm3 +vfmsubadd213pd ymm1, ymm2, yword [rax] +vfmsubadd213pd ymm1, ymm2, [rax] diff --git a/modules/arch/x86/tests/fma.hex b/modules/arch/x86/tests/fma.hex index 7f51092a..161933f9 100644 --- a/modules/arch/x86/tests/fma.hex +++ b/modules/arch/x86/tests/fma.hex @@ -1,540 +1,1440 @@ c4 -e3 -61 +e2 69 -c2 -10 +99 +cb c4 -e3 -61 +e2 69 -00 -10 +99 +08 c4 -e3 -61 +e2 69 -00 -10 +99 +08 c4 -e3 -e9 +e2 +69 +b9 +cb +c4 +e2 +69 +b9 +08 +c4 +e2 +69 +b9 +08 +c4 +e2 +69 +a9 +cb +c4 +e2 +69 +a9 +08 +c4 +e2 69 -00 -10 +a9 +08 +c4 +e2 +e9 +99 +cb +c4 +e2 +e9 +99 +08 c4 -e3 +e2 e9 +99 +08 +c4 +e2 +e9 +b9 +cb +c4 +e2 +e9 +b9 +08 +c4 +e2 +e9 +b9 +08 +c4 +e2 +e9 +a9 +cb +c4 +e2 +e9 +a9 +08 +c4 +e2 +e9 +a9 +08 +c4 +e2 69 -00 -10 +98 +cb c4 -e3 -65 +e2 69 -c2 -10 +98 +cb c4 -e3 -65 +e2 69 -00 -10 +98 +08 c4 -e3 -65 +e2 69 -00 -10 +b8 +cb c4 -e3 -ed +e2 69 -00 -10 +b8 +cb c4 -e3 -ed +e2 +69 +b8 +08 +c4 +e2 +69 +a8 +cb +c4 +e2 +69 +a8 +cb +c4 +e2 69 -00 -10 +a8 +08 +c4 +e2 +6d +98 +cb +c4 +e2 +6d +98 +08 +c4 +e2 +6d +98 +08 +c4 +e2 +6d +b8 +cb +c4 +e2 +6d +b8 +08 +c4 +e2 +6d +b8 +08 +c4 +e2 +6d +a8 +cb +c4 +e2 +6d +a8 +08 +c4 +e2 +6d +a8 +08 +c4 +e2 +e9 +98 +cb +c4 +e2 +e9 +98 +08 +c4 +e2 +e9 +98 +08 +c4 +e2 +e9 +b8 +cb c4 -e3 -61 -68 -c2 -10 +e2 +e9 +b8 +08 +c4 +e2 +e9 +b8 +08 +c4 +e2 +e9 +a8 +cb c4 -e3 -61 -68 -00 -10 +e2 +e9 +a8 +08 c4 -e3 +e2 e9 -68 -00 -10 +a8 +08 +c4 +e2 +ed +98 +cb c4 -e3 -65 -68 -c2 -10 +e2 +ed +98 +08 +c4 +e2 +ed +98 +08 +c4 +e2 +ed +b8 +cb +c4 +e2 +ed +b8 +08 c4 -e3 -65 -68 -00 -10 +e2 +ed +b8 +08 c4 -e3 +e2 ed -68 -00 -10 +a8 +cb +c4 +e2 +ed +a8 +08 +c4 +e2 +ed +a8 +08 +c4 +e2 +69 +9b +cb +c4 +e2 +69 +9b +08 +c4 +e2 +69 +9b +08 +c4 +e2 +69 +bb +cb +c4 +e2 +69 +bb +08 +c4 +e2 +69 +bb +08 +c4 +e2 +69 +ab +cb c4 -e3 -61 -6b -c2 -10 +e2 +69 +ab +08 c4 -e3 -61 -6b -00 -10 +e2 +69 +ab +08 c4 -e3 -61 -6b -00 -10 +e2 +e9 +9b +cb c4 -e3 +e2 e9 -6b -00 -10 +9b +08 c4 -e3 +e2 e9 -6b -00 -10 +9b +08 c4 -e3 -61 -6a -c2 -10 +e2 +e9 +bb +cb c4 -e3 -61 -6a -00 -10 +e2 +e9 +bb +08 c4 -e3 +e2 e9 -6a -00 -10 +bb +08 c4 -e3 -61 -5d -c2 -10 +e2 +e9 +ab +cb c4 -e3 -61 -5d -00 -10 +e2 +e9 +ab +08 c4 -e3 +e2 e9 -5d -00 -10 +ab +08 +c4 +e2 +69 +9a +cb c4 -e3 -65 -5d -c2 -10 +e2 +69 +9a +cb c4 -e3 -65 -5d -00 -10 +e2 +69 +9a +08 c4 -e3 -ed -5d -00 -10 +e2 +69 +ba +cb +c4 +e2 +69 +ba +cb +c4 +e2 +69 +ba +08 +c4 +e2 +69 +aa +cb +c4 +e2 +69 +aa +cb +c4 +e2 +69 +aa +08 +c4 +e2 +6d +9a +cb +c4 +e2 +6d +9a +08 +c4 +e2 +6d +9a +08 +c4 +e2 +6d +ba +cb +c4 +e2 +6d +ba +08 +c4 +e2 +6d +ba +08 +c4 +e2 +6d +aa +cb +c4 +e2 +6d +aa +08 +c4 +e2 +6d +aa +08 c4 -e3 -61 -5c -c2 -10 +e2 +e9 +9a +cb c4 -e3 -61 -5c -00 -10 +e2 +e9 +9a +08 c4 -e3 +e2 e9 -5c -00 -10 +9a +08 +c4 +e2 +e9 +ba +cb +c4 +e2 +e9 +ba +08 +c4 +e2 +e9 +ba +08 +c4 +e2 +e9 +aa +cb +c4 +e2 +e9 +aa +08 +c4 +e2 +e9 +aa +08 +c4 +e2 +ed +9a +cb +c4 +e2 +ed +9a +08 c4 -e3 -65 -5c -c2 -10 +e2 +ed +9a +08 +c4 +e2 +ed +ba +cb +c4 +e2 +ed +ba +08 +c4 +e2 +ed +ba +08 +c4 +e2 +ed +aa +cb c4 -e3 -65 -5c -00 -10 +e2 +ed +aa +08 c4 -e3 +e2 ed -5c -00 -10 +aa +08 +c4 +e2 +69 +9d +cb +c4 +e2 +69 +9d +08 +c4 +e2 +69 +9d +08 +c4 +e2 +69 +bd +cb +c4 +e2 +69 +bd +08 +c4 +e2 +69 +bd +08 +c4 +e2 +69 +ad +cb +c4 +e2 +69 +ad +08 +c4 +e2 +69 +ad +08 +c4 +e2 +e9 +9d +cb +c4 +e2 +e9 +9d +08 +c4 +e2 +e9 +9d +08 +c4 +e2 +e9 +bd +cb +c4 +e2 +e9 +bd +08 +c4 +e2 +e9 +bd +08 +c4 +e2 +e9 +ad +cb +c4 +e2 +e9 +ad +08 +c4 +e2 +e9 +ad +08 +c4 +e2 +69 +9c +cb +c4 +e2 +69 +9c +cb +c4 +e2 +69 +9c +08 +c4 +e2 +69 +bc +cb +c4 +e2 +69 +bc +cb +c4 +e2 +69 +bc +08 +c4 +e2 +69 +ac +cb +c4 +e2 +69 +ac +cb c4 -e3 -61 +e2 +69 +ac +08 +c4 +e2 +6d +9c +cb +c4 +e2 +6d +9c +08 +c4 +e2 +6d +9c +08 +c4 +e2 +6d +bc +cb +c4 +e2 +6d +bc +08 +c4 +e2 +6d +bc +08 +c4 +e2 +6d +ac +cb +c4 +e2 6d -c2 -10 +ac +08 c4 -e3 -61 +e2 6d -00 -10 +ac +08 c4 -e3 +e2 e9 +9c +cb +c4 +e2 +e9 +9c +08 +c4 +e2 +e9 +9c +08 +c4 +e2 +e9 +bc +cb +c4 +e2 +e9 +bc +08 +c4 +e2 +e9 +bc +08 +c4 +e2 +e9 +ac +cb +c4 +e2 +e9 +ac +08 +c4 +e2 +e9 +ac +08 +c4 +e2 +ed +9c +cb +c4 +e2 +ed +9c +08 +c4 +e2 +ed +9c +08 +c4 +e2 +ed +bc +cb +c4 +e2 +ed +bc +08 +c4 +e2 +ed +bc +08 +c4 +e2 +ed +ac +cb +c4 +e2 +ed +ac +08 +c4 +e2 +ed +ac +08 +c4 +e2 +69 +9f +cb +c4 +e2 +69 +9f +08 +c4 +e2 +69 +9f +08 +c4 +e2 +69 +bf +cb +c4 +e2 +69 +bf +08 +c4 +e2 +69 +bf +08 +c4 +e2 +69 +af +cb +c4 +e2 +69 +af +08 +c4 +e2 +69 +af +08 +c4 +e2 +e9 +9f +cb +c4 +e2 +e9 +9f +08 +c4 +e2 +e9 +9f +08 +c4 +e2 +e9 +bf +cb +c4 +e2 +e9 +bf +08 +c4 +e2 +e9 +bf +08 +c4 +e2 +e9 +af +cb +c4 +e2 +e9 +af +08 +c4 +e2 +e9 +af +08 +c4 +e2 +69 +9e +cb +c4 +e2 +69 +9e +cb +c4 +e2 +69 +9e +08 +c4 +e2 +69 +be +cb +c4 +e2 +69 +be +cb +c4 +e2 +69 +be +08 +c4 +e2 +69 +ae +cb +c4 +e2 +69 +ae +cb +c4 +e2 +69 +ae +08 +c4 +e2 +6d +9e +cb +c4 +e2 +6d +9e +08 +c4 +e2 6d -00 -10 +9e +08 c4 -e3 -65 +e2 6d -c2 -10 +be +cb c4 -e3 -65 +e2 6d -00 -10 +be +08 +c4 +e2 +6d +be +08 +c4 +e2 +6d +ae +cb +c4 +e2 +6d +ae +08 +c4 +e2 +6d +ae +08 +c4 +e2 +e9 +9e +cb +c4 +e2 +e9 +9e +08 +c4 +e2 +e9 +9e +08 +c4 +e2 +e9 +be +cb +c4 +e2 +e9 +be +08 +c4 +e2 +e9 +be +08 +c4 +e2 +e9 +ae +cb +c4 +e2 +e9 +ae +08 +c4 +e2 +e9 +ae +08 +c4 +e2 +ed +9e +cb +c4 +e2 +ed +9e +08 c4 -e3 +e2 ed +9e +08 +c4 +e2 +ed +be +cb +c4 +e2 +ed +be +08 +c4 +e2 +ed +be +08 +c4 +e2 +ed +ae +cb +c4 +e2 +ed +ae +08 +c4 +e2 +ed +ae +08 +c4 +e2 +69 +96 +cb +c4 +e2 +69 +96 +cb +c4 +e2 +69 +96 +08 +c4 +e2 +69 +b6 +cb +c4 +e2 +69 +b6 +cb +c4 +e2 +69 +b6 +08 +c4 +e2 +69 +a6 +cb +c4 +e2 +69 +a6 +cb +c4 +e2 +69 +a6 +08 +c4 +e2 +6d +96 +cb +c4 +e2 +6d +96 +08 +c4 +e2 +6d +96 +08 +c4 +e2 +6d +b6 +cb +c4 +e2 +6d +b6 +08 +c4 +e2 +6d +b6 +08 +c4 +e2 +6d +a6 +cb +c4 +e2 +6d +a6 +08 +c4 +e2 6d -00 -10 +a6 +08 c4 -e3 -61 -6c -c2 -10 +e2 +e9 +96 +cb +c4 +e2 +e9 +96 +08 +c4 +e2 +e9 +96 +08 +c4 +e2 +e9 +b6 +cb +c4 +e2 +e9 +b6 +08 +c4 +e2 +e9 +b6 +08 c4 -e3 -61 -6c -00 -10 +e2 +e9 +a6 +cb c4 -e3 +e2 e9 -6c -00 -10 +a6 +08 c4 -e3 -65 -6c -c2 -10 +e2 +e9 +a6 +08 c4 -e3 -65 -6c -00 -10 +e2 +ed +96 +cb c4 -e3 +e2 ed -6c -00 -10 +96 +08 c4 -e3 -61 -6f -c2 -10 +e2 +ed +96 +08 c4 -e3 -61 -6f -00 -10 +e2 +ed +b6 +cb c4 -e3 +e2 +ed +b6 +08 +c4 +e2 +ed +b6 +08 +c4 +e2 +ed +a6 +cb +c4 +e2 +ed +a6 +08 +c4 +e2 +ed +a6 +08 +c4 +e2 +69 +97 +cb +c4 +e2 +69 +97 +cb +c4 +e2 +69 +97 +08 +c4 +e2 +69 +b7 +cb +c4 +e2 +69 +b7 +cb +c4 +e2 +69 +b7 +08 +c4 +e2 +69 +a7 +cb +c4 +e2 +69 +a7 +cb +c4 +e2 +69 +a7 +08 +c4 +e2 +6d +97 +cb +c4 +e2 +6d +97 +08 +c4 +e2 +6d +97 +08 +c4 +e2 +6d +b7 +cb +c4 +e2 +6d +b7 +08 +c4 +e2 +6d +b7 +08 +c4 +e2 +6d +a7 +cb +c4 +e2 +6d +a7 +08 +c4 +e2 +6d +a7 +08 +c4 +e2 e9 -6f -00 -10 +97 +cb c4 -e3 -61 -6e -c2 -10 +e2 +e9 +97 +08 +c4 +e2 +e9 +97 +08 +c4 +e2 +e9 +b7 +cb +c4 +e2 +e9 +b7 +08 c4 -e3 -61 -6e -00 -10 +e2 +e9 +b7 +08 c4 -e3 +e2 e9 -6e -00 -10 -c4 -e3 -61 -79 -c2 -10 -c4 -e3 -61 -79 -00 -10 -c4 -e3 -e9 -79 -00 -10 -c4 -e3 -65 -79 -c2 -10 -c4 -e3 -65 -79 -00 -10 -c4 -e3 -ed -79 -00 -10 -c4 -e3 -61 -78 -c2 -10 -c4 -e3 -61 -78 -00 -10 -c4 -e3 -e9 -78 -00 -10 -c4 -e3 -65 -78 -c2 -10 -c4 -e3 -65 -78 -00 -10 -c4 -e3 -ed -78 -00 -10 -c4 -e3 -61 -7b -c2 -10 -c4 -e3 -61 -7b -00 -10 -c4 -e3 -e9 -7b -00 -10 -c4 -e3 -61 -7a -c2 -10 -c4 -e3 -61 -7a -00 -10 -c4 -e3 -e9 -7a -00 -10 -c4 -e3 -61 -7d -c2 -10 -c4 -e3 -61 -7d -00 -10 -c4 -e3 -e9 -7d -00 -10 -c4 -e3 -65 -7d -c2 -10 -c4 -e3 -65 -7d -00 -10 -c4 -e3 -ed -7d -00 -10 -c4 -e3 -61 -7c -c2 -10 -c4 -e3 -61 -7c -00 -10 -c4 -e3 -e9 -7c -00 -10 -c4 -e3 -65 -7c -c2 -10 -c4 -e3 -65 -7c -00 -10 -c4 -e3 -ed -7c -00 -10 -c4 -e3 -61 -7f -c2 -10 -c4 -e3 -61 -7f -00 -10 -c4 -e3 -e9 -7f -00 -10 -c4 -e3 -61 -7e -c2 -10 -c4 -e3 -61 -7e -00 -10 -c4 -e3 -e9 -7e -00 -10 +a7 +cb +c4 +e2 +e9 +a7 +08 +c4 +e2 +e9 +a7 +08 +c4 +e2 +ed +97 +cb +c4 +e2 +ed +97 +08 +c4 +e2 +ed +97 +08 +c4 +e2 +ed +b7 +cb +c4 +e2 +ed +b7 +08 +c4 +e2 +ed +b7 +08 +c4 +e2 +ed +a7 +cb +c4 +e2 +ed +a7 +08 +c4 +e2 +ed +a7 +08 diff --git a/modules/arch/x86/tests/vpermil2.asm b/modules/arch/x86/tests/vpermil2.asm deleted file mode 100644 index cc774c1b..00000000 --- a/modules/arch/x86/tests/vpermil2.asm +++ /dev/null @@ -1,10 +0,0 @@ -[bits 64] -vpermiltd2pd xmm1, xmm2, xmm3, xmm4 ; 0 -;vpermiltd2pd xmm1, xmm2, xmm3, xmm4 ; 1 -vpermilmo2pd xmm1, xmm2, xmm3, xmm4 ; 2 -vpermilmz2pd xmm1, xmm2, xmm3, xmm4 ; 3 - -vpermiltd2ps xmm1, xmm2, xmm3, xmm4 ; 0 -;vpermiltd2ps xmm1, xmm2, xmm3, xmm4 ; 1 -vpermilmo2ps xmm1, xmm2, xmm3, xmm4 ; 2 -vpermilmz2ps xmm1, xmm2, xmm3, xmm4 ; 3 diff --git a/modules/arch/x86/tests/vpermil2.hex b/modules/arch/x86/tests/vpermil2.hex deleted file mode 100644 index 29d1af0a..00000000 --- a/modules/arch/x86/tests/vpermil2.hex +++ /dev/null @@ -1,36 +0,0 @@ -c4 -e3 -69 -49 -cb -40 -c4 -e3 -69 -49 -cb -42 -c4 -e3 -69 -49 -cb -43 -c4 -e3 -69 -48 -cb -40 -c4 -e3 -69 -48 -cb -42 -c4 -e3 -69 -48 -cb -43 |