210 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -O0 -run-pass=legalizer %s -o - | FileCheck %s3 4---5name: cttz_zero_undef_s32_s326 7body: |8 bb.0:9 liveins: $vgpr010 ; CHECK-LABEL: name: cttz_zero_undef_s32_s3211 ; CHECK: liveins: $vgpr012 ; CHECK-NEXT: {{ $}}13 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr014 ; CHECK-NEXT: [[CTTZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTTZ_ZERO_UNDEF [[COPY]](s32)15 ; CHECK-NEXT: $vgpr0 = COPY [[CTTZ_ZERO_UNDEF]](s32)16 %0:_(s32) = COPY $vgpr017 %1:_(s32) = G_CTTZ_ZERO_UNDEF %018 $vgpr0 = COPY %119...20 21---22name: cttz_zero_undef_s32_s6423 24body: |25 bb.0:26 liveins: $vgpr0_vgpr127 ; CHECK-LABEL: name: cttz_zero_undef_s32_s6428 ; CHECK: liveins: $vgpr0_vgpr129 ; CHECK-NEXT: {{ $}}30 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr131 ; CHECK-NEXT: [[CTTZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTTZ_ZERO_UNDEF [[COPY]](s64)32 ; CHECK-NEXT: $vgpr0 = COPY [[CTTZ_ZERO_UNDEF]](s32)33 %0:_(s64) = COPY $vgpr0_vgpr134 %1:_(s32) = G_CTTZ_ZERO_UNDEF %035 $vgpr0 = COPY %136...37 38---39name: cttz_zero_undef_s64_s6440 41body: |42 bb.0:43 liveins: $vgpr0_vgpr144 ; CHECK-LABEL: name: cttz_zero_undef_s64_s6445 ; CHECK: liveins: $vgpr0_vgpr146 ; CHECK-NEXT: {{ $}}47 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr148 ; CHECK-NEXT: [[CTTZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTTZ_ZERO_UNDEF [[COPY]](s64)49 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[CTTZ_ZERO_UNDEF]](s32)50 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)51 %0:_(s64) = COPY $vgpr0_vgpr152 %1:_(s64) = G_CTTZ_ZERO_UNDEF %053 $vgpr0_vgpr1 = COPY %154...55 56---57name: cttz_zero_undef_s16_s3258 59body: |60 bb.0:61 liveins: $vgpr062 ; CHECK-LABEL: name: cttz_zero_undef_s16_s3263 ; CHECK: liveins: $vgpr064 ; CHECK-NEXT: {{ $}}65 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr066 ; CHECK-NEXT: [[CTTZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTTZ_ZERO_UNDEF [[COPY]](s32)67 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 6553568 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[CTTZ_ZERO_UNDEF]], [[C]]69 ; CHECK-NEXT: $vgpr0 = COPY [[AND]](s32)70 %0:_(s32) = COPY $vgpr071 %1:_(s16) = G_CTTZ_ZERO_UNDEF %072 %2:_(s32) = G_ZEXT %173 $vgpr0 = COPY %274...75 76---77name: cttz_zero_undef_s16_s1678 79body: |80 bb.0:81 liveins: $vgpr082 ; CHECK-LABEL: name: cttz_zero_undef_s16_s1683 ; CHECK: liveins: $vgpr084 ; CHECK-NEXT: {{ $}}85 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr086 ; CHECK-NEXT: [[CTTZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTTZ_ZERO_UNDEF [[COPY]](s32)87 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[CTTZ_ZERO_UNDEF]](s32)88 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 6553589 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]90 ; CHECK-NEXT: $vgpr0 = COPY [[AND]](s32)91 %0:_(s32) = COPY $vgpr092 %1:_(s16) = G_TRUNC %093 %2:_(s16) = G_CTTZ_ZERO_UNDEF %194 %3:_(s32) = G_ZEXT %295 $vgpr0 = COPY %396...97 98---99name: cttz_zero_undef_v2s32_v2s32100 101body: |102 bb.0:103 liveins: $vgpr0_vgpr1104 ; CHECK-LABEL: name: cttz_zero_undef_v2s32_v2s32105 ; CHECK: liveins: $vgpr0_vgpr1106 ; CHECK-NEXT: {{ $}}107 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1108 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)109 ; CHECK-NEXT: [[CTTZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTTZ_ZERO_UNDEF [[UV]](s32)110 ; CHECK-NEXT: [[CTTZ_ZERO_UNDEF1:%[0-9]+]]:_(s32) = G_CTTZ_ZERO_UNDEF [[UV1]](s32)111 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[CTTZ_ZERO_UNDEF]](s32), [[CTTZ_ZERO_UNDEF1]](s32)112 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)113 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1114 %1:_(<2 x s32>) = G_CTTZ_ZERO_UNDEF %0115 $vgpr0_vgpr1 = COPY %1116...117 118---119name: cttz_zero_undef_v2s32_v2s64120 121body: |122 bb.0:123 liveins: $vgpr0_vgpr1_vgpr2_vgpr3124 ; CHECK-LABEL: name: cttz_zero_undef_v2s32_v2s64125 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3126 ; CHECK-NEXT: {{ $}}127 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3128 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)129 ; CHECK-NEXT: [[CTTZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTTZ_ZERO_UNDEF [[UV]](s64)130 ; CHECK-NEXT: [[CTTZ_ZERO_UNDEF1:%[0-9]+]]:_(s32) = G_CTTZ_ZERO_UNDEF [[UV1]](s64)131 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[CTTZ_ZERO_UNDEF]](s32), [[CTTZ_ZERO_UNDEF1]](s32)132 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)133 %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3134 %1:_(<2 x s32>) = G_CTTZ_ZERO_UNDEF %0135 $vgpr0_vgpr1 = COPY %1136...137 138---139name: cttz_zero_undef_v2s16_v2s16140 141body: |142 bb.0:143 liveins: $vgpr0144 ; CHECK-LABEL: name: cttz_zero_undef_v2s16_v2s16145 ; CHECK: liveins: $vgpr0146 ; CHECK-NEXT: {{ $}}147 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0148 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)149 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16150 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)151 ; CHECK-NEXT: [[CTTZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTTZ_ZERO_UNDEF [[BITCAST]](s32)152 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[CTTZ_ZERO_UNDEF]](s32)153 ; CHECK-NEXT: [[CTTZ_ZERO_UNDEF1:%[0-9]+]]:_(s32) = G_CTTZ_ZERO_UNDEF [[LSHR]](s32)154 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[CTTZ_ZERO_UNDEF1]](s32)155 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535156 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]157 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C1]]158 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C]](s32)159 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]160 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)161 ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST1]](<2 x s16>)162 %0:_(<2 x s16>) = COPY $vgpr0163 %1:_(<2 x s16>) = G_CTTZ_ZERO_UNDEF %0164 $vgpr0 = COPY %1165...166 167---168name: cttz_zero_undef_s7_s7169 170body: |171 bb.0:172 liveins: $vgpr0173 174 ; CHECK-LABEL: name: cttz_zero_undef_s7_s7175 ; CHECK: liveins: $vgpr0176 ; CHECK-NEXT: {{ $}}177 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0178 ; CHECK-NEXT: [[CTTZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTTZ_ZERO_UNDEF [[COPY]](s32)179 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[CTTZ_ZERO_UNDEF]](s32)180 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 127181 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]182 ; CHECK-NEXT: $vgpr0 = COPY [[AND]](s32)183 %0:_(s32) = COPY $vgpr0184 %1:_(s7) = G_TRUNC %0185 %2:_(s7) = G_CTTZ_ZERO_UNDEF %1186 %3:_(s32) = G_ZEXT %2187 $vgpr0 = COPY %3188...189 190---191name: cttz_zero_undef_s33_s33192 193body: |194 bb.0:195 liveins: $vgpr0_vgpr1196 197 ; CHECK-LABEL: name: cttz_zero_undef_s33_s33198 ; CHECK: liveins: $vgpr0_vgpr1199 ; CHECK-NEXT: {{ $}}200 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1201 ; CHECK-NEXT: [[CTTZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTTZ_ZERO_UNDEF [[COPY]](s64)202 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[CTTZ_ZERO_UNDEF]](s32)203 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)204 %0:_(s64) = COPY $vgpr0_vgpr1205 %1:_(s33) = G_TRUNC %0206 %2:_(s33) = G_CTTZ_ZERO_UNDEF %1207 %3:_(s64) = G_ANYEXT %2208 $vgpr0_vgpr1 = COPY %3209...210