MCAssembler/Darwin: Add a test (on Darwin) that we assemble a bunch of
authorDaniel Dunbar <daniel@zuster.org>
Tue, 2 Feb 2010 22:00:15 +0000 (22:00 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Tue, 2 Feb 2010 22:00:15 +0000 (22:00 +0000)
instructions exactly like 'as', and produce equivalent .o files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95143 91177308-0d34-0410-b5e6-96231b3b80d8

test/MC/MachO/Darwin/dg.exp [new file with mode: 0644]
test/MC/MachO/Darwin/x86_32_diff_as.s [new file with mode: 0644]
test/lit.cfg

diff --git a/test/MC/MachO/Darwin/dg.exp b/test/MC/MachO/Darwin/dg.exp
new file mode 100644 (file)
index 0000000..0f34b63
--- /dev/null
@@ -0,0 +1,5 @@
+load_lib llvm.exp
+
+if { [llvm_supports_darwin_and_target X86] } {
+  RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{s}]]
+}
diff --git a/test/MC/MachO/Darwin/x86_32_diff_as.s b/test/MC/MachO/Darwin/x86_32_diff_as.s
new file mode 100644 (file)
index 0000000..dd5fb55
--- /dev/null
@@ -0,0 +1,550 @@
+// Validate that we can assemble this file exactly like the platform
+// assembler.
+//
+// RUN: llvm-mc -filetype=obj -triple i386-unknown-unknown -o %t.mc.o %s
+// RUN: as -arch i386 -o %t.as.o %s
+// RUN: diff %t.mc.o %t.as.o
+
+               movb    $0x7f,0xdeadbeef(%ebx,%ecx,8)
+               movw    $0x7ace,0xdeadbeef(%ebx,%ecx,8)
+               movl    $0x7afebabe,0xdeadbeef(%ebx,%ecx,8)
+               movl    $0x13572468,0xdeadbeef(%ebx,%ecx,8)
+               movsbl  0xdeadbeef(%ebx,%ecx,8),%ecx
+               movswl  0xdeadbeef(%ebx,%ecx,8),%ecx
+               movzbl  0xdeadbeef(%ebx,%ecx,8),%ecx
+               movzwl  0xdeadbeef(%ebx,%ecx,8),%ecx
+               pushl   0xdeadbeef(%ebx,%ecx,8)
+               popl    0xdeadbeef(%ebx,%ecx,8)
+               lahf
+               sahf
+               addb    $0xfe,0xdeadbeef(%ebx,%ecx,8)
+               addb    $0x7f,0xdeadbeef(%ebx,%ecx,8)
+               addw    $0x7ace,0xdeadbeef(%ebx,%ecx,8)
+               addl    $0x7afebabe,0xdeadbeef(%ebx,%ecx,8)
+               addl    $0x13572468,0xdeadbeef(%ebx,%ecx,8)
+               incl    0xdeadbeef(%ebx,%ecx,8)
+               subb    $0xfe,0xdeadbeef(%ebx,%ecx,8)
+               subb    $0x7f,0xdeadbeef(%ebx,%ecx,8)
+               subw    $0x7ace,0xdeadbeef(%ebx,%ecx,8)
+               subl    $0x7afebabe,0xdeadbeef(%ebx,%ecx,8)
+               subl    $0x13572468,0xdeadbeef(%ebx,%ecx,8)
+               decl    0xdeadbeef(%ebx,%ecx,8)
+               sbbw    $0x7ace,0xdeadbeef(%ebx,%ecx,8)
+               sbbl    $0x7afebabe,0xdeadbeef(%ebx,%ecx,8)
+               sbbl    $0x13572468,0xdeadbeef(%ebx,%ecx,8)
+               cmpb    $0xfe,0xdeadbeef(%ebx,%ecx,8)
+               cmpb    $0x7f,0xdeadbeef(%ebx,%ecx,8)
+               cmpw    $0x7ace,0xdeadbeef(%ebx,%ecx,8)
+               cmpl    $0x7afebabe,0xdeadbeef(%ebx,%ecx,8)
+               cmpl    $0x13572468,0xdeadbeef(%ebx,%ecx,8)
+               testb   $0x7f,0xdeadbeef(%ebx,%ecx,8)
+               testw   $0x7ace,0xdeadbeef(%ebx,%ecx,8)
+               testl   $0x7afebabe,0xdeadbeef(%ebx,%ecx,8)
+               testl   $0x13572468,0xdeadbeef(%ebx,%ecx,8)
+               andb    $0xfe,0xdeadbeef(%ebx,%ecx,8)
+               andb    $0x7f,0xdeadbeef(%ebx,%ecx,8)
+               andw    $0x7ace,0xdeadbeef(%ebx,%ecx,8)
+               andl    $0x7afebabe,0xdeadbeef(%ebx,%ecx,8)
+               andl    $0x13572468,0xdeadbeef(%ebx,%ecx,8)
+               orb     $0xfe,0xdeadbeef(%ebx,%ecx,8)
+               orb     $0x7f,0xdeadbeef(%ebx,%ecx,8)
+               orw     $0x7ace,0xdeadbeef(%ebx,%ecx,8)
+               orl     $0x7afebabe,0xdeadbeef(%ebx,%ecx,8)
+               orl     $0x13572468,0xdeadbeef(%ebx,%ecx,8)
+               xorb    $0xfe,0xdeadbeef(%ebx,%ecx,8)
+               xorb    $0x7f,0xdeadbeef(%ebx,%ecx,8)
+               xorw    $0x7ace,0xdeadbeef(%ebx,%ecx,8)
+               xorl    $0x7afebabe,0xdeadbeef(%ebx,%ecx,8)
+               xorl    $0x13572468,0xdeadbeef(%ebx,%ecx,8)
+               adcb    $0xfe,0xdeadbeef(%ebx,%ecx,8)
+               adcb    $0x7f,0xdeadbeef(%ebx,%ecx,8)
+               adcw    $0x7ace,0xdeadbeef(%ebx,%ecx,8)
+               adcl    $0x7afebabe,0xdeadbeef(%ebx,%ecx,8)
+               adcl    $0x13572468,0xdeadbeef(%ebx,%ecx,8)
+               negl    0xdeadbeef(%ebx,%ecx,8)
+               notl    0xdeadbeef(%ebx,%ecx,8)
+               cbtw
+               cwtl
+               cwtd
+               cltd
+               mull    0xdeadbeef(%ebx,%ecx,8)
+               imull   0xdeadbeef(%ebx,%ecx,8)
+               divl    0xdeadbeef(%ebx,%ecx,8)
+               idivl   0xdeadbeef(%ebx,%ecx,8)
+               roll    $0,0xdeadbeef(%ebx,%ecx,8)
+               rolb    $0x7f,0xdeadbeef(%ebx,%ecx,8)
+               roll    0xdeadbeef(%ebx,%ecx,8)
+               rorl    $0,0xdeadbeef(%ebx,%ecx,8)
+               rorb    $0x7f,0xdeadbeef(%ebx,%ecx,8)
+               rorl    0xdeadbeef(%ebx,%ecx,8)
+               shll    $0,0xdeadbeef(%ebx,%ecx,8)
+               shlb    $0x7f,0xdeadbeef(%ebx,%ecx,8)
+               shll    0xdeadbeef(%ebx,%ecx,8)
+               shrl    $0,0xdeadbeef(%ebx,%ecx,8)
+               shrb    $0x7f,0xdeadbeef(%ebx,%ecx,8)
+               shrl    0xdeadbeef(%ebx,%ecx,8)
+               sarl    $0,0xdeadbeef(%ebx,%ecx,8)
+               sarb    $0x7f,0xdeadbeef(%ebx,%ecx,8)
+               sarl    0xdeadbeef(%ebx,%ecx,8)
+               call    *%ecx
+               call    *0xdeadbeef(%ebx,%ecx,8)
+               call    *0xdeadbeef(%ebx,%ecx,8)
+               jmp     *0xdeadbeef(%ebx,%ecx,8)
+               jmp     *0xdeadbeef(%ebx,%ecx,8)
+               ljmpl   *0xdeadbeef(%ebx,%ecx,8)
+               lret
+               leave
+               seto    %bl
+               seto    0xdeadbeef(%ebx,%ecx,8)
+               setno   %bl
+               setno   0xdeadbeef(%ebx,%ecx,8)
+               setb    %bl
+               setb    0xdeadbeef(%ebx,%ecx,8)
+               setae   %bl
+               setae   0xdeadbeef(%ebx,%ecx,8)
+               sete    %bl
+               sete    0xdeadbeef(%ebx,%ecx,8)
+               setne   %bl
+               setne   0xdeadbeef(%ebx,%ecx,8)
+               setbe   %bl
+               setbe   0xdeadbeef(%ebx,%ecx,8)
+               seta    %bl
+               seta    0xdeadbeef(%ebx,%ecx,8)
+               sets    %bl
+               sets    0xdeadbeef(%ebx,%ecx,8)
+               setns   %bl
+               setns   0xdeadbeef(%ebx,%ecx,8)
+               setp    %bl
+               setp    0xdeadbeef(%ebx,%ecx,8)
+               setnp   %bl
+               setnp   0xdeadbeef(%ebx,%ecx,8)
+               setl    %bl
+               setl    0xdeadbeef(%ebx,%ecx,8)
+               setge   %bl
+               setge   0xdeadbeef(%ebx,%ecx,8)
+               setle   %bl
+               setle   0xdeadbeef(%ebx,%ecx,8)
+               setg    %bl
+               setg    0xdeadbeef(%ebx,%ecx,8)
+               nopl    0xdeadbeef(%ebx,%ecx,8)
+               nop
+               fldl    0xdeadbeef(%ebx,%ecx,8)
+               fildl   0xdeadbeef(%ebx,%ecx,8)
+               fildll  0xdeadbeef(%ebx,%ecx,8)
+               fldt    0xdeadbeef(%ebx,%ecx,8)
+               fbld    0xdeadbeef(%ebx,%ecx,8)
+               fstl    0xdeadbeef(%ebx,%ecx,8)
+               fistl   0xdeadbeef(%ebx,%ecx,8)
+               fstpl   0xdeadbeef(%ebx,%ecx,8)
+               fistpl  0xdeadbeef(%ebx,%ecx,8)
+               fistpll 0xdeadbeef(%ebx,%ecx,8)
+               fstpt   0xdeadbeef(%ebx,%ecx,8)
+               fbstp   0xdeadbeef(%ebx,%ecx,8)
+               ficoml  0xdeadbeef(%ebx,%ecx,8)
+               ficompl 0xdeadbeef(%ebx,%ecx,8)
+               fucompp
+               ftst
+               fld1
+               fldz
+               faddl   0xdeadbeef(%ebx,%ecx,8)
+               fiaddl  0xdeadbeef(%ebx,%ecx,8)
+               fsubl   0xdeadbeef(%ebx,%ecx,8)
+               fisubl  0xdeadbeef(%ebx,%ecx,8)
+               fsubrl  0xdeadbeef(%ebx,%ecx,8)
+               fisubrl 0xdeadbeef(%ebx,%ecx,8)
+               fmull   0xdeadbeef(%ebx,%ecx,8)
+               fimull  0xdeadbeef(%ebx,%ecx,8)
+               fdivl   0xdeadbeef(%ebx,%ecx,8)
+               fidivl  0xdeadbeef(%ebx,%ecx,8)
+               fdivrl  0xdeadbeef(%ebx,%ecx,8)
+               fidivrl 0xdeadbeef(%ebx,%ecx,8)
+               fsqrt
+               fsin
+               fcos
+               fchs
+               fabs
+               fldcw   0xdeadbeef(%ebx,%ecx,8)
+               fnstcw  0xdeadbeef(%ebx,%ecx,8)
+               rdtsc
+               sysenter
+               sysexit
+               ud2
+               movnti  %ecx,0xdeadbeef(%ebx,%ecx,8)
+               clflush 0xdeadbeef(%ebx,%ecx,8)
+               emms
+               movd    %ecx,%mm3
+               movd    0xdeadbeef(%ebx,%ecx,8),%mm3
+               movd    %ecx,%xmm5
+               movd    0xdeadbeef(%ebx,%ecx,8),%xmm5
+               movd    %xmm5,%ecx
+               movd    %xmm5,0xdeadbeef(%ebx,%ecx,8)
+               movq    0xdeadbeef(%ebx,%ecx,8),%mm3
+               movq    %mm3,%mm3
+               movq    %mm3,%mm3
+               movq    %xmm5,%xmm5
+               movq    %xmm5,%xmm5
+               packssdw        %mm3,%mm3
+               packssdw        %xmm5,%xmm5
+               packsswb        %mm3,%mm3
+               packsswb        %xmm5,%xmm5
+               packuswb        %mm3,%mm3
+               packuswb        %xmm5,%xmm5
+               paddb   %mm3,%mm3
+               paddb   %xmm5,%xmm5
+               paddw   %mm3,%mm3
+               paddw   %xmm5,%xmm5
+               paddd   %mm3,%mm3
+               paddd   %xmm5,%xmm5
+               paddq   %mm3,%mm3
+               paddq   %xmm5,%xmm5
+               paddsb  %mm3,%mm3
+               paddsb  %xmm5,%xmm5
+               paddsw  %mm3,%mm3
+               paddsw  %xmm5,%xmm5
+               paddusb %mm3,%mm3
+               paddusb %xmm5,%xmm5
+               paddusw %mm3,%mm3
+               paddusw %xmm5,%xmm5
+               pand    %mm3,%mm3
+               pand    %xmm5,%xmm5
+               pandn   %mm3,%mm3
+               pandn   %xmm5,%xmm5
+               pcmpeqb %mm3,%mm3
+               pcmpeqb %xmm5,%xmm5
+               pcmpeqw %mm3,%mm3
+               pcmpeqw %xmm5,%xmm5
+               pcmpeqd %mm3,%mm3
+               pcmpeqd %xmm5,%xmm5
+               pcmpgtb %mm3,%mm3
+               pcmpgtb %xmm5,%xmm5
+               pcmpgtw %mm3,%mm3
+               pcmpgtw %xmm5,%xmm5
+               pcmpgtd %mm3,%mm3
+               pcmpgtd %xmm5,%xmm5
+               pmaddwd %mm3,%mm3
+               pmaddwd %xmm5,%xmm5
+               pmulhw  %mm3,%mm3
+               pmulhw  %xmm5,%xmm5
+               pmullw  %mm3,%mm3
+               pmullw  %xmm5,%xmm5
+               por     %mm3,%mm3
+               por     %xmm5,%xmm5
+               psllw   %mm3,%mm3
+               psllw   %xmm5,%xmm5
+               psllw   $0x7f,%mm3
+               psllw   $0x7f,%xmm5
+               pslld   %mm3,%mm3
+               pslld   %xmm5,%xmm5
+               pslld   $0x7f,%mm3
+               pslld   $0x7f,%xmm5
+               psllq   %mm3,%mm3
+               psllq   %xmm5,%xmm5
+               psllq   $0x7f,%mm3
+               psllq   $0x7f,%xmm5
+               psraw   %mm3,%mm3
+               psraw   %xmm5,%xmm5
+               psraw   $0x7f,%mm3
+               psraw   $0x7f,%xmm5
+               psrad   %mm3,%mm3
+               psrad   %xmm5,%xmm5
+               psrad   $0x7f,%mm3
+               psrad   $0x7f,%xmm5
+               psrlw   %mm3,%mm3
+               psrlw   %xmm5,%xmm5
+               psrlw   $0x7f,%mm3
+               psrlw   $0x7f,%xmm5
+               psrld   %mm3,%mm3
+               psrld   %xmm5,%xmm5
+               psrld   $0x7f,%mm3
+               psrld   $0x7f,%xmm5
+               psrlq   %mm3,%mm3
+               psrlq   %xmm5,%xmm5
+               psrlq   $0x7f,%mm3
+               psrlq   $0x7f,%xmm5
+               psubb   %mm3,%mm3
+               psubb   %xmm5,%xmm5
+               psubw   %mm3,%mm3
+               psubw   %xmm5,%xmm5
+               psubd   %mm3,%mm3
+               psubd   %xmm5,%xmm5
+               psubq   %mm3,%mm3
+               psubq   %xmm5,%xmm5
+               psubsb  %mm3,%mm3
+               psubsb  %xmm5,%xmm5
+               psubsw  %mm3,%mm3
+               psubsw  %xmm5,%xmm5
+               psubusb %mm3,%mm3
+               psubusb %xmm5,%xmm5
+               psubusw %mm3,%mm3
+               psubusw %xmm5,%xmm5
+               punpckhbw       %mm3,%mm3
+               punpckhbw       %xmm5,%xmm5
+               punpckhwd       %mm3,%mm3
+               punpckhwd       %xmm5,%xmm5
+               punpckhdq       %mm3,%mm3
+               punpckhdq       %xmm5,%xmm5
+               punpcklbw       %mm3,%mm3
+               punpcklbw       %xmm5,%xmm5
+               punpcklwd       %mm3,%mm3
+               punpcklwd       %xmm5,%xmm5
+               punpckldq       %mm3,%mm3
+               punpckldq       %xmm5,%xmm5
+               pxor    %mm3,%mm3
+               pxor    %xmm5,%xmm5
+               addps   %xmm5,%xmm5
+               addss   %xmm5,%xmm5
+               andnps  %xmm5,%xmm5
+               andps   %xmm5,%xmm5
+               cvtpi2ps        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               cvtpi2ps        %mm3,%xmm5
+               cvtps2pi        0xdeadbeef(%ebx,%ecx,8),%mm3
+               cvtps2pi        %xmm5,%mm3
+               cvtsi2ss        %ecx,%xmm5
+               cvtsi2ss        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               cvttps2pi       0xdeadbeef(%ebx,%ecx,8),%mm3
+               cvttps2pi       %xmm5,%mm3
+               cvttss2si       0xdeadbeef(%ebx,%ecx,8),%ecx
+               cvttss2si       %xmm5,%ecx
+               divps   %xmm5,%xmm5
+               divss   %xmm5,%xmm5
+               ldmxcsr 0xdeadbeef(%ebx,%ecx,8)
+               maskmovq        %mm3,%mm3
+               maxps   %xmm5,%xmm5
+               maxss   %xmm5,%xmm5
+               minps   %xmm5,%xmm5
+               minss   %xmm5,%xmm5
+               movaps  0xdeadbeef(%ebx,%ecx,8),%xmm5
+               movaps  %xmm5,%xmm5
+               movaps  %xmm5,0xdeadbeef(%ebx,%ecx,8)
+               movaps  %xmm5,%xmm5
+               movhlps %xmm5,%xmm5
+               movhps  %xmm5,0xdeadbeef(%ebx,%ecx,8)
+               movlhps %xmm5,%xmm5
+               movlps  %xmm5,0xdeadbeef(%ebx,%ecx,8)
+               movmskps        %xmm5,%ecx
+               movntps %xmm5,0xdeadbeef(%ebx,%ecx,8)
+               movntq  %mm3,0xdeadbeef(%ebx,%ecx,8)
+               movntdq %xmm5,0xdeadbeef(%ebx,%ecx,8)
+               movss   0xdeadbeef(%ebx,%ecx,8),%xmm5
+               movss   %xmm5,%xmm5
+               movss   %xmm5,0xdeadbeef(%ebx,%ecx,8)
+               movss   %xmm5,%xmm5
+               movups  0xdeadbeef(%ebx,%ecx,8),%xmm5
+               movups  %xmm5,%xmm5
+               movups  %xmm5,0xdeadbeef(%ebx,%ecx,8)
+               movups  %xmm5,%xmm5
+               mulps   %xmm5,%xmm5
+               mulss   %xmm5,%xmm5
+               orps    %xmm5,%xmm5
+               pavgb   %mm3,%mm3
+               pavgb   %xmm5,%xmm5
+               pavgw   %mm3,%mm3
+               pavgw   %xmm5,%xmm5
+               pmaxsw  %mm3,%mm3
+               pmaxsw  %xmm5,%xmm5
+               pmaxub  %mm3,%mm3
+               pmaxub  %xmm5,%xmm5
+               pminsw  %mm3,%mm3
+               pminsw  %xmm5,%xmm5
+               pminub  %mm3,%mm3
+               pminub  %xmm5,%xmm5
+               pmovmskb        %mm3,%ecx
+               pmovmskb        %xmm5,%ecx
+               pmulhuw %mm3,%mm3
+               pmulhuw %xmm5,%xmm5
+               prefetchnta     0xdeadbeef(%ebx,%ecx,8)
+               prefetcht0      0xdeadbeef(%ebx,%ecx,8)
+               prefetcht1      0xdeadbeef(%ebx,%ecx,8)
+               prefetcht2      0xdeadbeef(%ebx,%ecx,8)
+               psadbw  %mm3,%mm3
+               psadbw  %xmm5,%xmm5
+               rcpps   0xdeadbeef(%ebx,%ecx,8),%xmm5
+               rcpps   %xmm5,%xmm5
+               rcpss   0xdeadbeef(%ebx,%ecx,8),%xmm5
+               rcpss   %xmm5,%xmm5
+               rsqrtps 0xdeadbeef(%ebx,%ecx,8),%xmm5
+               rsqrtps %xmm5,%xmm5
+               rsqrtss 0xdeadbeef(%ebx,%ecx,8),%xmm5
+               rsqrtss %xmm5,%xmm5
+               sqrtps  0xdeadbeef(%ebx,%ecx,8),%xmm5
+               sqrtps  %xmm5,%xmm5
+               sqrtss  0xdeadbeef(%ebx,%ecx,8),%xmm5
+               sqrtss  %xmm5,%xmm5
+               stmxcsr 0xdeadbeef(%ebx,%ecx,8)
+               subps   %xmm5,%xmm5
+               subss   %xmm5,%xmm5
+               ucomiss 0xdeadbeef(%ebx,%ecx,8),%xmm5
+               ucomiss %xmm5,%xmm5
+               unpckhps        %xmm5,%xmm5
+               unpcklps        %xmm5,%xmm5
+               xorps   %xmm5,%xmm5
+               addpd   %xmm5,%xmm5
+               addsd   %xmm5,%xmm5
+               andnpd  %xmm5,%xmm5
+               andpd   %xmm5,%xmm5
+               comisd  0xdeadbeef(%ebx,%ecx,8),%xmm5
+               comisd  %xmm5,%xmm5
+               cvtpi2pd        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               cvtpi2pd        %mm3,%xmm5
+               cvtsi2sd        %ecx,%xmm5
+               cvtsi2sd        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               divpd   %xmm5,%xmm5
+               divsd   %xmm5,%xmm5
+               maxpd   %xmm5,%xmm5
+               maxsd   %xmm5,%xmm5
+               minpd   %xmm5,%xmm5
+               minsd   %xmm5,%xmm5
+               movapd  0xdeadbeef(%ebx,%ecx,8),%xmm5
+               movapd  %xmm5,%xmm5
+               movapd  %xmm5,0xdeadbeef(%ebx,%ecx,8)
+               movapd  %xmm5,%xmm5
+               movhpd  %xmm5,0xdeadbeef(%ebx,%ecx,8)
+               movlpd  %xmm5,0xdeadbeef(%ebx,%ecx,8)
+               movmskpd        %xmm5,%ecx
+               movntpd %xmm5,0xdeadbeef(%ebx,%ecx,8)
+               movsd   0xdeadbeef(%ebx,%ecx,8),%xmm5
+               movsd   %xmm5,%xmm5
+               movsd   %xmm5,0xdeadbeef(%ebx,%ecx,8)
+               movsd   %xmm5,%xmm5
+               movupd  0xdeadbeef(%ebx,%ecx,8),%xmm5
+               movupd  %xmm5,%xmm5
+               movupd  %xmm5,0xdeadbeef(%ebx,%ecx,8)
+               movupd  %xmm5,%xmm5
+               mulpd   %xmm5,%xmm5
+               mulsd   %xmm5,%xmm5
+               orpd    %xmm5,%xmm5
+               sqrtpd  0xdeadbeef(%ebx,%ecx,8),%xmm5
+               sqrtpd  %xmm5,%xmm5
+               sqrtsd  0xdeadbeef(%ebx,%ecx,8),%xmm5
+               sqrtsd  %xmm5,%xmm5
+               subpd   %xmm5,%xmm5
+               subsd   %xmm5,%xmm5
+               ucomisd 0xdeadbeef(%ebx,%ecx,8),%xmm5
+               ucomisd %xmm5,%xmm5
+               unpckhpd        %xmm5,%xmm5
+               unpcklpd        %xmm5,%xmm5
+               xorpd   %xmm5,%xmm5
+               cvtdq2pd        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               cvtdq2pd        %xmm5,%xmm5
+               cvtpd2dq        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               cvtpd2dq        %xmm5,%xmm5
+               cvtdq2ps        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               cvtdq2ps        %xmm5,%xmm5
+               cvtpd2pi        0xdeadbeef(%ebx,%ecx,8),%mm3
+               cvtpd2pi        %xmm5,%mm3
+               cvtps2dq        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               cvtps2dq        %xmm5,%xmm5
+               cvtsd2ss        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               cvtsd2ss        %xmm5,%xmm5
+               cvtss2sd        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               cvtss2sd        %xmm5,%xmm5
+               cvttpd2pi       0xdeadbeef(%ebx,%ecx,8),%mm3
+               cvttpd2pi       %xmm5,%mm3
+               cvttsd2si       0xdeadbeef(%ebx,%ecx,8),%ecx
+               cvttsd2si       %xmm5,%ecx
+               maskmovdqu      %xmm5,%xmm5
+               movdqa  0xdeadbeef(%ebx,%ecx,8),%xmm5
+               movdqa  %xmm5,%xmm5
+               movdqa  %xmm5,0xdeadbeef(%ebx,%ecx,8)
+               movdqa  %xmm5,%xmm5
+               movdqu  0xdeadbeef(%ebx,%ecx,8),%xmm5
+               movdqu  %xmm5,0xdeadbeef(%ebx,%ecx,8)
+               movdq2q %xmm5,%mm3
+               movq2dq %mm3,%xmm5
+               pmuludq %mm3,%mm3
+               pmuludq %xmm5,%xmm5
+               pslldq  $0x7f,%xmm5
+               psrldq  $0x7f,%xmm5
+               punpckhqdq      %xmm5,%xmm5
+               punpcklqdq      %xmm5,%xmm5
+               addsubpd        %xmm5,%xmm5
+               addsubps        %xmm5,%xmm5
+               haddpd  %xmm5,%xmm5
+               haddps  %xmm5,%xmm5
+               hsubpd  %xmm5,%xmm5
+               hsubps  %xmm5,%xmm5
+               lddqu   0xdeadbeef(%ebx,%ecx,8),%xmm5
+               movddup 0xdeadbeef(%ebx,%ecx,8),%xmm5
+               movddup %xmm5,%xmm5
+               movshdup        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               movshdup        %xmm5,%xmm5
+               movsldup        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               movsldup        %xmm5,%xmm5
+               phaddw  %mm3,%mm3
+               phaddw  %xmm5,%xmm5
+               phaddd  %mm3,%mm3
+               phaddd  %xmm5,%xmm5
+               phaddsw %mm3,%mm3
+               phaddsw %xmm5,%xmm5
+               phsubw  %mm3,%mm3
+               phsubw  %xmm5,%xmm5
+               phsubd  %mm3,%mm3
+               phsubd  %xmm5,%xmm5
+               phsubsw %mm3,%mm3
+               phsubsw %xmm5,%xmm5
+               pmaddubsw       %mm3,%mm3
+               pmaddubsw       %xmm5,%xmm5
+               pmulhrsw        %mm3,%mm3
+               pmulhrsw        %xmm5,%xmm5
+               pshufb  %mm3,%mm3
+               pshufb  %xmm5,%xmm5
+               psignb  %mm3,%mm3
+               psignb  %xmm5,%xmm5
+               psignw  %mm3,%mm3
+               psignw  %xmm5,%xmm5
+               psignd  %mm3,%mm3
+               psignd  %xmm5,%xmm5
+               pabsb   0xdeadbeef(%ebx,%ecx,8),%mm3
+               pabsb   %mm3,%mm3
+               pabsb   0xdeadbeef(%ebx,%ecx,8),%xmm5
+               pabsb   %xmm5,%xmm5
+               pabsw   0xdeadbeef(%ebx,%ecx,8),%mm3
+               pabsw   %mm3,%mm3
+               pabsw   0xdeadbeef(%ebx,%ecx,8),%xmm5
+               pabsw   %xmm5,%xmm5
+               pabsd   0xdeadbeef(%ebx,%ecx,8),%mm3
+               pabsd   %mm3,%mm3
+               pabsd   0xdeadbeef(%ebx,%ecx,8),%xmm5
+               pabsd   %xmm5,%xmm5
+               femms
+               packusdw        %xmm5,%xmm5
+               pcmpeqq %xmm5,%xmm5
+               phminposuw      0xdeadbeef(%ebx,%ecx,8),%xmm5
+               phminposuw      %xmm5,%xmm5
+               pmaxsb  %xmm5,%xmm5
+               pmaxsd  %xmm5,%xmm5
+               pmaxud  %xmm5,%xmm5
+               pmaxuw  %xmm5,%xmm5
+               pminsb  %xmm5,%xmm5
+               pminsd  %xmm5,%xmm5
+               pminud  %xmm5,%xmm5
+               pminuw  %xmm5,%xmm5
+               pmovsxbw        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               pmovsxbw        %xmm5,%xmm5
+               pmovsxbd        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               pmovsxbd        %xmm5,%xmm5
+               pmovsxbq        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               pmovsxbq        %xmm5,%xmm5
+               pmovsxwd        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               pmovsxwd        %xmm5,%xmm5
+               pmovsxwq        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               pmovsxwq        %xmm5,%xmm5
+               pmovsxdq        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               pmovsxdq        %xmm5,%xmm5
+               pmovzxbw        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               pmovzxbw        %xmm5,%xmm5
+               pmovzxbd        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               pmovzxbd        %xmm5,%xmm5
+               pmovzxbq        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               pmovzxbq        %xmm5,%xmm5
+               pmovzxwd        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               pmovzxwd        %xmm5,%xmm5
+               pmovzxwq        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               pmovzxwq        %xmm5,%xmm5
+               pmovzxdq        0xdeadbeef(%ebx,%ecx,8),%xmm5
+               pmovzxdq        %xmm5,%xmm5
+               pmuldq  %xmm5,%xmm5
+               pmulld  %xmm5,%xmm5
+               ptest   0xdeadbeef(%ebx,%ecx,8),%xmm5
+               ptest   %xmm5,%xmm5
+               pcmpgtq %xmm5,%xmm5
index 8e85168205cf3c24876995c2fb50db727e87ec28..3b45bf9bd3b50013b345c72e5a2761056536a674 100644 (file)
@@ -127,6 +127,9 @@ targets = set(site_exp["TARGETS_TO_BUILD"].split())
 def llvm_supports_target(name):
     return name in targets
 
+def llvm_supports_darwin_and_target(name):
+    return 'darwin' in config.target_triple and llvm_supports_target(name)
+
 langs = set(site_exp['llvmgcc_langs'].split(','))
 def llvm_gcc_supports(name):
     return name in langs