summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorDiana Picus <diana.picus@linaro.org>2017-07-13 11:09:34 +0000
committerDiana Picus <diana.picus@linaro.org>2017-07-13 11:09:34 +0000
commitc4521756425c46d4aa64f0268502401e2fc83e1f (patch)
tree64ac142a961e7681180b8e3cb8d5015660a274cd /llvm/test
parent50b2dd336e398a4516a693a4356fa1c942783e9f (diff)
downloadbcm5719-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.mir21
-rw-r--r--llvm/test/CodeGen/ARM/GlobalISel/arm-isel.ll11
-rw-r--r--llvm/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir20
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
OpenPOWER on IntegriCloud