Home | History | Annotate | Download | only in Thumb2
      1 ; RUN: llc < %s -mtriple=thumbv7-linux-gnueabihf %s -o - | FileCheck %s
      2 
      3 ; Check that new water is created by splitting the basic block right after the
      4 ; load instruction. Previously, new water was created before the load
      5 ; instruction, which caused the pass to fail to converge.
      6 
      7 define void @test(i1 %tst) {
      8 ; CHECK-LABEL: test:
      9 ; CHECK: vldr  {{s[0-9]+}}, [[CONST:\.LCPI[0-9]+_[0-9]+]]
     10 ; CHECK-NEXT: b.w [[CONTINUE:\.LBB[0-9]+_[0-9]+]]
     11 
     12 ; CHECK: [[CONST]]:
     13 ; CHECK-NEXT: .long
     14 
     15 ; CHECK: [[CONTINUE]]:
     16 
     17 entry:
     18   call i32 @llvm.arm.space(i32 2000, i32 undef)
     19   br i1 %tst, label %true, label %false
     20 
     21 true:
     22   %val = phi float [12345.0, %entry], [undef, %false]
     23   call void @bar(float %val)
     24   ret void
     25 
     26 false:
     27   br label %true
     28 }
     29 
     30 declare void @bar(float)
     31 declare i32 @llvm.arm.space(i32, i32)
     32