1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=i686 -mattr=+mmx < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; ModuleID = 'tq.c' 3*9880d681SAndroid Build Coastguard Workertarget 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-n8:16:32" 4*9880d681SAndroid Build Coastguard Workertarget triple = "i386-apple-macosx10.6.6" 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker%0 = type { x86_mmx, x86_mmx, x86_mmx, x86_mmx, x86_mmx, x86_mmx, x86_mmx } 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Workerdefine i32 @pixman_fill_mmx(i32* nocapture %bits, i32 %stride, i32 %bpp, i32 %x, i32 %y, i32 %width, i32 %height, i32 %xor) nounwind ssp { 9*9880d681SAndroid Build Coastguard Workerentry: 10*9880d681SAndroid Build Coastguard Worker %conv = zext i32 %xor to i64 11*9880d681SAndroid Build Coastguard Worker %shl = shl nuw i64 %conv, 32 12*9880d681SAndroid Build Coastguard Worker %or = or i64 %shl, %conv 13*9880d681SAndroid Build Coastguard Worker %0 = bitcast i64 %or to x86_mmx 14*9880d681SAndroid Build Coastguard Worker; CHECK: movq [[MMXR:%mm[0-7],]] {{%mm[0-7]}} 15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movq [[MMXR]] {{%mm[0-7]}} 16*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movq [[MMXR]] {{%mm[0-7]}} 17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movq [[MMXR]] {{%mm[0-7]}} 18*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movq [[MMXR]] {{%mm[0-7]}} 19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movq [[MMXR]] {{%mm[0-7]}} 20*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movq [[MMXR]] {{%mm[0-7]}} 21*9880d681SAndroid Build Coastguard Worker %1 = tail call %0 asm "movq\09\09$7,\09$0\0Amovq\09\09$7,\09$1\0Amovq\09\09$7,\09$2\0Amovq\09\09$7,\09$3\0Amovq\09\09$7,\09$4\0Amovq\09\09$7,\09$5\0Amovq\09\09$7,\09$6\0A", "=&y,=&y,=&y,=&y,=&y,=&y,=y,y,~{dirflag},~{fpsr},~{flags}"(x86_mmx %0) nounwind, !srcloc !0 22*9880d681SAndroid Build Coastguard Worker %asmresult = extractvalue %0 %1, 0 23*9880d681SAndroid Build Coastguard Worker %asmresult6 = extractvalue %0 %1, 1 24*9880d681SAndroid Build Coastguard Worker %asmresult7 = extractvalue %0 %1, 2 25*9880d681SAndroid Build Coastguard Worker %asmresult8 = extractvalue %0 %1, 3 26*9880d681SAndroid Build Coastguard Worker %asmresult9 = extractvalue %0 %1, 4 27*9880d681SAndroid Build Coastguard Worker %asmresult10 = extractvalue %0 %1, 5 28*9880d681SAndroid Build Coastguard Worker %asmresult11 = extractvalue %0 %1, 6 29*9880d681SAndroid Build Coastguard Worker; CHECK: movq {{%mm[0-7]}}, 30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movq {{%mm[0-7]}}, 31*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movq {{%mm[0-7]}}, 32*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movq {{%mm[0-7]}}, 33*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movq {{%mm[0-7]}}, 34*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movq {{%mm[0-7]}}, 35*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movq {{%mm[0-7]}}, 36*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movq {{%mm[0-7]}}, 37*9880d681SAndroid Build Coastguard Worker tail call void asm sideeffect "movq\09$1,\09 ($0)\0Amovq\09$2,\09 8($0)\0Amovq\09$3,\0916($0)\0Amovq\09$4,\0924($0)\0Amovq\09$5,\0932($0)\0Amovq\09$6,\0940($0)\0Amovq\09$7,\0948($0)\0Amovq\09$8,\0956($0)\0A", "r,y,y,y,y,y,y,y,y,~{memory},~{dirflag},~{fpsr},~{flags}"(i8* undef, x86_mmx %0, x86_mmx %asmresult, x86_mmx %asmresult6, x86_mmx %asmresult7, x86_mmx %asmresult8, x86_mmx %asmresult9, x86_mmx %asmresult10, x86_mmx %asmresult11) nounwind, !srcloc !1 38*9880d681SAndroid Build Coastguard Worker tail call void @llvm.x86.mmx.emms() nounwind 39*9880d681SAndroid Build Coastguard Worker ret i32 1 40*9880d681SAndroid Build Coastguard Worker} 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.mmx.emms() nounwind 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker!0 = !{i32 888, i32 917, i32 945, i32 973, i32 1001, i32 1029, i32 1057} 45*9880d681SAndroid Build Coastguard Worker!1 = !{i32 1390, i32 1430, i32 1469, i32 1508, i32 1547, i32 1586, i32 1625, i32 1664} 46