[llvm] 7b8de9f - [ARM] Add IT block generation test
Nicholas Guy via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 29 08:17:38 PDT 2020
Author: Nicholas Guy
Date: 2020-10-29T15:17:31Z
New Revision: 7b8de9fc6bce01daed49d3f6a8bd71a25e8c717f
URL: https://github.com/llvm/llvm-project/commit/7b8de9fc6bce01daed49d3f6a8bd71a25e8c717f
DIFF: https://github.com/llvm/llvm-project/commit/7b8de9fc6bce01daed49d3f6a8bd71a25e8c717f.diff
LOG: [ARM] Add IT block generation test
D88496 introduces some new behaviour to IT block generation,
behaviour which is not covered by the current unit tests.
This adds one to cover it
Differential Revision: https://reviews.llvm.org/D90398
Added:
llvm/test/CodeGen/Thumb2/ifcvt-dead-predicate.mir
Modified:
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/Thumb2/ifcvt-dead-predicate.mir b/llvm/test/CodeGen/Thumb2/ifcvt-dead-predicate.mir
new file mode 100644
index 000000000000..0138f0a509fe
--- /dev/null
+++ b/llvm/test/CodeGen/Thumb2/ifcvt-dead-predicate.mir
@@ -0,0 +1,80 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
+# RUN: llc -o - %s -run-pass=if-converter -simplify-mir | FileCheck %s
+
+--- |
+ ; ModuleID = 'ifcvt-dead-predicate.ll'
+ source_filename = "ifcvt-dead-predicate.ll"
+ target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
+ target triple = "thumbv7-unknown-linux-android16"
+
+ ; Function Attrs: minsize nounwind optsize ssp uwtable
+ define hidden zeroext i1 @branch_entry(i32* %command_set, i8* %requested_filename, i8** %filename_to_use) local_unnamed_addr #0 {
+ entry:
+ %0 = load i32, i32* %command_set, align 4
+ %and.i.i = and i32 %0, 128
+ %tobool.i.i.not = icmp eq i32 %and.i.i, 0
+ br i1 %tobool.i.i.not, label %land.end, label %land.rhs
+
+ land.rhs: ; preds = %entry
+ %call1 = tail call zeroext i1 @branch_target(i8* %requested_filename, i8** %filename_to_use)
+ ret i1 %call1
+
+ land.end: ; preds = %entry
+ ret i1 false
+ }
+
+ ; Function Attrs: minsize optsize
+ declare zeroext i1 @branch_target(i8*, i8**) local_unnamed_addr #1
+
+ attributes #0 = { minsize nounwind optsize ssp uwtable }
+ attributes #1 = { minsize optsize }
+
+...
+---
+name: branch_entry
+alignment: 2
+tracksRegLiveness: true
+liveins:
+ - { reg: '$r0' }
+ - { reg: '$r1' }
+ - { reg: '$r2' }
+frameInfo:
+ maxAlignment: 1
+ maxCallFrameSize: 0
+machineFunctionInfo: {}
+body: |
+ ; CHECK-LABEL: name: branch_entry
+ ; CHECK: bb.0.entry:
+ ; CHECK: successors: %bb.1, %bb.2
+ ; CHECK: liveins: $r0, $r1, $r2
+ ; CHECK: renamable $r0 = tLDRBi killed renamable $r0, 0, 14 /* CC::al */, $noreg :: (load 1 from %ir.command_set, align 4)
+ ; CHECK: dead renamable $r0, $cpsr = tLSLri killed renamable $r0, 24, 14 /* CC::al */, $noreg
+ ; CHECK: t2Bcc %bb.2, 4 /* CC::mi */, killed $cpsr
+ ; CHECK: bb.1.land.end:
+ ; CHECK: $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
+ ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
+ ; CHECK: bb.2.land.rhs:
+ ; CHECK: liveins: $r1, $r2
+ ; CHECK: $r0 = tMOVr killed $r1, 14 /* CC::al */, $noreg
+ ; CHECK: $r1 = tMOVr killed $r2, 14 /* CC::al */, $noreg
+ ; CHECK: tTAILJMPdND @branch_target, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp, implicit $r0, implicit $r1
+ bb.0.entry:
+ successors: %bb.1, %bb.2
+ liveins: $r0, $r1, $r2
+
+ renamable $r0 = tLDRBi killed renamable $r0, 0, 14 /* CC::al */, $noreg :: (load 1 from %ir.command_set, align 4)
+ dead renamable $r0, $cpsr = tLSLri killed renamable $r0, 24, 14 /* CC::al */, $noreg
+ t2Bcc %bb.2, 4 /* CC::mi */, killed $cpsr
+
+ bb.1.land.end:
+ $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
+ tBX_RET 14 /* CC::al */, $noreg, implicit $r0
+
+ bb.2.land.rhs:
+ liveins: $r1, $r2
+
+ $r0 = tMOVr killed $r1, 14 /* CC::al */, $noreg
+ $r1 = tMOVr killed $r2, 14 /* CC::al */, $noreg
+ tTAILJMPdND @branch_target, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp, implicit $r0, implicit $r1
+
+...
More information about the llvm-commits
mailing list