52 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=+mmx | FileCheck %s --check-prefix=X86-323; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=+mmx,+sse2 | FileCheck %s --check-prefix=X86-644;5; On Darwin x86-32, v8i8, v4i16, v2i32 values are passed in MM[0-2].6; On Darwin x86-32, v1i64 values are passed in memory. In this example, they7; are never moved into an MM register at all.8; On Darwin x86-64, v8i8, v4i16, v2i32 values are passed in XMM[0-7].9; On Darwin x86-64, v1i64 values are passed in 64-bit GPRs.10 11@u1 = external global <1 x i64>12 13define void @t1(<1 x i64> %v1) nounwind {14; X86-32-LABEL: t1:15; X86-32: ## %bb.0:16; X86-32-NEXT: movl {{[0-9]+}}(%esp), %eax17; X86-32-NEXT: movl {{[0-9]+}}(%esp), %ecx18; X86-32-NEXT: movl L_u1$non_lazy_ptr, %edx19; X86-32-NEXT: movl %ecx, 4(%edx)20; X86-32-NEXT: movl %eax, (%edx)21; X86-32-NEXT: retl22;23; X86-64-LABEL: t1:24; X86-64: ## %bb.0:25; X86-64-NEXT: movq _u1@GOTPCREL(%rip), %rax26; X86-64-NEXT: movq %rdi, (%rax)27; X86-64-NEXT: retq28 store <1 x i64> %v1, ptr @u1, align 829 ret void30}31 32@u2 = external global <1 x i64>33 34define void @t2(<1 x i64> %v1) nounwind {35; X86-32-LABEL: t2:36; X86-32: ## %bb.0:37; X86-32-NEXT: movl {{[0-9]+}}(%esp), %eax38; X86-32-NEXT: movl {{[0-9]+}}(%esp), %ecx39; X86-32-NEXT: movl L_u2$non_lazy_ptr, %edx40; X86-32-NEXT: movl %ecx, 4(%edx)41; X86-32-NEXT: movl %eax, (%edx)42; X86-32-NEXT: retl43;44; X86-64-LABEL: t2:45; X86-64: ## %bb.0:46; X86-64-NEXT: movq _u2@GOTPCREL(%rip), %rax47; X86-64-NEXT: movq %rdi, (%rax)48; X86-64-NEXT: retq49 store <1 x i64> %v1, ptr @u2, align 850 ret void51}52