306 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: ctpop_s8_s86body: |7 bb.0:8 liveins: $vgpr09 ; CHECK-LABEL: name: ctpop_s8_s810 ; CHECK: liveins: $vgpr011 ; CHECK-NEXT: {{ $}}12 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr013 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 25514 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]15 ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[AND]](s32)16 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[CTPOP]](s32)17 ; CHECK-NEXT: $vgpr0 = COPY [[COPY1]](s32)18 %0:_(s32) = COPY $vgpr019 %1:_(s8) = G_TRUNC %020 %2:_(s8) = G_CTPOP %121 %3:_(s32) = G_ZEXT %222 $vgpr0 = COPY %323...24 25---26name: ctpop_s9_s927body: |28 bb.0:29 liveins: $vgpr030 ; CHECK-LABEL: name: ctpop_s9_s931 ; CHECK: liveins: $vgpr032 ; CHECK-NEXT: {{ $}}33 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr034 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 51135 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]36 ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[AND]](s32)37 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[CTPOP]](s32)38 ; CHECK-NEXT: $vgpr0 = COPY [[COPY1]](s32)39 %0:_(s32) = COPY $vgpr040 %1:_(s9) = G_TRUNC %041 %2:_(s9) = G_CTPOP %142 %3:_(s32) = G_ZEXT %243 $vgpr0 = COPY %344...45 46---47name: ctpop_s32_s3248 49body: |50 bb.0:51 liveins: $vgpr052 ; CHECK-LABEL: name: ctpop_s32_s3253 ; CHECK: liveins: $vgpr054 ; CHECK-NEXT: {{ $}}55 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr056 ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[COPY]](s32)57 ; CHECK-NEXT: $vgpr0 = COPY [[CTPOP]](s32)58 %0:_(s32) = COPY $vgpr059 %1:_(s32) = G_CTPOP %060 $vgpr0 = COPY %161...62 63---64name: ctpop_s32_s6465 66body: |67 bb.0:68 liveins: $vgpr0_vgpr169 ; CHECK-LABEL: name: ctpop_s32_s6470 ; CHECK: liveins: $vgpr0_vgpr171 ; CHECK-NEXT: {{ $}}72 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr173 ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[COPY]](s64)74 ; CHECK-NEXT: $vgpr0 = COPY [[CTPOP]](s32)75 %0:_(s64) = COPY $vgpr0_vgpr176 %1:_(s32) = G_CTPOP %077 $vgpr0 = COPY %178...79 80---81name: ctpop_s64_s6482 83body: |84 bb.0:85 liveins: $vgpr0_vgpr186 ; CHECK-LABEL: name: ctpop_s64_s6487 ; CHECK: liveins: $vgpr0_vgpr188 ; CHECK-NEXT: {{ $}}89 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr190 ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[COPY]](s64)91 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[CTPOP]](s32)92 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)93 %0:_(s64) = COPY $vgpr0_vgpr194 %1:_(s64) = G_CTPOP %095 $vgpr0_vgpr1 = COPY %196...97 98---99name: ctpop_s16_s32100 101body: |102 bb.0:103 liveins: $vgpr0104 ; CHECK-LABEL: name: ctpop_s16_s32105 ; CHECK: liveins: $vgpr0106 ; CHECK-NEXT: {{ $}}107 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0108 ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[COPY]](s32)109 ; CHECK-NEXT: $vgpr0 = COPY [[CTPOP]](s32)110 %0:_(s32) = COPY $vgpr0111 %1:_(s16) = G_CTPOP %0112 %2:_(s32) = G_ZEXT %1113 $vgpr0 = COPY %2114...115 116---117name: ctpop_s16_s16118 119body: |120 bb.0:121 liveins: $vgpr0122 ; CHECK-LABEL: name: ctpop_s16_s16123 ; CHECK: liveins: $vgpr0124 ; CHECK-NEXT: {{ $}}125 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0126 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535127 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]128 ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[AND]](s32)129 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[CTPOP]](s32)130 ; CHECK-NEXT: $vgpr0 = COPY [[COPY1]](s32)131 %0:_(s32) = COPY $vgpr0132 %1:_(s16) = G_TRUNC %0133 %2:_(s16) = G_CTPOP %1134 %3:_(s32) = G_ZEXT %2135 $vgpr0 = COPY %3136...137 138---139name: ctpop_v2s32_v2s32140 141body: |142 bb.0:143 liveins: $vgpr0_vgpr1144 ; CHECK-LABEL: name: ctpop_v2s32_v2s32145 ; CHECK: liveins: $vgpr0_vgpr1146 ; CHECK-NEXT: {{ $}}147 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1148 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)149 ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[UV]](s32)150 ; CHECK-NEXT: [[CTPOP1:%[0-9]+]]:_(s32) = G_CTPOP [[UV1]](s32)151 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[CTPOP]](s32), [[CTPOP1]](s32)152 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)153 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1154 %1:_(<2 x s32>) = G_CTPOP %0155 $vgpr0_vgpr1 = COPY %1156...157 158---159name: ctpop_v2s32_v2s64160 161body: |162 bb.0:163 liveins: $vgpr0_vgpr1_vgpr2_vgpr3164 ; CHECK-LABEL: name: ctpop_v2s32_v2s64165 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3166 ; CHECK-NEXT: {{ $}}167 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3168 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)169 ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[UV]](s64)170 ; CHECK-NEXT: [[CTPOP1:%[0-9]+]]:_(s32) = G_CTPOP [[UV1]](s64)171 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[CTPOP]](s32), [[CTPOP1]](s32)172 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)173 %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3174 %1:_(<2 x s32>) = G_CTPOP %0175 $vgpr0_vgpr1 = COPY %1176...177 178---179name: ctpop_v2s16_v2s16180 181body: |182 bb.0:183 liveins: $vgpr0184 ; CHECK-LABEL: name: ctpop_v2s16_v2s16185 ; CHECK: liveins: $vgpr0186 ; CHECK-NEXT: {{ $}}187 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0188 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)189 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16190 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)191 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535192 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]193 ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[AND]](s32)194 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[CTPOP]](s32)195 ; CHECK-NEXT: [[CTPOP1:%[0-9]+]]:_(s32) = G_CTPOP [[LSHR]](s32)196 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[CTPOP1]](s32)197 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY2]], [[C]](s32)198 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[COPY1]], [[SHL]]199 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)200 ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST1]](<2 x s16>)201 %0:_(<2 x s16>) = COPY $vgpr0202 %1:_(<2 x s16>) = G_CTPOP %0203 $vgpr0 = COPY %1204...205 206---207name: ctpop_s7_s7208 209body: |210 bb.0:211 liveins: $vgpr0212 213 ; CHECK-LABEL: name: ctpop_s7_s7214 ; CHECK: liveins: $vgpr0215 ; CHECK-NEXT: {{ $}}216 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0217 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 127218 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]219 ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[AND]](s32)220 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[CTPOP]](s32)221 ; CHECK-NEXT: $vgpr0 = COPY [[COPY1]](s32)222 %0:_(s32) = COPY $vgpr0223 %1:_(s7) = G_TRUNC %0224 %2:_(s7) = G_CTPOP %1225 %3:_(s32) = G_ZEXT %2226 $vgpr0 = COPY %3227...228 229---230name: ctpop_s33_s33231 232body: |233 bb.0:234 liveins: $vgpr0_vgpr1235 236 ; CHECK-LABEL: name: ctpop_s33_s33237 ; CHECK: liveins: $vgpr0_vgpr1238 ; CHECK-NEXT: {{ $}}239 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1240 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 8589934591241 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]242 ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[AND]](s64)243 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[CTPOP]](s32)244 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)245 %0:_(s64) = COPY $vgpr0_vgpr1246 %1:_(s33) = G_TRUNC %0247 %2:_(s33) = G_CTPOP %1248 %3:_(s64) = G_ANYEXT %2249 $vgpr0_vgpr1 = COPY %3250...251 252---253name: ctpop_s65_s65254body: |255 bb.0:256 liveins: $vgpr0_vgpr1_vgpr2257 ; CHECK-LABEL: name: ctpop_s65_s65258 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2259 ; CHECK-NEXT: {{ $}}260 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2261 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s96)262 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF263 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV]](s32), [[UV1]](s32)264 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV2]](s32), [[DEF]](s32)265 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1266 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1267 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[MV]], [[C]]268 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[MV1]], [[C1]]269 ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[AND]](s64)270 ; CHECK-NEXT: [[CTPOP1:%[0-9]+]]:_(s32) = G_CTPOP [[AND1]](s64)271 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[CTPOP1]], [[CTPOP]]272 ; CHECK-NEXT: $vgpr0 = COPY [[ADD]](s32)273 %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2274 %1:_(s65) = G_TRUNC %0275 %2:_(s65) = G_CTPOP %1276 %3:_(s32) = G_TRUNC %2277 $vgpr0 = COPY %3278...279 280---281name: ctpop_s32_s65282body: |283 bb.0:284 liveins: $vgpr0_vgpr1_vgpr2285 ; CHECK-LABEL: name: ctpop_s32_s65286 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2287 ; CHECK-NEXT: {{ $}}288 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2289 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s96)290 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF291 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV]](s32), [[UV1]](s32)292 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV2]](s32), [[DEF]](s32)293 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1294 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1295 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[MV]], [[C]]296 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[MV1]], [[C1]]297 ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[AND]](s64)298 ; CHECK-NEXT: [[CTPOP1:%[0-9]+]]:_(s32) = G_CTPOP [[AND1]](s64)299 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[CTPOP1]], [[CTPOP]]300 ; CHECK-NEXT: $vgpr0 = COPY [[ADD]](s32)301 %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2302 %1:_(s65) = G_TRUNC %0303 %2:_(s32) = G_CTPOP %1304 $vgpr0 = COPY %2305...306