@@ -102,7 +102,80 @@ body: |
102
102
$vgpr0 = COPY %6
103
103
S_SETPC_B64 undef $sgpr30_sgpr31
104
104
...
105
+
105
106
---
107
+ name : test_phi_v3s16
108
+ tracksRegLiveness : true
109
+
110
+ body : |
111
+ ; CHECK-LABEL: name: test_phi_v3s16
112
+ ; CHECK: bb.0:
113
+ ; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)
114
+ ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2
115
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1
116
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
117
+ ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
118
+ ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]]
119
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY]](<4 x s16>), 0
120
+ ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF
121
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[EXTRACT]](<3 x s16>), 0
122
+ ; CHECK: G_BRCOND [[ICMP]](s1), %bb.1
123
+ ; CHECK: G_BR %bb.2
124
+ ; CHECK: bb.1:
125
+ ; CHECK: successors: %bb.2(0x80000000)
126
+ ; CHECK: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16), [[UV2:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[EXTRACT]](<3 x s16>)
127
+ ; CHECK: [[UV3:%[0-9]+]]:_(s16), [[UV4:%[0-9]+]]:_(s16), [[UV5:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[EXTRACT]](<3 x s16>)
128
+ ; CHECK: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UV]](s16)
129
+ ; CHECK: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[UV3]](s16)
130
+ ; CHECK: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ANYEXT]], [[ANYEXT1]]
131
+ ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ADD]](s32)
132
+ ; CHECK: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[UV1]](s16)
133
+ ; CHECK: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[UV4]](s16)
134
+ ; CHECK: [[ADD1:%[0-9]+]]:_(s32) = G_ADD [[ANYEXT2]], [[ANYEXT3]]
135
+ ; CHECK: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[ADD1]](s32)
136
+ ; CHECK: [[ANYEXT4:%[0-9]+]]:_(s32) = G_ANYEXT [[UV2]](s16)
137
+ ; CHECK: [[ANYEXT5:%[0-9]+]]:_(s32) = G_ANYEXT [[UV5]](s16)
138
+ ; CHECK: [[ADD2:%[0-9]+]]:_(s32) = G_ADD [[ANYEXT4]], [[ANYEXT5]]
139
+ ; CHECK: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[ADD2]](s32)
140
+ ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16), [[TRUNC2]](s16)
141
+ ; CHECK: [[DEF1:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF
142
+ ; CHECK: [[INSERT1:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF1]], [[BUILD_VECTOR]](<3 x s16>), 0
143
+ ; CHECK: G_BR %bb.2
144
+ ; CHECK: bb.2:
145
+ ; CHECK: [[PHI:%[0-9]+]]:_(<4 x s16>) = G_PHI [[INSERT]](<4 x s16>), %bb.0, [[INSERT1]](<4 x s16>), %bb.1
146
+ ; CHECK: [[EXTRACT1:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[PHI]](<4 x s16>), 0
147
+ ; CHECK: [[DEF2:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF
148
+ ; CHECK: [[INSERT2:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF2]], [[EXTRACT1]](<3 x s16>), 0
149
+ ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT2]](<4 x s16>)
150
+ ; CHECK: S_SETPC_B64 undef $sgpr30_sgpr31
151
+ bb.0:
152
+ successors: %bb.1, %bb.2
153
+ liveins: $vgpr0_vgpr1, $vgpr2
154
+
155
+ %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
156
+ %1:_(s32) = COPY $vgpr2
157
+ %2:_(s32) = G_CONSTANT i32 0
158
+ %3:_(s1) = G_ICMP intpred(eq), %1, %2
159
+ %4:_(<3 x s16>) = G_EXTRACT %0, 0
160
+ G_BRCOND %3, %bb.1
161
+ G_BR %bb.2
162
+
163
+ bb.1:
164
+ successors: %bb.2
165
+
166
+ %5:_(<3 x s16>) = G_ADD %4, %4
167
+ G_BR %bb.2
168
+
169
+ bb.2:
170
+ %6:_(<3 x s16>) = G_PHI %4, %bb.0, %5, %bb.1
171
+ %7:_(<4 x s16>) = G_IMPLICIT_DEF
172
+ %8:_(<4 x s16>) = G_INSERT %7, %6, 0
173
+ $vgpr0_vgpr1 = COPY %8
174
+ S_SETPC_B64 undef $sgpr30_sgpr31
175
+ ...
176
+
177
+ ---
178
+
106
179
name : test_phi_v4s16
107
180
tracksRegLiveness : true
108
181
0 commit comments