60 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-pc-win32 -mcpu=corei7 | FileCheck %s --check-prefix=X863; RUN: llc < %s -mtriple=x86_64-pc-win32 -mcpu=corei7 | FileCheck %s --check-prefix=X644 5define void @load_store(ptr %in) {6; X86-LABEL: load_store:7; X86: # %bb.0: # %entry8; X86-NEXT: movl {{[0-9]+}}(%esp), %eax9; X86-NEXT: movq {{.*#+}} xmm0 = mem[0],zero10; X86-NEXT: paddw %xmm0, %xmm011; X86-NEXT: movq %xmm0, (%eax)12; X86-NEXT: retl13;14; X64-LABEL: load_store:15; X64: # %bb.0: # %entry16; X64-NEXT: movq {{.*#+}} xmm0 = mem[0],zero17; X64-NEXT: paddw %xmm0, %xmm018; X64-NEXT: movq %xmm0, (%rcx)19; X64-NEXT: retq20entry:21 %A27 = load <4 x i16>, ptr %in, align 422 %A28 = add <4 x i16> %A27, %A2723 store <4 x i16> %A28, ptr %in, align 424 ret void25}26 27; Make sure that we store a 64bit value, even on 32bit systems.28define void @store_64(ptr %ptr) {29; X86-LABEL: store_64:30; X86: # %bb.0: # %BB31; X86-NEXT: movl {{[0-9]+}}(%esp), %eax32; X86-NEXT: xorps %xmm0, %xmm033; X86-NEXT: movsd %xmm0, (%eax)34; X86-NEXT: retl35;36; X64-LABEL: store_64:37; X64: # %bb.0: # %BB38; X64-NEXT: movq $0, (%rcx)39; X64-NEXT: retq40BB:41 store <2 x i32> zeroinitializer, ptr %ptr42 ret void43}44 45define <2 x i32> @load_64(ptr %ptr) {46; X86-LABEL: load_64:47; X86: # %bb.0: # %BB48; X86-NEXT: movl {{[0-9]+}}(%esp), %eax49; X86-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero50; X86-NEXT: retl51;52; X64-LABEL: load_64:53; X64: # %bb.0: # %BB54; X64-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero55; X64-NEXT: retq56BB:57 %t = load <2 x i32>, ptr %ptr58 ret <2 x i32> %t59}60