@@ -11,9 +11,10 @@ body: |
1111 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2
1212 ; CHECK-NEXT: {{ $}}
1313 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1
14- ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -4294967296
15- ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
16- ; CHECK-NEXT: $sgpr0_sgpr1 = COPY [[AND]](s64)
14+ ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)
15+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
16+ ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[C]](s32), [[UV1]](s32)
17+ ; CHECK-NEXT: $sgpr0_sgpr1 = COPY [[MV]](s64)
1718 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0_sgpr1
1819 %0:_(s64) = COPY $sgpr0_sgpr1
1920 %1:_(s64) = G_CONSTANT i64 -4294967296
@@ -31,9 +32,10 @@ body: |
3132 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2
3233 ; CHECK-NEXT: {{ $}}
3334 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1
34- ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -4294967296
35- ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
36- ; CHECK-NEXT: $sgpr0_sgpr1 = COPY [[AND]](s64)
35+ ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)
36+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
37+ ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[C]](s32), [[UV1]](s32)
38+ ; CHECK-NEXT: $sgpr0_sgpr1 = COPY [[MV]](s64)
3739 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0_sgpr1
3840 %0:_(s64) = COPY $sgpr0_sgpr1
3941 %1:_(s64) = G_CONSTANT i64 -4294967296
@@ -52,9 +54,9 @@ body: |
5254 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2
5355 ; CHECK-NEXT: {{ $}}
5456 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1
55- ; CHECK-NEXT: [[C :%[0-9]+]]:_(s64 ) = G_CONSTANT i64 4294967295
56- ; CHECK-NEXT: [[AND :%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
57- ; CHECK-NEXT: $sgpr0_sgpr1 = COPY [[AND ]](s64)
57+ ; CHECK-NEXT: [[TRUNC :%[0-9]+]]:_(s32 ) = G_TRUNC [[COPY]](s64)
58+ ; CHECK-NEXT: [[ZEXT :%[0-9]+]]:_(s64) = G_ZEXT [[TRUNC]](s32)
59+ ; CHECK-NEXT: $sgpr0_sgpr1 = COPY [[ZEXT ]](s64)
5860 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0_sgpr1
5961 %0:_(s64) = COPY $sgpr0_sgpr1
6062 %1:_(s64) = G_CONSTANT i64 4294967295
@@ -72,9 +74,9 @@ body: |
7274 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2
7375 ; CHECK-NEXT: {{ $}}
7476 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1
75- ; CHECK-NEXT: [[C :%[0-9]+]]:_(s64 ) = G_CONSTANT i64 4294967295
76- ; CHECK-NEXT: [[AND :%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
77- ; CHECK-NEXT: $sgpr0_sgpr1 = COPY [[AND ]](s64)
77+ ; CHECK-NEXT: [[TRUNC :%[0-9]+]]:_(s32 ) = G_TRUNC [[COPY]](s64)
78+ ; CHECK-NEXT: [[ZEXT :%[0-9]+]]:_(s64) = G_ZEXT [[TRUNC]](s32)
79+ ; CHECK-NEXT: $sgpr0_sgpr1 = COPY [[ZEXT ]](s64)
7880 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0_sgpr1
7981 %0:_(s64) = COPY $sgpr0_sgpr1
8082 %1:_(s64) = G_CONSTANT i64 4294967295
@@ -91,14 +93,10 @@ body: |
9193 ; CHECK-LABEL: name: test_and_mask_hi_with_merge_unmerge
9294 ; CHECK: liveins: $sgpr0, $sgpr1, $sgpr2
9395 ; CHECK-NEXT: {{ $}}
94- ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
95- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr1
96- ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
97- ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -4294967296
98- ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[MV]], [[C]]
99- ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AND]](s64)
100- ; CHECK-NEXT: $sgpr0 = COPY [[UV]](s32)
101- ; CHECK-NEXT: $sgpr1 = COPY [[UV1]](s32)
96+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr1
97+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
98+ ; CHECK-NEXT: $sgpr0 = COPY [[C]](s32)
99+ ; CHECK-NEXT: $sgpr1 = COPY [[COPY]](s32)
102100 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1
103101 %0:_(s32) = COPY $sgpr0
104102 %1:_(s32) = COPY $sgpr1
@@ -140,9 +138,10 @@ body: |
140138 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2
141139 ; CHECK-NEXT: {{ $}}
142140 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1
143- ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -4294967296
144- ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[COPY]], [[C]]
145- ; CHECK-NEXT: $sgpr0_sgpr1 = COPY [[OR]](s64)
141+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)
142+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
143+ ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[TRUNC]](s32), [[C]](s32)
144+ ; CHECK-NEXT: $sgpr0_sgpr1 = COPY [[MV]](s64)
146145 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0_sgpr1
147146 %0:_(s64) = COPY $sgpr0_sgpr1
148147 %1:_(s64) = G_CONSTANT i64 -4294967296
@@ -160,9 +159,10 @@ body: |
160159 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2
161160 ; CHECK-NEXT: {{ $}}
162161 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1
163- ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -4294967296
164- ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[COPY]], [[C]]
165- ; CHECK-NEXT: $sgpr0_sgpr1 = COPY [[OR]](s64)
162+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)
163+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
164+ ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[TRUNC]](s32), [[C]](s32)
165+ ; CHECK-NEXT: $sgpr0_sgpr1 = COPY [[MV]](s64)
166166 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0_sgpr1
167167 %0:_(s64) = COPY $sgpr0_sgpr1
168168 %1:_(s64) = G_CONSTANT i64 -4294967296
@@ -181,9 +181,10 @@ body: |
181181 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2
182182 ; CHECK-NEXT: {{ $}}
183183 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1
184- ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4294967295
185- ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[COPY]], [[C]]
186- ; CHECK-NEXT: $sgpr0_sgpr1 = COPY [[OR]](s64)
184+ ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)
185+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
186+ ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[C]](s32), [[UV1]](s32)
187+ ; CHECK-NEXT: $sgpr0_sgpr1 = COPY [[MV]](s64)
187188 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0_sgpr1
188189 %0:_(s64) = COPY $sgpr0_sgpr1
189190 %1:_(s64) = G_CONSTANT i64 4294967295
@@ -201,9 +202,10 @@ body: |
201202 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2
202203 ; CHECK-NEXT: {{ $}}
203204 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1
204- ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4294967295
205- ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[COPY]], [[C]]
206- ; CHECK-NEXT: $sgpr0_sgpr1 = COPY [[OR]](s64)
205+ ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)
206+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
207+ ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[C]](s32), [[UV1]](s32)
208+ ; CHECK-NEXT: $sgpr0_sgpr1 = COPY [[MV]](s64)
207209 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0_sgpr1
208210 %0:_(s64) = COPY $sgpr0_sgpr1
209211 %1:_(s64) = G_CONSTANT i64 4294967295
@@ -221,13 +223,9 @@ body: |
221223 ; CHECK: liveins: $sgpr0, $sgpr1, $sgpr2
222224 ; CHECK-NEXT: {{ $}}
223225 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0
224- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr1
225- ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
226- ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -4294967296
227- ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[MV]], [[C]]
228- ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[OR]](s64)
229- ; CHECK-NEXT: $sgpr0 = COPY [[UV]](s32)
230- ; CHECK-NEXT: $sgpr1 = COPY [[UV1]](s32)
226+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
227+ ; CHECK-NEXT: $sgpr0 = COPY [[COPY]](s32)
228+ ; CHECK-NEXT: $sgpr1 = COPY [[C]](s32)
231229 ; CHECK-NEXT: SI_RETURN_TO_EPILOG implicit $sgpr0, implicit $sgpr1
232230 %0:_(s32) = COPY $sgpr0
233231 %1:_(s32) = COPY $sgpr1
0 commit comments