diff options
| author | Diana Picus <diana.picus@linaro.org> | 2017-07-13 11:09:34 +0000 |
|---|---|---|
| committer | Diana Picus <diana.picus@linaro.org> | 2017-07-13 11:09:34 +0000 |
| commit | c4521756425c46d4aa64f0268502401e2fc83e1f (patch) | |
| tree | 64ac142a961e7681180b8e3cb8d5015660a274cd /llvm/test | |
| parent | 50b2dd336e398a4516a693a4356fa1c942783e9f (diff) | |
| download | bcm5719-llvm-c4521756425c46d4aa64f0268502401e2fc83e1f.tar.gz bcm5719-llvm-c4521756425c46d4aa64f0268502401e2fc83e1f.zip | |
[ARM] GlobalISel: Support G_BR
This boils down to not crashing in reg bank select due to the lack of
register operands on this instruction, and adding some tests. The
instruction selection is already covered by the TableGen'erated code.
llvm-svn: 307904
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/CodeGen/ARM/GlobalISel/arm-instruction-select.mir | 21 | ||||
| -rw-r--r-- | llvm/test/CodeGen/ARM/GlobalISel/arm-isel.ll | 11 | ||||
| -rw-r--r-- | llvm/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir | 20 |
3 files changed, 52 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/ARM/GlobalISel/arm-instruction-select.mir b/llvm/test/CodeGen/ARM/GlobalISel/arm-instruction-select.mir index 6a1da0dfe85..3870b58a7a0 100644 --- a/llvm/test/CodeGen/ARM/GlobalISel/arm-instruction-select.mir +++ b/llvm/test/CodeGen/ARM/GlobalISel/arm-instruction-select.mir @@ -45,6 +45,8 @@ define void @test_select_s32() { ret void } define void @test_select_ptr() { ret void } + define void @test_br() { ret void } + define void @test_soft_fp_double() #0 { ret void } attributes #0 = { "target-features"="+vfp2,-neonfp" } @@ -1173,6 +1175,25 @@ body: | ; CHECK: BX_RET 14, _, implicit %r0 ... --- +name: test_br +# CHECK-LABEL: name: test_br +legalized: true +regBankSelected: true +selected: false +# CHECK: selected: true +body: | + ; CHECK: bb.0 + bb.0: + successors: %bb.1(0x80000000) + + ; CHECK: bb.1 + bb.1: + successors: %bb.1(0x80000000) + + ; CHECK: B %bb.1 + G_BR %bb.1 +... +--- name: test_soft_fp_double # CHECK-LABEL: name: test_soft_fp_double legalized: true diff --git a/llvm/test/CodeGen/ARM/GlobalISel/arm-isel.ll b/llvm/test/CodeGen/ARM/GlobalISel/arm-isel.ll index 4c498ff6ca9..b763b48c474 100644 --- a/llvm/test/CodeGen/ARM/GlobalISel/arm-isel.ll +++ b/llvm/test/CodeGen/ARM/GlobalISel/arm-isel.ll @@ -420,3 +420,14 @@ entry: %r = select i1 %cond, i32* %a, i32* %b ret i32* %r } + +define arm_aapcscc void @test_br() { +; CHECK-LABEL: test_br +; CHECK: [[LABEL:.L[[:alnum:]_]+]]: +; CHECK: b [[LABEL]] +entry: + br label %infinite + +infinite: + br label %infinite +} diff --git a/llvm/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir b/llvm/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir index ffca431d96e..28053ed4596 100644 --- a/llvm/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir +++ b/llvm/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir @@ -40,6 +40,8 @@ define void @test_select_s32() { ret void } + define void @test_br() { ret void } + define void @test_fadd_s32() #0 { ret void } define void @test_fadd_s64() #0 { ret void } @@ -830,6 +832,24 @@ body: | ... --- +name: test_br +# CHECK-LABEL: name: test_br +legalized: true +regBankSelected: false +# CHECK: regBankSelected: true +# There aren't any registers to map, but make sure we don't crash. +selected: false +body: | + bb.0: + successors: %bb.1(0x80000000) + + bb.1: + successors: %bb.1(0x80000000) + + G_BR %bb.1 + +... +--- name: test_fadd_s32 # CHECK-LABEL: name: test_fadd_s32 legalized: true |

