50 lines · plain
1; RUN: llc < %s -mcpu=cortex-a8 | FileCheck %s2target triple = "thumbv7-apple-ios"3 4; CHECK: local_split5;6; The load must go into d0-15 which are all clobbered by the asm.7; RAGreedy should split the range and use d16-d31 to avoid a spill.8;9; CHECK: vldr s10; CHECK-NOT: vstr11; CHECK: vadd.f3212; CHECK-NOT: vstr13; CHECK: vorr14; CHECK: vstr s15define void @local_split(ptr nocapture %p) nounwind ssp {16entry:17 %x = load float, ptr %p, align 418 %a = fadd float %x, 1.019 tail call void asm sideeffect "", "~{d0},~{d1},~{d2},~{d3},~{d4},~{d5},~{d6},~{d7},~{d8},~{d9},~{d10},~{d11},~{d12},~{d13},~{d14},~{d15}"() nounwind20 store float %a, ptr %p, align 421 ret void22}23 24; CHECK: global_split25;26; Same thing, but across basic blocks.27;28; CHECK: vldr s29; CHECK-NOT: vstr30; CHECK: vadd.f3231; CHECK-NOT: vstr32; CHECK: vorr33; CHECK: vstr s34define void @global_split(ptr nocapture %p1, ptr nocapture %p2) nounwind ssp {35entry:36 %0 = load float, ptr %p1, align 437 %add = fadd float %0, 1.000000e+0038 tail call void asm sideeffect "", "~{d0},~{d1},~{d2},~{d3},~{d4},~{d5},~{d6},~{d7},~{d8},~{d9},~{d10},~{d11},~{d12},~{d13},~{d14},~{d15}"() nounwind39 %cmp = fcmp ogt float %add, 0.000000e+0040 br i1 %cmp, label %if.then, label %if.end41 42if.then:43 store float %add, ptr %p2, align 444 br label %if.end45 46if.end:47 store float %add, ptr %p1, align 448 ret void49}50