Files
clang-p2996/llvm/test/CodeGen/PowerPC/remove-implicit-use.mir
QingShan Zhang f2d9df61c7 [PowerPC] Remove the implicit use of the register if it is replaced by Imm
If we are changing the MI operand from Reg to Imm, we need also handle its implicit use if have.

Differential Revision: https://reviews.llvm.org/D56078

llvm-svn: 350115
2018-12-28 03:38:09 +00:00

79 lines
2.2 KiB
YAML

# RUN: llc -mtriple=powerpc64le-unknown-unknown -start-after=ppc-mi-peepholes \
# RUN: -stop-before=ppc-expand-isel -verify-machineinstrs %s -o - | FileCheck %s
--- |
; ModuleID = 'a.ll'
source_filename = "a.c"
target datalayout = "e-m:e-i64:64-n32:64"
target triple = "powerpc64le-unknown-linux-gnu"
; Function Attrs: norecurse nounwind readnone
define signext i32 @test(i32 signext %a, i32 signext %b, i32 signext %c) local_unnamed_addr #0 {
entry:
%cmp = icmp sgt i32 %a, %b
%add = add nsw i32 %c, %b
%cond = select i1 %cmp, i32 %a, i32 %add
ret i32 %cond
}
!llvm.module.flags = !{!0, !1}
!llvm.ident = !{!2}
!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 7, !"PIC Level", i32 2}
!2 = !{!"clang version 8.0.0 (trunk 347251)"}
...
---
name: test
alignment: 4
exposesReturnsTwice: false
legalized: false
regBankSelected: false
selected: false
failedISel: false
tracksRegLiveness: true
hasWinCFI: false
registers: []
liveins:
- { reg: '$x3', virtual-reg: '' }
- { reg: '$x4', virtual-reg: '' }
- { reg: '$x5', virtual-reg: '' }
frameInfo:
isFrameAddressTaken: false
isReturnAddressTaken: false
hasStackMap: false
hasPatchPoint: false
stackSize: 0
offsetAdjustment: 0
maxAlignment: 0
adjustsStack: false
hasCalls: false
stackProtector: ''
maxCallFrameSize: 0
cvBytesOfCalleeSavedRegisters: 0
hasOpaqueSPAdjustment: false
hasVAStart: false
hasMustTailInVarArgFunc: false
localFrameSize: 0
savePoint: ''
restorePoint: ''
fixedStack: []
stack: []
constants: []
body: |
bb.0.entry:
liveins: $x3, $x5
renamable $r4 = LI 0
renamable $r5 = nsw ADD4 killed renamable $r5, renamable $r5, implicit $x5
renamable $cr0 = CMPW renamable $r3, killed renamable $r4, implicit $x4
; CHECK: ADD4
; CHECK-NOT: implicit $x4
renamable $r3 = ISEL killed renamable $r3, killed renamable $r5, killed renamable $cr0gt, implicit $cr0, implicit $x3
renamable $x3 = EXTSW_32_64 killed renamable $r3
BLR8 implicit $lr8, implicit $rm, implicit killed $x3
...