blob: 846607be790ebf31090ac78d882acb30f933ee0f [file] [log] [blame]
Matt Arsenault0ad1b712019-01-08 23:22:18 +00001# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn-amd-amdhsa -verify-coalescing -run-pass=simple-register-coalescing -verify-machineinstrs -o - %s | FileCheck %s
3
4---
5name: couldnt_join_subrange_implicit_def_pred_block
6tracksRegLiveness: true
7body: |
8 ; CHECK-LABEL: name: couldnt_join_subrange_implicit_def_pred_block
9 ; CHECK: bb.0:
10 ; CHECK: successors: %bb.1(0x80000000)
11 ; CHECK: undef %0.sub0:sreg_64_xexec = IMPLICIT_DEF
12 ; CHECK: bb.1:
13 ; CHECK: successors: %bb.2(0x80000000)
14 ; CHECK: %0.sub1:sreg_64_xexec = COPY %0.sub0
15 ; CHECK: S_BRANCH %bb.2
16 ; CHECK: bb.2:
17 ; CHECK: S_ENDPGM implicit %0
18 bb.0:
19 successors: %bb.1
20
21 undef %0.sub0:sreg_64_xexec = IMPLICIT_DEF
22
23 bb.1:
24 successors: %bb.2
25
26 %1:sreg_64 = COPY %0:sreg_64_xexec
27 %0.sub1:sreg_64_xexec = COPY %0.sub0:sreg_64_xexec
28 S_BRANCH %bb.2
29
30 bb.2:
31 dead %2:sreg_32_xm0 = COPY %0.sub0:sreg_64_xexec
32 S_ENDPGM implicit killed %1
33
34...
35---
36name: couldnt_join_subrange_no_implicit_def_inst
37tracksRegLiveness: true
38body: |
39 bb.0:
40 ; CHECK-LABEL: name: couldnt_join_subrange_no_implicit_def_inst
41 ; CHECK: undef %0.sub0:sreg_64 = S_MOV_B32 0
42 ; CHECK: %0.sub1:sreg_64 = COPY %0.sub0
43 ; CHECK: S_ENDPGM implicit %0.sub1
44 undef %0.sub0:sreg_64 = S_MOV_B32 0
45 %1:sreg_64 = COPY %0:sreg_64
46 %0.sub1:sreg_64 = COPY %0.sub0:sreg_64
47 S_ENDPGM implicit %1.sub1:sreg_64
48
49...
50---
51name: couldnt_join_subrange0
52tracksRegLiveness: true
53body: |
54 ; CHECK-LABEL: name: couldnt_join_subrange0
55 ; CHECK: bb.0:
56 ; CHECK: successors: %bb.1(0x80000000)
57 ; CHECK: undef %0.sub1:sreg_64 = S_MOV_B32 -1
58 ; CHECK: bb.1:
59 ; CHECK: %0.sub0:sreg_64 = S_MOV_B32 0
60 ; CHECK: [[COPY:%[0-9]+]]:sreg_64 = COPY %0
61 ; CHECK: dead %0.sub1:sreg_64 = COPY %0.sub0
62 ; CHECK: S_ENDPGM implicit [[COPY]].sub1
63 bb.0:
64 successors: %bb.1
65 undef %0.sub1:sreg_64 = S_MOV_B32 -1
66
67 bb.1:
68 %0.sub0:sreg_64 = S_MOV_B32 0
69 %1:sreg_64 = COPY %0:sreg_64
70 dead %0.sub1:sreg_64 = COPY %0.sub0:sreg_64
71 S_ENDPGM implicit %1.sub1:sreg_64
72
73...
74---
75name: lanes_not_tracked_subreg_join_couldnt_join_subrange
76tracksRegLiveness: true
77body: |
78 bb.0:
79
80 ; CHECK-LABEL: name: lanes_not_tracked_subreg_join_couldnt_join_subrange
81 ; CHECK: undef %0.sub0:sreg_64_xexec = S_MOV_B32 0
82 ; CHECK: %0.sub1:sreg_64_xexec = S_MOV_B32 0
83 ; CHECK: S_NOP 0, implicit %0.sub1
84 ; CHECK: S_NOP 0, implicit %0
85 ; CHECK: S_ENDPGM
86 undef %0.sub0:sreg_64_xexec = S_MOV_B32 0
87 %1:sreg_64 = COPY %0
88 %0.sub1:sreg_64_xexec = S_MOV_B32 0
89 S_NOP 0, implicit %0.sub1
90 S_NOP 0, implicit %1
91 S_ENDPGM
92
93...
94---
95name: couldnt_join_subrange1
96tracksRegLiveness: true
97body: |
98 ; CHECK-LABEL: name: couldnt_join_subrange1
99 ; CHECK: bb.0:
100 ; CHECK: successors: %bb.1(0x80000000)
101 ; CHECK: undef %0.sub0:sreg_64_xexec = S_MOV_B32 0
102 ; CHECK: %0.sub1:sreg_64_xexec = COPY %0.sub0
103 ; CHECK: bb.1:
104 ; CHECK: S_NOP 0, implicit %0.sub1
105 ; CHECK: S_ENDPGM implicit %0
106 bb.0:
107 successors: %bb.1
108
109 undef %0.sub0:sreg_64_xexec = S_MOV_B32 0
110 %1:sreg_64 = COPY %0
111 %0.sub1:sreg_64_xexec = COPY %0.sub0
112
113 bb.1:
114
115 S_NOP 0, implicit %0.sub1
116 S_ENDPGM implicit %1
117
118...