830 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=legalizer -allow-ginsert-as-artifact=0 -global-isel-abort=0 %s -o - | FileCheck %s3# RUN: llc -O0 -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer -allow-ginsert-as-artifact=0 -global-isel-abort=0 %s -o - | FileCheck %s4 5---6name: test_freeze_s17body: |8 bb.0:9 10 ; CHECK-LABEL: name: test_freeze_s111 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr012 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)13 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s1) = G_FREEZE [[TRUNC]]14 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FREEZE]](s1)15 ; CHECK-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)16 %0:_(s32) = COPY $vgpr017 %1:_(s1) = G_TRUNC %018 %2:_(s1) = G_FREEZE %119 %3:_(s32) = G_ANYEXT %220 $vgpr0 = COPY %321...22 23---24name: test_freeze_s725body: |26 bb.0:27 28 ; CHECK-LABEL: name: test_freeze_s729 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr030 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s32) = G_FREEZE [[COPY]]31 ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](s32)32 %0:_(s32) = COPY $vgpr033 %1:_(s7) = G_TRUNC %034 %2:_(s7) = G_FREEZE %135 %3:_(s32) = G_ANYEXT %236 $vgpr0 = COPY %337...38 39---40name: test_freeze_s841body: |42 bb.0:43 44 ; CHECK-LABEL: name: test_freeze_s845 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr046 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s32) = G_FREEZE [[COPY]]47 ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](s32)48 %0:_(s32) = COPY $vgpr049 %1:_(s8) = G_TRUNC %050 %2:_(s8) = G_FREEZE %151 %3:_(s32) = G_ANYEXT %252 $vgpr0 = COPY %353...54 55---56name: test_freeze_s1657body: |58 bb.0:59 60 ; CHECK-LABEL: name: test_freeze_s1661 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr062 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)63 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s16) = G_FREEZE [[TRUNC]]64 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FREEZE]](s16)65 ; CHECK-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)66 %0:_(s32) = COPY $vgpr067 %1:_(s16) = G_TRUNC %068 %2:_(s16) = G_FREEZE %169 %3:_(s32) = G_ANYEXT %270 $vgpr0 = COPY %371...72 73---74name: test_freeze_s3275body: |76 bb.0:77 78 ; CHECK-LABEL: name: test_freeze_s3279 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr080 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s32) = G_FREEZE [[COPY]]81 ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](s32)82 %0:_(s32) = COPY $vgpr083 %1:_(s32) = G_FREEZE %084 $vgpr0 = COPY %185...86 87---88name: test_freeze_s4889body: |90 bb.0:91 92 ; CHECK-LABEL: name: test_freeze_s4893 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr194 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s64) = G_FREEZE [[COPY]]95 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](s64)96 %0:_(s64) = COPY $vgpr0_vgpr197 %1:_(s48) = G_TRUNC %098 %2:_(s48) = G_FREEZE %199 %3:_(s64) = G_ANYEXT %2100 $vgpr0_vgpr1 = COPY %3101...102 103---104name: test_freeze_s64105body: |106 bb.0:107 108 ; CHECK-LABEL: name: test_freeze_s64109 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1110 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s64) = G_FREEZE [[COPY]]111 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](s64)112 %0:_(s64) = COPY $vgpr0_vgpr1113 %1:_(s64) = G_FREEZE %0114 $vgpr0_vgpr1 = COPY %1115...116 117---118name: test_freeze_s65119body: |120 bb.0:121 122 ; CHECK-LABEL: name: test_freeze_s65123 ; CHECK: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2124 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s96)125 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF126 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV]](s32), [[UV1]](s32)127 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV2]](s32), [[DEF]](s32)128 ; CHECK-NEXT: [[MV2:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[MV]](s64), [[MV1]](s64)129 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s128) = G_FREEZE [[MV2]]130 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s96) = G_TRUNC [[FREEZE]](s128)131 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[TRUNC]](s96)132 %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2133 %1:_(s65) = G_TRUNC %0134 %2:_(s65) = G_FREEZE %1135 %3:_(s96) = G_ANYEXT %2136 $vgpr0_vgpr1_vgpr2 = COPY %3137...138 139---140name: test_freeze_s128141body: |142 bb.0:143 144 ; CHECK-LABEL: name: test_freeze_s128145 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3146 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s128) = G_FREEZE [[COPY]]147 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FREEZE]](s128)148 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3149 %1:_(s128) = G_FREEZE %0150 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1151...152 153---154name: test_freeze_256155body: |156 bb.0:157 158 ; CHECK-LABEL: name: test_freeze_256159 ; CHECK: [[COPY:%[0-9]+]]:_(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7160 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s256) = G_FREEZE [[COPY]]161 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[FREEZE]](s256)162 %0:_(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7163 %1:_(s256) = G_FREEZE %0164 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1165...166 167---168name: test_freeze_s448169body: |170 bb.0:171 172 ; CHECK-LABEL: name: test_freeze_s448173 ; CHECK: [[COPY:%[0-9]+]]:_(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15174 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s512) = G_FREEZE [[COPY]]175 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[FREEZE]](s512)176 %0:_(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15177 %1:_(s448) = G_TRUNC %0178 %2:_(s448) = G_FREEZE %1179 %3:_(s512) = G_ANYEXT %2180 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %3181...182 183---184name: test_freeze_s512185body: |186 bb.0:187 188 ; CHECK-LABEL: name: test_freeze_s512189 ; CHECK: [[COPY:%[0-9]+]]:_(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15190 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s512) = G_FREEZE [[COPY]]191 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[FREEZE]](s512)192 %0:_(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15193 %1:_(s512) = G_FREEZE %0194 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %1195...196 197---198name: test_freeze_s1024199body: |200 bb.0:201 202 ; CHECK-LABEL: name: test_freeze_s1024203 ; CHECK: [[COPY:%[0-9]+]]:_(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15204 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64), [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64), [[UV4:%[0-9]+]]:_(s64), [[UV5:%[0-9]+]]:_(s64), [[UV6:%[0-9]+]]:_(s64), [[UV7:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](s512)205 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF206 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s1024) = G_MERGE_VALUES [[UV]](s64), [[UV1]](s64), [[UV2]](s64), [[UV3]](s64), [[UV4]](s64), [[UV5]](s64), [[UV6]](s64), [[UV7]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64)207 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s1024) = G_FREEZE [[MV]]208 ; CHECK-NEXT: S_NOP 0, implicit [[FREEZE]](s1024)209 %0:_(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15210 %1:_(s1024) = G_ANYEXT %0211 %2:_(s1024) = G_FREEZE %1212 S_NOP 0, implicit %2213...214 215---216name: test_freeze_s1056217body: |218 bb.0:219 220 ; CHECK-LABEL: name: test_freeze_s1056221 ; CHECK: [[COPY:%[0-9]+]]:_(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15222 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s1056) = G_ANYEXT [[COPY]](s512)223 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s1056) = G_FREEZE [[ANYEXT]]224 ; CHECK-NEXT: S_NOP 0, implicit [[FREEZE]](s1056)225 %0:_(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15226 %1:_(s1056) = G_ANYEXT %0227 %2:_(s1056) = G_FREEZE %1228 S_NOP 0, implicit %2229...230 231---232name: test_freeze_s2048233body: |234 bb.0:235 236 ; CHECK-LABEL: name: test_freeze_s2048237 ; CHECK: [[COPY:%[0-9]+]]:_(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15238 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64), [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64), [[UV4:%[0-9]+]]:_(s64), [[UV5:%[0-9]+]]:_(s64), [[UV6:%[0-9]+]]:_(s64), [[UV7:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](s512)239 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF240 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s1024) = G_MERGE_VALUES [[UV]](s64), [[UV1]](s64), [[UV2]](s64), [[UV3]](s64), [[UV4]](s64), [[UV5]](s64), [[UV6]](s64), [[UV7]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64)241 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s1024) = G_MERGE_VALUES [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64)242 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s1024) = G_FREEZE [[MV]]243 ; CHECK-NEXT: [[FREEZE1:%[0-9]+]]:_(s1024) = G_FREEZE [[MV1]]244 ; CHECK-NEXT: [[MV2:%[0-9]+]]:_(s2048) = G_MERGE_VALUES [[FREEZE]](s1024), [[FREEZE1]](s1024)245 ; CHECK-NEXT: S_NOP 0, implicit [[MV2]](s2048)246 %0:_(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15247 %1:_(s2048) = G_ANYEXT %0248 %2:_(s2048) = G_FREEZE %1249 S_NOP 0, implicit %2250...251 252---253name: test_freeze_v2s32254body: |255 bb.0:256 257 ; CHECK-LABEL: name: test_freeze_v2s32258 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1259 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<2 x s32>) = G_FREEZE [[COPY]]260 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](<2 x s32>)261 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1262 %1:_(<2 x s32>) = G_FREEZE %0263 $vgpr0_vgpr1 = COPY %1264...265 266---267name: test_freeze_v3s32268body: |269 bb.0:270 271 ; CHECK-LABEL: name: test_freeze_v3s32272 ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2273 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<3 x s32>) = G_FREEZE [[COPY]]274 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[FREEZE]](<3 x s32>)275 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2276 %1:_(<3 x s32>) = G_FREEZE %0277 $vgpr0_vgpr1_vgpr2 = COPY %1278...279 280---281name: test_freeze_v4s32282body: |283 bb.0:284 285 ; CHECK-LABEL: name: test_freeze_v4s32286 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3287 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<4 x s32>) = G_FREEZE [[COPY]]288 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FREEZE]](<4 x s32>)289 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3290 %1:_(<4 x s32>) = G_FREEZE %0291 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1292...293 294---295name: test_freeze_v5s32296body: |297 bb.0:298 299 ; CHECK-LABEL: name: test_freeze_v5s32300 ; CHECK: [[COPY:%[0-9]+]]:_(<5 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4301 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<5 x s32>) = G_FREEZE [[COPY]]302 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY [[FREEZE]](<5 x s32>)303 %0:_(<5 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4304 %1:_(<5 x s32>) = G_FREEZE %0305 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY %1306...307 308---309name: test_freeze_v6s32310body: |311 bb.0:312 313 ; CHECK-LABEL: name: test_freeze_v6s32314 ; CHECK: [[DEF:%[0-9]+]]:_(<6 x s32>) = G_IMPLICIT_DEF315 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<6 x s32>) = G_FREEZE [[DEF]]316 ; CHECK-NEXT: S_NOP 0, implicit [[FREEZE]](<6 x s32>)317 %0:_(<6 x s32>) = G_IMPLICIT_DEF318 %1:_(<6 x s32>) = G_FREEZE %0319 S_NOP 0, implicit %1320...321 322---323name: test_freeze_v7s32324body: |325 bb.0:326 327 ; CHECK-LABEL: name: test_freeze_v7s32328 ; CHECK: [[DEF:%[0-9]+]]:_(<7 x s32>) = G_IMPLICIT_DEF329 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<7 x s32>) = G_FREEZE [[DEF]]330 ; CHECK-NEXT: S_NOP 0, implicit [[FREEZE]](<7 x s32>)331 %0:_(<7 x s32>) = G_IMPLICIT_DEF332 %1:_(<7 x s32>) = G_FREEZE %0333 S_NOP 0, implicit %1334...335 336---337name: test_freeze_v8s32338body: |339 bb.0:340 341 ; CHECK-LABEL: name: test_freeze_v8s32342 ; CHECK: [[COPY:%[0-9]+]]:_(<8 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7343 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<8 x s32>) = G_FREEZE [[COPY]]344 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[FREEZE]](<8 x s32>)345 %0:_(<8 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7346 %1:_(<8 x s32>) = G_FREEZE %0347 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1348...349 350---351name: test_freeze_v16s32352body: |353 bb.0:354 355 ; CHECK-LABEL: name: test_freeze_v16s32356 ; CHECK: [[COPY:%[0-9]+]]:_(<16 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15357 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<16 x s32>) = G_FREEZE [[COPY]]358 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[FREEZE]](<16 x s32>)359 %0:_(<16 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15360 %1:_(<16 x s32>) = G_FREEZE %0361 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %1362...363 364---365name: test_freeze_v17s32366body: |367 bb.0:368 369 ; CHECK-LABEL: name: test_freeze_v17s32370 ; CHECK: [[COPY:%[0-9]+]]:_(<16 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15371 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<16 x s32>) = G_FREEZE [[COPY]]372 ; CHECK-NEXT: S_NOP 0, implicit [[FREEZE]](<16 x s32>)373 %0:_(<16 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15374 %1:_(<16 x s32>) = G_FREEZE %0375 S_NOP 0, implicit %1376...377 378---379name: test_freeze_v32s32380body: |381 bb.0:382 383 ; CHECK-LABEL: name: test_freeze_v32s32384 ; CHECK: [[DEF:%[0-9]+]]:_(<32 x s32>) = G_IMPLICIT_DEF385 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<32 x s32>) = G_FREEZE [[DEF]]386 ; CHECK-NEXT: S_NOP 0, implicit [[FREEZE]](<32 x s32>)387 %0:_(<32 x s32>) = G_IMPLICIT_DEF388 %1:_(<32 x s32>) = G_FREEZE %0389 S_NOP 0, implicit %1390...391 392---393name: test_freeze_v33s32394body: |395 bb.0:396 397 ; CHECK-LABEL: name: test_freeze_v33s32398 ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF399 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32), [[DEF]](s32)400 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<32 x s32>) = G_FREEZE [[BUILD_VECTOR]]401 ; CHECK-NEXT: [[FREEZE1:%[0-9]+]]:_(s32) = G_FREEZE [[DEF]]402 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32), [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32), [[UV11:%[0-9]+]]:_(s32), [[UV12:%[0-9]+]]:_(s32), [[UV13:%[0-9]+]]:_(s32), [[UV14:%[0-9]+]]:_(s32), [[UV15:%[0-9]+]]:_(s32), [[UV16:%[0-9]+]]:_(s32), [[UV17:%[0-9]+]]:_(s32), [[UV18:%[0-9]+]]:_(s32), [[UV19:%[0-9]+]]:_(s32), [[UV20:%[0-9]+]]:_(s32), [[UV21:%[0-9]+]]:_(s32), [[UV22:%[0-9]+]]:_(s32), [[UV23:%[0-9]+]]:_(s32), [[UV24:%[0-9]+]]:_(s32), [[UV25:%[0-9]+]]:_(s32), [[UV26:%[0-9]+]]:_(s32), [[UV27:%[0-9]+]]:_(s32), [[UV28:%[0-9]+]]:_(s32), [[UV29:%[0-9]+]]:_(s32), [[UV30:%[0-9]+]]:_(s32), [[UV31:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FREEZE]](<32 x s32>)403 ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<33 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[UV2]](s32), [[UV3]](s32), [[UV4]](s32), [[UV5]](s32), [[UV6]](s32), [[UV7]](s32), [[UV8]](s32), [[UV9]](s32), [[UV10]](s32), [[UV11]](s32), [[UV12]](s32), [[UV13]](s32), [[UV14]](s32), [[UV15]](s32), [[UV16]](s32), [[UV17]](s32), [[UV18]](s32), [[UV19]](s32), [[UV20]](s32), [[UV21]](s32), [[UV22]](s32), [[UV23]](s32), [[UV24]](s32), [[UV25]](s32), [[UV26]](s32), [[UV27]](s32), [[UV28]](s32), [[UV29]](s32), [[UV30]](s32), [[UV31]](s32), [[FREEZE1]](s32)404 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR1]](<33 x s32>)405 %0:_(<33 x s32>) = G_IMPLICIT_DEF406 %1:_(<33 x s32>) = G_FREEZE %0407 S_NOP 0, implicit %1408...409 410---411name: test_freeze_v64s32412body: |413 bb.0:414 415 ; CHECK-LABEL: name: test_freeze_v64s32416 ; CHECK: [[DEF:%[0-9]+]]:_(<32 x s32>) = G_IMPLICIT_DEF417 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<32 x s32>) = G_FREEZE [[DEF]]418 ; CHECK-NEXT: [[FREEZE1:%[0-9]+]]:_(<32 x s32>) = G_FREEZE [[DEF]]419 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<64 x s32>) = G_CONCAT_VECTORS [[FREEZE]](<32 x s32>), [[FREEZE1]](<32 x s32>)420 ; CHECK-NEXT: S_NOP 0, implicit [[CONCAT_VECTORS]](<64 x s32>)421 %0:_(<64 x s32>) = G_IMPLICIT_DEF422 %1:_(<64 x s32>) = G_FREEZE %0423 S_NOP 0, implicit %1424...425 426---427name: test_freeze_v2s1428body: |429 bb.0:430 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3431 432 ; CHECK-LABEL: name: test_freeze_v2s1433 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3434 ; CHECK-NEXT: {{ $}}435 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1436 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3437 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)438 ; CHECK-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)439 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV2]]440 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV3]]441 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1)442 ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1)443 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[ANYEXT]](s32), [[ANYEXT1]](s32)444 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<2 x s32>) = G_FREEZE [[BUILD_VECTOR]]445 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](<2 x s32>)446 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1447 %1:_(<2 x s32>) = COPY $vgpr2_vgpr3448 %2:_(<2 x s1>) = G_ICMP intpred(ne), %0, %1449 %3:_(<2 x s1>) = G_FREEZE %2450 %4:_(<2 x s32>) = G_ANYEXT %3451 $vgpr0_vgpr1 = COPY %4452...453 454---455name: test_freeze_v3s1456body: |457 bb.0:458 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5459 460 ; CHECK-LABEL: name: test_freeze_v3s1461 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5462 ; CHECK-NEXT: {{ $}}463 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2464 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr3_vgpr4_vgpr5465 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)466 ; CHECK-NEXT: [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>)467 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV3]]468 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV4]]469 ; CHECK-NEXT: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV2]](s32), [[UV5]]470 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1)471 ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1)472 ; CHECK-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP2]](s1)473 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[ANYEXT]](s32), [[ANYEXT1]](s32), [[ANYEXT2]](s32)474 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<3 x s32>) = G_FREEZE [[BUILD_VECTOR]]475 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[FREEZE]](<3 x s32>)476 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2477 %1:_(<3 x s32>) = COPY $vgpr3_vgpr4_vgpr5478 %2:_(<3 x s1>) = G_ICMP intpred(ne), %0, %1479 %3:_(<3 x s1>) = G_FREEZE %2480 %4:_(<3 x s32>) = G_ANYEXT %3481 $vgpr0_vgpr1_vgpr2 = COPY %4482...483 484---485name: test_freeze_v2s8486body: |487 bb.0:488 489 ; CHECK-LABEL: name: test_freeze_v2s8490 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1491 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<2 x s32>) = G_FREEZE [[COPY]]492 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](<2 x s32>)493 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1494 %1:_(<2 x s8>) = G_TRUNC %0495 %2:_(<2 x s8>) = G_FREEZE %1496 %3:_(<2 x s32>) = G_ANYEXT %2497 $vgpr0_vgpr1 = COPY %3498...499 500---501name: test_freeze_v3s8502body: |503 bb.0:504 505 ; CHECK-LABEL: name: test_freeze_v3s8506 ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2507 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)508 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF509 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[UV2]](s32), [[DEF]](s32)510 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<4 x s32>) = G_FREEZE [[BUILD_VECTOR]]511 ; CHECK-NEXT: [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FREEZE]](<4 x s32>)512 ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV3]](s32), [[UV4]](s32), [[UV5]](s32)513 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR1]](<3 x s32>)514 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2515 %1:_(<3 x s8>) = G_TRUNC %0516 %2:_(<3 x s8>) = G_FREEZE %1517 %3:_(<3 x s32>) = G_ANYEXT %2518 $vgpr0_vgpr1_vgpr2 = COPY %3519...520 521---522name: test_freeze_v2s16523body: |524 bb.0:525 526 ; CHECK-LABEL: name: test_freeze_v2s16527 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0528 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<2 x s16>) = G_FREEZE [[COPY]]529 ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](<2 x s16>)530 %0:_(<2 x s16>) = COPY $vgpr0531 %1:_(<2 x s16>) = G_FREEZE %0532 $vgpr0 = COPY %1533...534 535---536name: test_freeze_v3s16537body: |538 bb.0:539 540 ; CHECK-LABEL: name: test_freeze_v3s16541 ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2542 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)543 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535544 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C]]545 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C]]546 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16547 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)548 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]549 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)550 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[UV2]], [[C]]551 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 0552 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[C2]], [[C1]](s32)553 ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[AND2]], [[SHL1]]554 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)555 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BITCAST1]](<2 x s16>)556 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<4 x s16>) = G_FREEZE [[CONCAT_VECTORS]]557 ; CHECK-NEXT: [[UV3:%[0-9]+]]:_(<2 x s16>), [[UV4:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[FREEZE]](<4 x s16>)558 ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[UV3]](<2 x s16>)559 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C1]](s32)560 ; CHECK-NEXT: [[BITCAST3:%[0-9]+]]:_(s32) = G_BITCAST [[UV4]](<2 x s16>)561 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[BITCAST2]](s32), [[LSHR]](s32), [[BITCAST3]](s32)562 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)563 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2564 %1:_(<3 x s16>) = G_TRUNC %0565 %2:_(<3 x s16>) = G_FREEZE %1566 %3:_(<3 x s32>) = G_ANYEXT %2567 $vgpr0_vgpr1_vgpr2 = COPY %3568...569 570---571name: test_freeze_v4s16572body: |573 bb.0:574 575 ; CHECK-LABEL: name: test_freeze_v4s16576 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1577 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<4 x s16>) = G_FREEZE [[COPY]]578 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](<4 x s16>)579 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1580 %1:_(<4 x s16>) = G_FREEZE %0581 $vgpr0_vgpr1 = COPY %1582...583 584---585name: test_freeze_v5s16586body: |587 bb.0:588 589 ; CHECK-LABEL: name: test_freeze_v5s16590 ; CHECK: [[COPY:%[0-9]+]]:_(<5 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4591 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<5 x s32>)592 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535593 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C]]594 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C]]595 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16596 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)597 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]598 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)599 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[UV2]], [[C]]600 ; CHECK-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[UV3]], [[C]]601 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C1]](s32)602 ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[AND2]], [[SHL1]]603 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)604 ; CHECK-NEXT: [[AND4:%[0-9]+]]:_(s32) = G_AND [[UV4]], [[C]]605 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 0606 ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[C2]], [[C1]](s32)607 ; CHECK-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[AND4]], [[SHL2]]608 ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR2]](s32)609 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BITCAST1]](<2 x s16>), [[BITCAST2]](<2 x s16>)610 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<6 x s16>) = G_FREEZE [[CONCAT_VECTORS]]611 ; CHECK-NEXT: [[UV5:%[0-9]+]]:_(<2 x s16>), [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[FREEZE]](<6 x s16>)612 ; CHECK-NEXT: [[BITCAST3:%[0-9]+]]:_(s32) = G_BITCAST [[UV5]](<2 x s16>)613 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST3]], [[C1]](s32)614 ; CHECK-NEXT: [[BITCAST4:%[0-9]+]]:_(s32) = G_BITCAST [[UV6]](<2 x s16>)615 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST4]], [[C1]](s32)616 ; CHECK-NEXT: [[BITCAST5:%[0-9]+]]:_(s32) = G_BITCAST [[UV7]](<2 x s16>)617 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s32>) = G_BUILD_VECTOR [[BITCAST3]](s32), [[LSHR]](s32), [[BITCAST4]](s32), [[LSHR1]](s32), [[BITCAST5]](s32)618 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY [[BUILD_VECTOR]](<5 x s32>)619 %0:_(<5 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4620 %1:_(<5 x s16>) = G_TRUNC %0621 %2:_(<5 x s16>) = G_FREEZE %1622 %3:_(<5 x s32>) = G_ANYEXT %2623 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY %3624...625 626---627name: test_freeze_v6s16628body: |629 bb.0:630 631 ; CHECK-LABEL: name: test_freeze_v6s16632 ; CHECK: [[COPY:%[0-9]+]]:_(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr2633 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<6 x s16>) = G_FREEZE [[COPY]]634 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[FREEZE]](<6 x s16>)635 %0:_(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr2636 %1:_(<6 x s16>) = G_FREEZE %0637 $vgpr0_vgpr1_vgpr2 = COPY %1638...639 640---641name: test_freeze_v8s16642body: |643 bb.0:644 645 ; CHECK-LABEL: name: test_freeze_v8s16646 ; CHECK: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3647 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<8 x s16>) = G_FREEZE [[COPY]]648 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FREEZE]](<8 x s16>)649 %0:_(<8 x s16>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3650 %1:_(<8 x s16>) = G_FREEZE %0651 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1652...653 654---655name: test_freeze_v2s64656body: |657 bb.0:658 659 ; CHECK-LABEL: name: test_freeze_v2s64660 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3661 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<2 x s64>) = G_FREEZE [[COPY]]662 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FREEZE]](<2 x s64>)663 %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3664 %1:_(<2 x s64>) = G_FREEZE %0665 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1666...667 668---669name: test_freeze_v4s8670body: |671 bb.0:672 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3673 674 ; CHECK-LABEL: name: test_freeze_v4s8675 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3676 ; CHECK-NEXT: {{ $}}677 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0678 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1679 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2680 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3681 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)682 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<4 x s32>) = G_FREEZE [[BUILD_VECTOR]]683 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FREEZE]](<4 x s32>)684 ; CHECK-NEXT: S_ENDPGM 0, implicit [[UV]](s32), implicit [[UV1]](s32), implicit [[UV2]](s32), implicit [[UV3]](s32)685 %0:_(s32) = COPY $vgpr0686 %1:_(s32) = COPY $vgpr1687 %2:_(s32) = COPY $vgpr2688 %3:_(s32) = COPY $vgpr3689 %4:_(s8) = G_TRUNC %0690 %5:_(s8) = G_TRUNC %1691 %6:_(s8) = G_TRUNC %2692 %7:_(s8) = G_TRUNC %3693 %8:_(<4 x s8>) = G_BUILD_VECTOR %4, %5, %6, %7694 %9:_(<4 x s8>) = G_FREEZE %8695 %10:_(s8), %11:_(s8), %12:_(s8), %13:_(s8) = G_UNMERGE_VALUES %9696 %14:_(s32) = G_ANYEXT %10697 %15:_(s32) = G_ANYEXT %11698 %16:_(s32) = G_ANYEXT %12699 %17:_(s32) = G_ANYEXT %13700 S_ENDPGM 0, implicit %14, implicit %15, implicit %16, implicit %17701...702 703---704name: test_freeze_p0705body: |706 bb.0:707 708 ; CHECK-LABEL: name: test_freeze_p0709 ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1710 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(p0) = G_FREEZE [[COPY]]711 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](p0)712 %0:_(p0) = COPY $vgpr0_vgpr1713 %1:_(p0) = G_FREEZE %0714 $vgpr0_vgpr1 = COPY %1715...716 717---718name: test_freeze_p1719body: |720 bb.0:721 722 ; CHECK-LABEL: name: test_freeze_p1723 ; CHECK: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1724 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(p1) = G_FREEZE [[COPY]]725 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](p1)726 %0:_(p1) = COPY $vgpr0_vgpr1727 %1:_(p1) = G_FREEZE %0728 $vgpr0_vgpr1 = COPY %1729...730 731---732name: test_freeze_p2733body: |734 bb.0:735 736 ; CHECK-LABEL: name: test_freeze_p2737 ; CHECK: [[COPY:%[0-9]+]]:_(p2) = COPY $vgpr0738 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(p2) = G_FREEZE [[COPY]]739 ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](p2)740 %0:_(p2) = COPY $vgpr0741 %1:_(p2) = G_FREEZE %0742 $vgpr0 = COPY %1743...744 745---746name: test_freeze_p3747body: |748 bb.0:749 750 ; CHECK-LABEL: name: test_freeze_p3751 ; CHECK: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0752 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(p3) = G_FREEZE [[COPY]]753 ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](p3)754 %0:_(p3) = COPY $vgpr0755 %1:_(p3) = G_FREEZE %0756 $vgpr0 = COPY %1757...758 759---760name: test_freeze_p4761body: |762 bb.0:763 764 ; CHECK-LABEL: name: test_freeze_p4765 ; CHECK: [[COPY:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1766 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(p4) = G_FREEZE [[COPY]]767 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](p4)768 %0:_(p4) = COPY $vgpr0_vgpr1769 %1:_(p4) = G_FREEZE %0770 $vgpr0_vgpr1 = COPY %1771...772 773---774name: test_freeze_p5775body: |776 bb.0:777 778 ; CHECK-LABEL: name: test_freeze_p5779 ; CHECK: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0780 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(p5) = G_FREEZE [[COPY]]781 ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](p5)782 %0:_(p5) = COPY $vgpr0783 %1:_(p5) = G_FREEZE %0784 $vgpr0 = COPY %1785...786 787---788name: test_freeze_p999789body: |790 bb.0:791 792 ; CHECK-LABEL: name: test_freeze_p999793 ; CHECK: [[COPY:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1794 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(p999) = G_FREEZE [[COPY]]795 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](p999)796 %0:_(p999) = COPY $vgpr0_vgpr1797 %1:_(p999) = G_FREEZE %0798 $vgpr0_vgpr1 = COPY %1799 800...801 802---803name: test_freeze_v2s1024804body: |805 bb.0:806 807 ; CHECK-LABEL: name: test_freeze_v2s1024808 ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s1024>) = G_IMPLICIT_DEF809 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<2 x s1024>) = G_FREEZE [[DEF]]810 ; CHECK-NEXT: S_NOP 0, implicit [[FREEZE]](<2 x s1024>)811 %0:_(<2 x s1024>) = G_IMPLICIT_DEF812 %1:_(<2 x s1024>) = G_FREEZE %0813 S_NOP 0, implicit %1814...815 816---817 818name: test_freeze_v3s1024819body: |820 bb.0:821 822 ; CHECK-LABEL: name: test_freeze_v3s1024823 ; CHECK: [[DEF:%[0-9]+]]:_(<3 x s1024>) = G_IMPLICIT_DEF824 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<3 x s1024>) = G_FREEZE [[DEF]]825 ; CHECK-NEXT: S_NOP 0, implicit [[FREEZE]](<3 x s1024>)826 %0:_(<3 x s1024>) = G_IMPLICIT_DEF827 %1:_(<3 x s1024>) = G_FREEZE %0828 S_NOP 0, implicit %1829...830