llvm/test/CodeGen/PowerPC/remove-implicit-use.mir
QingShan Zhang d966eee328 [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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@350115 91177308-0d34-0410-b5e6-96231b3b80d8
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
...