summaryrefslogtreecommitdiff
path: root/test/CodeGen/MIR/ARM/ifcvt_forked_diamond_unanalyzable.mir
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen/MIR/ARM/ifcvt_forked_diamond_unanalyzable.mir')
-rw-r--r--test/CodeGen/MIR/ARM/ifcvt_forked_diamond_unanalyzable.mir48
1 files changed, 48 insertions, 0 deletions
diff --git a/test/CodeGen/MIR/ARM/ifcvt_forked_diamond_unanalyzable.mir b/test/CodeGen/MIR/ARM/ifcvt_forked_diamond_unanalyzable.mir
new file mode 100644
index 00000000000..652c333c523
--- /dev/null
+++ b/test/CodeGen/MIR/ARM/ifcvt_forked_diamond_unanalyzable.mir
@@ -0,0 +1,48 @@
+# RUN: llc -mtriple=arm-apple-ios -run-pass=if-converter %s -o - | FileCheck %s
+---
+name: foo
+body: |
+ bb.0:
+ Bcc %bb.2, 1, %cpsr
+
+ bb.1:
+ successors: %bb.3(0x20000000), %bb.4(0x60000000)
+ %sp = tADDspi %sp, 1, 14, _
+ Bcc %bb.3, 1, %cpsr
+ B %bb.4
+
+ bb.2:
+ successors: %bb.3(0x20000000), %bb.4(0x60000000)
+ %sp = tADDspi %sp, 2, 14, _
+ Bcc %bb.3, 1, %cpsr
+ B %bb.4
+
+ bb.3:
+ successors:
+ %sp = tADDspi %sp, 3, 14, _
+ BX_RET 14, _
+
+ bb.4:
+ successors:
+ %sp = tADDspi %sp, 4, 14, _
+ BX_RET 14, _
+...
+
+# Forked-diamond testcase with unanalyzable instructions in both the True and
+# False BBs following the forked diamond.
+
+# CHECK: body: |
+# CHECK: bb.0:
+# CHECK: successors: %bb.2(0x20000000), %bb.1(0x60000000)
+
+# CHECK: %sp = tADDspi %sp, 2, 1, %cpsr
+# CHECK: %sp = tADDspi %sp, 1, 0, %cpsr, implicit %sp
+# CHECK: Bcc %bb.2, 1, %cpsr
+
+# CHECK: bb.1:
+# CHECK: %sp = tADDspi %sp, 4, 14, _
+# CHECK: BX_RET 14, _
+
+# CHECK: bb.2:
+# CHECK: %sp = tADDspi %sp, 3, 14, _
+# CHECK: BX_RET 14, _