1*f4a2713aSLionel Sambuc; RUN: llc < %s -march=x86 | FileCheck %s 2*f4a2713aSLionel Sambuc; RUN: llc < %s -march=x86 -regalloc=fast -optimize-regalloc=0 | FileCheck %s 3*f4a2713aSLionel Sambuc 4*f4a2713aSLionel Sambuc; %0 must not be put in EAX or EDX. 5*f4a2713aSLionel Sambuc; In the first asm, $0 and $2 must not be put in EAX. 6*f4a2713aSLionel Sambuc; CHECK: InlineAsm Start 7*f4a2713aSLionel Sambuc; CHECK-NOT: movl %eax, %eax 8*f4a2713aSLionel Sambuc; CHECK-NOT: movl (%eax), %eax 9*f4a2713aSLionel Sambuc; CHECK: InlineAsm End 10*f4a2713aSLionel Sambuc; In the second asm, $0 and $2 must not be put in EDX. 11*f4a2713aSLionel Sambuc; CHECK: InlineAsm Start 12*f4a2713aSLionel Sambuc; CHECK-NOT: movl %edx, %edx 13*f4a2713aSLionel Sambuc; CHECK-NOT: movl (%edx), %edx 14*f4a2713aSLionel Sambuc; CHECK: InlineAsm End 15*f4a2713aSLionel Sambuc 16*f4a2713aSLionel Sambuctarget datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128" 17*f4a2713aSLionel Sambuctarget triple = "i386-apple-darwin8" 18*f4a2713aSLionel Sambuc@x = common global i32 0 19*f4a2713aSLionel Sambuc 20*f4a2713aSLionel Sambucdefine i32 @aci(i32* %pw) nounwind { 21*f4a2713aSLionel Sambucentry: 22*f4a2713aSLionel Sambuc %0 = load i32* @x, align 4 23*f4a2713aSLionel Sambuc %asmtmp = tail call { i32, i32 } asm "movl $0, %eax\0A\090:\0A\09test %eax, %eax\0A\09je 1f\0A\09movl %eax, $2\0A\09incl $2\0A\09lock\0A\09cmpxchgl $2, $0\0A\09jne 0b\0A\091:", "=*m,=&{ax},=&r,*m,~{dirflag},~{fpsr},~{flags},~{memory},~{cc}"(i32* %pw, i32* %pw) nounwind 24*f4a2713aSLionel Sambuc %asmtmp2 = tail call { i32, i32 } asm "movl $0, %edx\0A\090:\0A\09test %edx, %edx\0A\09je 1f\0A\09movl %edx, $2\0A\09incl $2\0A\09lock\0A\09cmpxchgl $2, $0\0A\09jne 0b\0A\091:", "=*m,=&{dx},=&r,*m,~{dirflag},~{fpsr},~{flags},~{memory},~{cc}"(i32* %pw, i32* %pw) nounwind 25*f4a2713aSLionel Sambuc %asmresult2 = extractvalue { i32, i32 } %asmtmp, 0 26*f4a2713aSLionel Sambuc %asmresult3 = extractvalue { i32, i32 } %asmtmp2, 0 27*f4a2713aSLionel Sambuc %1 = add i32 %asmresult2, %asmresult3 28*f4a2713aSLionel Sambuc %2 = add i32 %0, %1 29*f4a2713aSLionel Sambuc ret i32 %2 30*f4a2713aSLionel Sambuc} 31