1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 04:32:44 +01:00
llvm-mirror/test/CodeGen/PowerPC/early-ret-verify.mir
Kang Zhang 29c0ba58cf [PowerPC] Remove the redundant implicit operands in ppc-early-ret pass
Summary:
In the `ppc-early-ret` pass, we have use `BuildMI` and `copyImplicitOps` when the branch instructions can do the early return. But the two functions will add implicit operands twice, this is not correct.

This patch is to remove the redundant implicit operands in `ppc-early-ret pass`.

Reviewed By: jsji

Differential Revision: https://reviews.llvm.org/D76042
2020-07-19 07:01:45 +00:00

61 lines
2.1 KiB
YAML

# RUN: llc -mtriple powerpc64le-unknown-linux-gnu -run-pass=ppc-early-ret -o \
# RUN: - %s -verify-machineinstrs | FileCheck %s
---
name: testEarlyRet
body: |
bb.0.entry:
successors: %bb.4(0x40000000), %bb.1(0x40000000)
BC undef renamable $cr5lt, %bb.4
bb.1:
successors: %bb.2(0x80000000)
renamable $r3 = IMPLICIT_DEF
renamable $r4 = IMPLICIT_DEF
bb.2:
successors: %bb.3(0x80000000)
liveins: $r3, $r4
$r5 = OR $r4, $r4
renamable $r4 = ADDIC killed $r4, 1, implicit-def $carry
$r6 = OR $r3, $r3
renamable $r3 = ADDZE killed $r3, implicit-def dead $carry, implicit killed $carry
renamable $cr0 = CMPLW renamable $r3, killed renamable $r6
renamable $cr5lt = CRANDC renamable $cr0lt, renamable $cr0eq
renamable $cr1 = CMPLW renamable $r4, killed renamable $r5
BCLR killed renamable $cr5lt, implicit $lr, implicit $rm
bb.3:
successors: %bb.4(0x02082082), %bb.2(0x7df7df7e)
liveins: $cr0, $cr1, $r3, $r4
renamable $cr5lt = CRAND killed renamable $cr0eq, killed renamable $cr1lt, implicit $cr1, implicit $cr0
BCn killed renamable $cr5lt, %bb.2
bb.4:
BLR implicit $lr, implicit $rm
; CHECK-LABEL: testEarlyRet
; CHECK: bb.0.entry:
; CHECK: BCLR undef renamable $cr5lt, implicit $lr, implicit $rm
; CHECK: bb.1:
; CHECK: renamable $r3 = IMPLICIT_DEF
; CHECK: renamable $r4 = IMPLICIT_DEF
; CHECK: bb.2:
; CHECK: $r5 = OR $r4, $r4
; CHECK: renamable $r4 = ADDIC killed $r4, 1, implicit-def $carry
; CHECK: $r6 = OR $r3, $r3
; CHECK: renamable $r3 = ADDZE killed $r3, implicit-def dead $carry, implicit killed $carry
; CHECK: renamable $cr0 = CMPLW renamable $r3, killed renamable $r6
; CHECK: renamable $cr5lt = CRANDC renamable $cr0lt, renamable $cr0eq
; CHECK: renamable $cr1 = CMPLW renamable $r4, killed renamable $r5
; CHECK: BCLR killed renamable $cr5lt, implicit $lr, implicit $rm
; CHECK: bb.3:
; CHECK: renamable $cr5lt = CRAND killed renamable $cr0eq, killed renamable $cr1lt, implicit $cr1, implicit $cr0
; CHECK: BCn killed renamable $cr5lt, %bb.2
; CHECK: BLR implicit $lr, implicit $rm
...