brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 017dc3c Raw
55 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc  -mtriple=x86_64-apple-macosx10.9.0  -mcpu=core2 -mattr=+64bit,+sse2 < %s | FileCheck %s3 4; DAGCombine may choose to rewrite 2 loads feeding a select as a select of5; addresses feeding a load. This test ensures that when it does that it creates6; a load with alignment equivalent to the most restrictive source load.7 8declare void @sink(<2 x double>)9 10define void @test1(i1 %cmp) align 2 {11; CHECK-LABEL: test1:12; CHECK:       ## %bb.0:13; CHECK-NEXT:    subq $40, %rsp14; CHECK-NEXT:    .cfi_def_cfa_offset 4815; CHECK-NEXT:    testb $1, %dil16; CHECK-NEXT:    movq %rsp, %rax17; CHECK-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx18; CHECK-NEXT:    cmovneq %rax, %rcx19; CHECK-NEXT:    movups (%rcx), %xmm020; CHECK-NEXT:    callq _sink21; CHECK-NEXT:    addq $40, %rsp22; CHECK-NEXT:    retq23  %1 = alloca  <2 x double>, align 1624  %2 = alloca  <2 x double>, align 825 26  %val = load <2 x double>, ptr %1, align 1627  %val2 = load <2 x double>, ptr %2, align 828  %val3 = select i1 %cmp, <2 x double> %val, <2 x double> %val229  call void @sink(<2 x double> %val3)30  ret void31}32 33define void @test2(i1 %cmp) align 2 {34; CHECK-LABEL: test2:35; CHECK:       ## %bb.0:36; CHECK-NEXT:    subq $40, %rsp37; CHECK-NEXT:    .cfi_def_cfa_offset 4838; CHECK-NEXT:    testb $1, %dil39; CHECK-NEXT:    movq %rsp, %rax40; CHECK-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx41; CHECK-NEXT:    cmovneq %rax, %rcx42; CHECK-NEXT:    movaps (%rcx), %xmm043; CHECK-NEXT:    callq _sink44; CHECK-NEXT:    addq $40, %rsp45; CHECK-NEXT:    retq46  %1 = alloca  <2 x double>, align 1647  %2 = alloca  <2 x double>, align 848 49  %val = load <2 x double>, ptr %1, align 1650  %val2 = load <2 x double>, ptr %2, align 1651  %val3 = select i1 %cmp, <2 x double> %val, <2 x double> %val252  call void @sink(<2 x double> %val3)53  ret void54}55