xref: /llvm-project/llvm/test/CodeGen/RISCV/MachineSink-implicit-x0.mir (revision 4e94e25c9024d01451e318fe48aee79b615e9c2b)
1*4e94e25cSMarkus Lavin# RUN: llc -mtriple=riscv32 %s -run-pass=machine-sink -o - | FileCheck %s
2*4e94e25cSMarkus Lavin
3*4e94e25cSMarkus Lavin# Verify that sinking of '%20:gpr = LUI 1, implicit $x0' is not inhibited by
4*4e94e25cSMarkus Lavin# the implicit use of '$x0'.
5*4e94e25cSMarkus Lavin# Register '$x0' is a 'MRI->isConstantPhysReg()' on RISCV and such uses should
6*4e94e25cSMarkus Lavin# not inhibit sinking transformation even though they are livein to the block
7*4e94e25cSMarkus Lavin# they are to be sunk into (inhibit under such conditions should only happen
8*4e94e25cSMarkus Lavin# for defines).
9*4e94e25cSMarkus Lavin
10*4e94e25cSMarkus Lavin---
11*4e94e25cSMarkus Lavinname:            f
12*4e94e25cSMarkus LavintracksRegLiveness: true
13*4e94e25cSMarkus Lavinbody:             |
14*4e94e25cSMarkus Lavin  ; CHECK-LABEL: bb.1:
15*4e94e25cSMarkus Lavin  ; CHECK-NEXT:   successors: %bb.3(0x80000000)
16*4e94e25cSMarkus Lavin  ; CHECK-NEXT:   liveins: $x0
17*4e94e25cSMarkus Lavin  ; CHECK-NEXT: {{  $}}
18*4e94e25cSMarkus Lavin  ; CHECK-NEXT:   [[LUI:%[0-9]+]]:gpr = LUI 1, implicit $x0
19*4e94e25cSMarkus Lavin  bb.0:
20*4e94e25cSMarkus Lavin    liveins: $x10
21*4e94e25cSMarkus Lavin    %10:gpr = COPY $x10
22*4e94e25cSMarkus Lavin    %20:gpr = LUI 1, implicit $x0
23*4e94e25cSMarkus Lavin    BEQ %10, %10, %bb.2
24*4e94e25cSMarkus Lavin    PseudoBR %bb.1
25*4e94e25cSMarkus Lavin  bb.1:
26*4e94e25cSMarkus Lavin    liveins: $x0
27*4e94e25cSMarkus Lavin    %30:gpr = ADDI %20, 5
28*4e94e25cSMarkus Lavin    PseudoBR %bb.3
29*4e94e25cSMarkus Lavin  bb.2:
30*4e94e25cSMarkus Lavin    PseudoBR %bb.3
31*4e94e25cSMarkus Lavin  bb.3:
32*4e94e25cSMarkus Lavin    PseudoRET
33*4e94e25cSMarkus Lavin...
34