1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -relocation-model=static -mtriple=i686-unknown -mattr=+mmx,+sse3 | FileCheck %s --check-prefix=X86 3; RUN: llc < %s -relocation-model=static -mtriple=x86_64-unknown -mattr=+mmx,+sse3 | FileCheck %s --check-prefix=X64 4 5; 64-bit stores here do not use MMX. 6 7@M1 = external dso_local global <1 x i64> 8@M2 = external dso_local global <2 x i32> 9 10@S1 = external dso_local global <2 x i64> 11@S2 = external dso_local global <4 x i32> 12 13define void @test1() { 14; X86-LABEL: test1: 15; X86: # %bb.0: 16; X86-NEXT: movl $0, M1+4 17; X86-NEXT: movl $0, M1 18; X86-NEXT: xorps %xmm0, %xmm0 19; X86-NEXT: movsd %xmm0, M2 20; X86-NEXT: retl 21; 22; X64-LABEL: test1: 23; X64: # %bb.0: 24; X64-NEXT: movq $0, M1(%rip) 25; X64-NEXT: movq $0, M2(%rip) 26; X64-NEXT: retq 27 store <1 x i64> zeroinitializer, ptr @M1 28 store <2 x i32> zeroinitializer, ptr @M2 29 ret void 30} 31 32define void @test2() { 33; X86-LABEL: test2: 34; X86: # %bb.0: 35; X86-NEXT: movl $-1, M1+4 36; X86-NEXT: movl $-1, M1 37; X86-NEXT: pcmpeqd %xmm0, %xmm0 38; X86-NEXT: movq %xmm0, M2 39; X86-NEXT: retl 40; 41; X64-LABEL: test2: 42; X64: # %bb.0: 43; X64-NEXT: movq $-1, M1(%rip) 44; X64-NEXT: movq $-1, M2(%rip) 45; X64-NEXT: retq 46 store <1 x i64> < i64 -1 >, ptr @M1 47 store <2 x i32> < i32 -1, i32 -1 >, ptr @M2 48 ret void 49} 50 51define void @test3() { 52; X86-LABEL: test3: 53; X86: # %bb.0: 54; X86-NEXT: xorps %xmm0, %xmm0 55; X86-NEXT: movaps %xmm0, S1 56; X86-NEXT: movaps %xmm0, S2 57; X86-NEXT: retl 58; 59; X64-LABEL: test3: 60; X64: # %bb.0: 61; X64-NEXT: xorps %xmm0, %xmm0 62; X64-NEXT: movaps %xmm0, S1(%rip) 63; X64-NEXT: movaps %xmm0, S2(%rip) 64; X64-NEXT: retq 65 store <2 x i64> zeroinitializer, ptr @S1 66 store <4 x i32> zeroinitializer, ptr @S2 67 ret void 68} 69 70define void @test4() { 71; X86-LABEL: test4: 72; X86: # %bb.0: 73; X86-NEXT: pcmpeqd %xmm0, %xmm0 74; X86-NEXT: movdqa %xmm0, S1 75; X86-NEXT: movdqa %xmm0, S2 76; X86-NEXT: retl 77; 78; X64-LABEL: test4: 79; X64: # %bb.0: 80; X64-NEXT: pcmpeqd %xmm0, %xmm0 81; X64-NEXT: movdqa %xmm0, S1(%rip) 82; X64-NEXT: movdqa %xmm0, S2(%rip) 83; X64-NEXT: retq 84 store <2 x i64> < i64 -1, i64 -1>, ptr @S1 85 store <4 x i32> < i32 -1, i32 -1, i32 -1, i32 -1 >, ptr @S2 86 ret void 87} 88