blob: 9bbb579b762e6359333375d48a4c0351eb1c9448 [file] [log] [blame]
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 4
# RUN: llc -o - %s -mtriple=loongarch64 \
# RUN: -run-pass=register-coalescer -join-liveintervals=1 -join-splitedges=0 | FileCheck %s
---
name: foo
tracksRegLiveness: true
body: |
; CHECK-LABEL: name: foo
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.1(0x80000000)
; CHECK-NEXT: liveins: $r4, $r5, $r6, $r7, $r8
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $r8
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $r7
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $r6
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr = COPY $r5
; CHECK-NEXT: [[COPY4:%[0-9]+]]:gpr = COPY $r4
; CHECK-NEXT: [[ANDI:%[0-9]+]]:gpr = ANDI [[COPY3]], 1
; CHECK-NEXT: [[ORI:%[0-9]+]]:gpr = ORI $r0, 1
; CHECK-NEXT: [[ANDI1:%[0-9]+]]:gpr = ANDI [[COPY2]], 1
; CHECK-NEXT: [[ANDI2:%[0-9]+]]:gpr = ANDI [[COPY1]], 1
; CHECK-NEXT: [[ANDI3:%[0-9]+]]:gpr = ANDI [[COPY]], 1
; CHECK-NEXT: [[COPY5:%[0-9]+]]:gpr = COPY $r0
; CHECK-NEXT: [[COPY6:%[0-9]+]]:gpr = COPY $r0
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.1:
; CHECK-NEXT: successors: %bb.2(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY7:%[0-9]+]]:gpr = COPY [[COPY5]]
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: successors: %bb.3(0x40000000), %bb.4(0x40000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: BEQZ [[ANDI]], %bb.4
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: successors: %bb.9(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: PseudoBR %bb.9
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.4:
; CHECK-NEXT: successors: %bb.5(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.5:
; CHECK-NEXT: successors: %bb.7(0x7c000000), %bb.6(0x04000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: dead [[LD_D:%[0-9]+]]:gpr = LD_D $r0, 8
; CHECK-NEXT: dead [[LD_D1:%[0-9]+]]:gpr = LD_D $r0, 0
; CHECK-NEXT: BNEZ [[ANDI1]], %bb.7
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.6:
; CHECK-NEXT: successors: %bb.11(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY6:%[0-9]+]]:gpr = COPY $r0
; CHECK-NEXT: PseudoBR %bb.11
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.7:
; CHECK-NEXT: successors: %bb.8(0x7c000000), %bb.10(0x04000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: BEQZ [[ANDI2]], %bb.10
; CHECK-NEXT: PseudoBR %bb.8
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.8:
; CHECK-NEXT: successors: %bb.9(0x04000000), %bb.5(0x7c000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY6:%[0-9]+]]:gpr = ADDI_D [[COPY6]], 1
; CHECK-NEXT: BEQZ [[ANDI3]], %bb.5
; CHECK-NEXT: PseudoBR %bb.9
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.9:
; CHECK-NEXT: successors: %bb.12(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: ST_B $r0, [[COPY4]], 0
; CHECK-NEXT: PseudoBR %bb.12
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.10:
; CHECK-NEXT: successors: %bb.11(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY5:%[0-9]+]]:gpr = ADDI_D [[COPY6]], 1
; CHECK-NEXT: [[COPY6:%[0-9]+]]:gpr = COPY [[ORI]]
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.11:
; CHECK-NEXT: successors: %bb.12(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: ST_D $r0, [[COPY4]], 0
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.12:
; CHECK-NEXT: successors: %bb.2(0x7c000000), %bb.1(0x04000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: BEQ [[COPY7]], [[ORI]], %bb.2
; CHECK-NEXT: PseudoBR %bb.1
bb.0:
liveins: $r4, $r5, $r6, $r7, $r8
%0:gpr = COPY killed $r8
%1:gpr = COPY killed $r7
%2:gpr = COPY killed $r6
%3:gpr = COPY killed $r5
%4:gpr = COPY killed $r4
%5:gpr = COPY $r0
%6:gpr = COPY killed %5
%7:gpr = ANDI killed %3, 1
%8:gpr = ORI $r0, 1
%9:gpr = ANDI killed %2, 1
%10:gpr = ANDI killed %1, 1
%11:gpr = ANDI killed %0, 1
%12:gpr = COPY %6
%13:gpr = COPY killed %6
%14:gpr = IMPLICIT_DEF
bb.1:
%15:gpr = COPY killed %14
%16:gpr = COPY killed %13
%17:gpr = COPY killed %12
%18:gpr = COPY %17
%19:gpr = COPY %16
%20:gpr = COPY killed %16
%21:gpr = COPY killed %15
bb.2:
successors: %bb.3, %bb.4
%22:gpr = COPY killed %21
%23:gpr = COPY killed %20
%24:gpr = COPY killed %19
%25:gpr = COPY killed %18
BEQZ %7, %bb.4
bb.3:
%26:gpr = COPY killed %24
%27:gpr = COPY killed %23
PseudoBR %bb.9
bb.4:
%28:gpr = COPY killed %23
bb.5:
successors: %bb.7(0x7c000000), %bb.6(0x04000000)
%29:gpr = COPY killed %28
dead %30:gpr = LD_D $r0, 8
dead %31:gpr = LD_D $r0, 0
BNEZ %9, %bb.7
bb.6:
%32:gpr = COPY $r0
%33:gpr = COPY killed %32
%34:gpr = COPY killed %33
%35:gpr = COPY killed %22
PseudoBR %bb.11
bb.7:
successors: %bb.8(0x7c000000), %bb.10(0x04000000)
BEQZ %10, %bb.10
PseudoBR %bb.8
bb.8:
successors: %bb.9(0x04000000), %bb.5(0x7c000000)
%36:gpr = ADDI_D killed %29, 1
%28:gpr = COPY %36
%26:gpr = COPY %36
%27:gpr = COPY killed %36
BEQZ %11, %bb.5
PseudoBR %bb.9
bb.9:
%37:gpr = COPY killed %27
%38:gpr = COPY killed %26
%39:gpr = COPY $r0
ST_B killed %39, %4, 0
%40:gpr = COPY killed %25
%41:gpr = COPY killed %38
%42:gpr = COPY killed %37
%43:gpr = COPY killed %22
PseudoBR %bb.12
bb.10:
%44:gpr = ADDI_D killed %29, 1
%34:gpr = COPY %8
%35:gpr = COPY killed %44
bb.11:
%45:gpr = COPY killed %35
%46:gpr = COPY killed %34
%47:gpr = COPY $r0
ST_D killed %47, %4, 0
%40:gpr = COPY %45
%41:gpr = COPY %46
%42:gpr = COPY killed %46
%43:gpr = COPY killed %45
bb.12:
successors: %bb.2(0x7c000000), %bb.1(0x04000000)
%48:gpr = COPY killed %43
%49:gpr = COPY killed %42
%50:gpr = COPY killed %41
%51:gpr = COPY killed %40
%12:gpr = COPY %51
%13:gpr = COPY %50
%14:gpr = COPY %48
%18:gpr = COPY killed %51
%19:gpr = COPY killed %50
%20:gpr = COPY killed %49
%21:gpr = COPY killed %48
BEQ %17, %8, %bb.2
PseudoBR %bb.1
...