2008-04-23 H.J. Lu <hongjiu.lu@intel.com>

* gas/i386/i386.exp: Run sse-noavx and x86-64-sse-noavx.

	* gas/i386/sse-noavx.d: New.
	* gas/i386/sse-noavx.s: Likewise.
	* gas/i386/x86-64-sse-noavx.d: Likewise.
	* gas/i386/x86-64-sse-noavx.s: Likewise.
This commit is contained in:
H.J. Lu 2008-04-23 16:01:10 +00:00
parent 084076b886
commit 9ba52a267b
6 changed files with 229 additions and 0 deletions

View File

@ -1,3 +1,12 @@
2008-04-23 H.J. Lu <hongjiu.lu@intel.com>
* gas/i386/i386.exp: Run sse-noavx and x86-64-sse-noavx.
* gas/i386/sse-noavx.d: New.
* gas/i386/sse-noavx.s: Likewise.
* gas/i386/x86-64-sse-noavx.d: Likewise.
* gas/i386/x86-64-sse-noavx.s: Likewise.
2008-04-23 H.J. Lu <hongjiu.lu@intel.com>
* gas/i386/sse2.s: Add tests for pmuludq, paddq and psubq.

View File

@ -127,6 +127,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]]
run_dump_test "sse-check"
run_dump_test "sse-check-warn"
run_list_test "sse-check-error" "-msse-check=error -I${srcdir}/$subdir -al"
run_dump_test "sse-noavx"
# These tests require support for 8 and 16 bit relocs,
# so we only run them for ELF and COFF targets.
@ -256,6 +257,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t
run_dump_test "x86-64-sse-check"
run_dump_test "x86-64-sse-check-warn"
run_list_test "x86-64-sse-check-error" "-msse-check=error -I${srcdir}/$subdir -al"
run_dump_test "x86-64-sse-noavx"
if { ![istarget "*-*-aix*"]
&& ![istarget "*-*-beos*"]

View File

@ -0,0 +1,57 @@
#as: -msse-check=error
#objdump: -dw
#name: i386 SSE without AVX equivalent
.*: file format .*
Disassembly of section .text:
0+ <_start>:
[ ]*[a-f0-9]+: f2 0f 38 f0 d9 crc32b %cl,%ebx
[ ]*[a-f0-9]+: 0f 2a d3 cvtpi2ps %mm3,%xmm2
[ ]*[a-f0-9]+: 0f 2d f7 cvtps2pi %xmm7,%mm6
[ ]*[a-f0-9]+: 0f 2c dc cvttps2pi %xmm4,%mm3
[ ]*[a-f0-9]+: df 08 fisttp \(%eax\)
[ ]*[a-f0-9]+: dd 08 fisttpll \(%eax\)
[ ]*[a-f0-9]+: 0f f7 c7 maskmovq %mm7,%mm0
[ ]*[a-f0-9]+: 0f 01 c8 monitor %eax,%ecx,%edx
[ ]*[a-f0-9]+: 0f e7 10 movntq %mm2,\(%eax\)
[ ]*[a-f0-9]+: 0f 01 c9 mwait %eax,%ecx
[ ]*[a-f0-9]+: 0f 38 1c c1 pabsb %mm1,%mm0
[ ]*[a-f0-9]+: 0f 38 1e c1 pabsd %mm1,%mm0
[ ]*[a-f0-9]+: 0f 38 1d c1 pabsw %mm1,%mm0
[ ]*[a-f0-9]+: 0f d4 c1 paddq %mm1,%mm0
[ ]*[a-f0-9]+: 0f 3a 0f c1 02 palignr \$0x2,%mm1,%mm0
[ ]*[a-f0-9]+: 0f e0 c1 pavgb %mm1,%mm0
[ ]*[a-f0-9]+: 0f e3 d3 pavgw %mm3,%mm2
[ ]*[a-f0-9]+: 0f c5 c1 00 pextrw \$0x0,%mm1,%eax
[ ]*[a-f0-9]+: 0f 38 02 c1 phaddd %mm1,%mm0
[ ]*[a-f0-9]+: 0f 38 03 c1 phaddsw %mm1,%mm0
[ ]*[a-f0-9]+: 0f 38 01 c1 phaddw %mm1,%mm0
[ ]*[a-f0-9]+: 0f 38 06 c1 phsubd %mm1,%mm0
[ ]*[a-f0-9]+: 0f 38 07 c1 phsubsw %mm1,%mm0
[ ]*[a-f0-9]+: 0f 38 05 c1 phsubw %mm1,%mm0
[ ]*[a-f0-9]+: 0f c4 d2 02 pinsrw \$0x2,%edx,%mm2
[ ]*[a-f0-9]+: 0f 38 04 c1 pmaddubsw %mm1,%mm0
[ ]*[a-f0-9]+: 0f ee c1 pmaxsw %mm1,%mm0
[ ]*[a-f0-9]+: 0f de d2 pmaxub %mm2,%mm2
[ ]*[a-f0-9]+: 0f ea e5 pminsw %mm5,%mm4
[ ]*[a-f0-9]+: 0f da f7 pminub %mm7,%mm6
[ ]*[a-f0-9]+: 0f d7 c5 pmovmskb %mm5,%eax
[ ]*[a-f0-9]+: 0f 38 0b c1 pmulhrsw %mm1,%mm0
[ ]*[a-f0-9]+: 0f e4 e5 pmulhuw %mm5,%mm4
[ ]*[a-f0-9]+: 0f f4 c8 pmuludq %mm0,%mm1
[ ]*[a-f0-9]+: f3 0f b8 cb popcnt %ebx,%ecx
[ ]*[a-f0-9]+: 0f 18 00 prefetchnta \(%eax\)
[ ]*[a-f0-9]+: 0f 18 08 prefetcht0 \(%eax\)
[ ]*[a-f0-9]+: 0f 18 10 prefetcht1 \(%eax\)
[ ]*[a-f0-9]+: 0f 18 18 prefetcht2 \(%eax\)
[ ]*[a-f0-9]+: 0f f6 f7 psadbw %mm7,%mm6
[ ]*[a-f0-9]+: 0f 38 00 c1 pshufb %mm1,%mm0
[ ]*[a-f0-9]+: 0f 70 da 01 pshufw \$0x1,%mm2,%mm3
[ ]*[a-f0-9]+: 0f 38 08 c1 psignb %mm1,%mm0
[ ]*[a-f0-9]+: 0f 38 0a c1 psignd %mm1,%mm0
[ ]*[a-f0-9]+: 0f 38 09 c1 psignw %mm1,%mm0
[ ]*[a-f0-9]+: 0f fb c1 psubq %mm1,%mm0
[ ]*[a-f0-9]+: 0f ae f8 sfence
#pass

View File

@ -0,0 +1,51 @@
# Check SSE instructions without AVX equivalent
.text
_start:
crc32 %cl,%ebx
cvtpi2ps %mm3,%xmm2
cvtps2pi %xmm7,%mm6
cvttps2pi %xmm4,%mm3
fisttp (%eax)
fisttpll (%eax)
maskmovq %mm7,%mm0
monitor
movntq %mm2,(%eax)
mwait
pabsb %mm1,%mm0
pabsd %mm1,%mm0
pabsw %mm1,%mm0
paddq %mm1,%mm0
palignr $0x2,%mm1,%mm0
pavgb %mm1,%mm0
pavgw %mm3,%mm2
pextrw $0x0,%mm1,%eax
phaddd %mm1,%mm0
phaddsw %mm1,%mm0
phaddw %mm1,%mm0
phsubd %mm1,%mm0
phsubsw %mm1,%mm0
phsubw %mm1,%mm0
pinsrw $0x2,%edx,%mm2
pmaddubsw %mm1,%mm0
pmaxsw %mm1,%mm0
pmaxub %mm2,%mm2
pminsw %mm5,%mm4
pminub %mm7,%mm6
pmovmskb %mm5,%eax
pmulhrsw %mm1,%mm0
pmulhuw %mm5,%mm4
pmuludq %mm0, %mm1
popcnt %ebx,%ecx
prefetchnta (%eax)
prefetcht0 (%eax)
prefetcht1 (%eax)
prefetcht2 (%eax)
psadbw %mm7,%mm6
pshufb %mm1,%mm0
pshufw $0x1,%mm2,%mm3
psignb %mm1,%mm0
psignd %mm1,%mm0
psignw %mm1,%mm0
psubq %mm1,%mm0
sfence

View File

@ -0,0 +1,58 @@
#as: -msse-check=error
#objdump: -dw
#name: x86-64 SSE without AVX equivalent
.*: file format .*
Disassembly of section .text:
0+ <_start>:
[ ]*[a-f0-9]+: 48 0f c7 08 cmpxchg16b \(%rax\)
[ ]*[a-f0-9]+: f2 0f 38 f0 d9 crc32b %cl,%ebx
[ ]*[a-f0-9]+: 0f 2a d3 cvtpi2ps %mm3,%xmm2
[ ]*[a-f0-9]+: 0f 2d f7 cvtps2pi %xmm7,%mm6
[ ]*[a-f0-9]+: 0f 2c dc cvttps2pi %xmm4,%mm3
[ ]*[a-f0-9]+: df 08 fisttp \(%rax\)
[ ]*[a-f0-9]+: dd 08 fisttpll \(%rax\)
[ ]*[a-f0-9]+: 0f f7 c7 maskmovq %mm7,%mm0
[ ]*[a-f0-9]+: 0f 01 c8 monitor %rax,%rcx,%rdx
[ ]*[a-f0-9]+: 0f e7 10 movntq %mm2,\(%rax\)
[ ]*[a-f0-9]+: 0f 01 c9 mwait %rax,%rcx
[ ]*[a-f0-9]+: 0f 38 1c c1 pabsb %mm1,%mm0
[ ]*[a-f0-9]+: 0f 38 1e c1 pabsd %mm1,%mm0
[ ]*[a-f0-9]+: 0f 38 1d c1 pabsw %mm1,%mm0
[ ]*[a-f0-9]+: 0f d4 c1 paddq %mm1,%mm0
[ ]*[a-f0-9]+: 0f 3a 0f c1 02 palignr \$0x2,%mm1,%mm0
[ ]*[a-f0-9]+: 0f e0 c1 pavgb %mm1,%mm0
[ ]*[a-f0-9]+: 0f e3 d3 pavgw %mm3,%mm2
[ ]*[a-f0-9]+: 0f c5 c1 00 pextrw \$0x0,%mm1,%eax
[ ]*[a-f0-9]+: 0f 38 02 c1 phaddd %mm1,%mm0
[ ]*[a-f0-9]+: 0f 38 03 c1 phaddsw %mm1,%mm0
[ ]*[a-f0-9]+: 0f 38 01 c1 phaddw %mm1,%mm0
[ ]*[a-f0-9]+: 0f 38 06 c1 phsubd %mm1,%mm0
[ ]*[a-f0-9]+: 0f 38 07 c1 phsubsw %mm1,%mm0
[ ]*[a-f0-9]+: 0f 38 05 c1 phsubw %mm1,%mm0
[ ]*[a-f0-9]+: 0f c4 d2 02 pinsrw \$0x2,%edx,%mm2
[ ]*[a-f0-9]+: 0f 38 04 c1 pmaddubsw %mm1,%mm0
[ ]*[a-f0-9]+: 0f ee c1 pmaxsw %mm1,%mm0
[ ]*[a-f0-9]+: 0f de d2 pmaxub %mm2,%mm2
[ ]*[a-f0-9]+: 0f ea e5 pminsw %mm5,%mm4
[ ]*[a-f0-9]+: 0f da f7 pminub %mm7,%mm6
[ ]*[a-f0-9]+: 0f d7 c5 pmovmskb %mm5,%eax
[ ]*[a-f0-9]+: 0f 38 0b c1 pmulhrsw %mm1,%mm0
[ ]*[a-f0-9]+: 0f e4 e5 pmulhuw %mm5,%mm4
[ ]*[a-f0-9]+: 0f f4 c8 pmuludq %mm0,%mm1
[ ]*[a-f0-9]+: f3 0f b8 cb popcnt %ebx,%ecx
[ ]*[a-f0-9]+: 0f 18 00 prefetchnta \(%rax\)
[ ]*[a-f0-9]+: 0f 18 08 prefetcht0 \(%rax\)
[ ]*[a-f0-9]+: 0f 18 10 prefetcht1 \(%rax\)
[ ]*[a-f0-9]+: 0f 18 18 prefetcht2 \(%rax\)
[ ]*[a-f0-9]+: 0f f6 f7 psadbw %mm7,%mm6
[ ]*[a-f0-9]+: 0f 38 00 c1 pshufb %mm1,%mm0
[ ]*[a-f0-9]+: 0f 70 da 01 pshufw \$0x1,%mm2,%mm3
[ ]*[a-f0-9]+: 0f 38 08 c1 psignb %mm1,%mm0
[ ]*[a-f0-9]+: 0f 38 0a c1 psignd %mm1,%mm0
[ ]*[a-f0-9]+: 0f 38 09 c1 psignw %mm1,%mm0
[ ]*[a-f0-9]+: 0f fb c1 psubq %mm1,%mm0
[ ]*[a-f0-9]+: 0f ae f8 sfence
#pass

View File

@ -0,0 +1,52 @@
# Check 64bit SSE instructions without AVX equivalent
.text
_start:
cmpxchg16b (%rax)
crc32 %cl,%ebx
cvtpi2ps %mm3,%xmm2
cvtps2pi %xmm7,%mm6
cvttps2pi %xmm4,%mm3
fisttp (%rax)
fisttpll (%rax)
maskmovq %mm7,%mm0
monitor
movntq %mm2,(%rax)
mwait
pabsb %mm1,%mm0
pabsd %mm1,%mm0
pabsw %mm1,%mm0
paddq %mm1,%mm0
palignr $0x2,%mm1,%mm0
pavgb %mm1,%mm0
pavgw %mm3,%mm2
pextrw $0x0,%mm1,%eax
phaddd %mm1,%mm0
phaddsw %mm1,%mm0
phaddw %mm1,%mm0
phsubd %mm1,%mm0
phsubsw %mm1,%mm0
phsubw %mm1,%mm0
pinsrw $0x2,%edx,%mm2
pmaddubsw %mm1,%mm0
pmaxsw %mm1,%mm0
pmaxub %mm2,%mm2
pminsw %mm5,%mm4
pminub %mm7,%mm6
pmovmskb %mm5,%eax
pmulhrsw %mm1,%mm0
pmulhuw %mm5,%mm4
pmuludq %mm0, %mm1
popcnt %ebx,%ecx
prefetchnta (%rax)
prefetcht0 (%rax)
prefetcht1 (%rax)
prefetcht2 (%rax)
psadbw %mm7,%mm6
pshufb %mm1,%mm0
pshufw $0x1,%mm2,%mm3
psignb %mm1,%mm0
psignd %mm1,%mm0
psignw %mm1,%mm0
psubq %mm1,%mm0
sfence