269 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass='amdgpu-regbankselect,amdgpu-regbanklegalize' -o - %s | FileCheck %s3 4---5name: umax_s32_ss6legalized: true7 8body: |9 bb.0:10 liveins: $sgpr0, $sgpr111 12 ; CHECK-LABEL: name: umax_s32_ss13 ; CHECK: liveins: $sgpr0, $sgpr114 ; CHECK-NEXT: {{ $}}15 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr016 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr117 ; CHECK-NEXT: [[UMAX:%[0-9]+]]:sgpr(s32) = G_UMAX [[COPY]], [[COPY1]]18 ; CHECK-NEXT: $sgpr0 = COPY [[UMAX]](s32)19 %0:_(s32) = COPY $sgpr020 %1:_(s32) = COPY $sgpr121 %2:_(s32) = G_UMAX %0, %122 $sgpr0 = COPY %223...24 25---26name: umax_s32_sv27legalized: true28 29body: |30 bb.0:31 liveins: $sgpr0, $vgpr032 33 ; CHECK-LABEL: name: umax_s32_sv34 ; CHECK: liveins: $sgpr0, $vgpr035 ; CHECK-NEXT: {{ $}}36 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr037 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr038 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)39 ; CHECK-NEXT: [[UMAX:%[0-9]+]]:vgpr(s32) = G_UMAX [[COPY2]], [[COPY1]]40 ; CHECK-NEXT: $vgpr0 = COPY [[UMAX]](s32)41 %0:_(s32) = COPY $sgpr042 %1:_(s32) = COPY $vgpr043 %2:_(s32) = G_UMAX %0, %144 $vgpr0 = COPY %245...46 47---48name: umax_s32_vs49legalized: true50 51body: |52 bb.0:53 liveins: $sgpr0, $vgpr054 55 ; CHECK-LABEL: name: umax_s32_vs56 ; CHECK: liveins: $sgpr0, $vgpr057 ; CHECK-NEXT: {{ $}}58 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr059 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr060 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)61 ; CHECK-NEXT: [[UMAX:%[0-9]+]]:vgpr(s32) = G_UMAX [[COPY]], [[COPY2]]62 ; CHECK-NEXT: $vgpr0 = COPY [[UMAX]](s32)63 %0:_(s32) = COPY $vgpr064 %1:_(s32) = COPY $sgpr065 %2:_(s32) = G_UMAX %0, %166 $vgpr0 = COPY %267...68 69---70name: umax_s32_vv71legalized: true72 73body: |74 bb.0:75 liveins: $vgpr0, $vgpr176 77 ; CHECK-LABEL: name: umax_s32_vv78 ; CHECK: liveins: $vgpr0, $vgpr179 ; CHECK-NEXT: {{ $}}80 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr081 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr182 ; CHECK-NEXT: [[UMAX:%[0-9]+]]:vgpr(s32) = G_UMAX [[COPY]], [[COPY1]]83 ; CHECK-NEXT: $vgpr0 = COPY [[UMAX]](s32)84 %0:_(s32) = COPY $vgpr085 %1:_(s32) = COPY $vgpr186 %2:_(s32) = G_UMAX %0, %187 $vgpr0 = COPY %288...89 90# FIXME: This should use VGPR instruction91---92name: umax_s32_ss_vgpr_use93legalized: true94 95body: |96 bb.0:97 liveins: $sgpr0, $sgpr198 99 ; CHECK-LABEL: name: umax_s32_ss_vgpr_use100 ; CHECK: liveins: $sgpr0, $sgpr1101 ; CHECK-NEXT: {{ $}}102 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0103 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1104 ; CHECK-NEXT: [[UMAX:%[0-9]+]]:sgpr(s32) = G_UMAX [[COPY]], [[COPY1]]105 ; CHECK-NEXT: $vgpr0 = COPY [[UMAX]](s32)106 %0:_(s32) = COPY $sgpr0107 %1:_(s32) = COPY $sgpr1108 %2:_(s32) = G_UMAX %0, %1109 $vgpr0 = COPY %2110...111 112---113name: umax_s16_ss114legalized: true115 116body: |117 bb.0:118 liveins: $sgpr0, $sgpr1119 120 ; CHECK-LABEL: name: umax_s16_ss121 ; CHECK: liveins: $sgpr0, $sgpr1122 ; CHECK-NEXT: {{ $}}123 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0124 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1125 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)126 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY1]](s32)127 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s16)128 ; CHECK-NEXT: [[ZEXT1:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s16)129 ; CHECK-NEXT: [[UMAX:%[0-9]+]]:sgpr(s32) = G_UMAX [[ZEXT]], [[ZEXT1]]130 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s16) = G_TRUNC [[UMAX]](s32)131 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC2]](s16)132 ; CHECK-NEXT: $sgpr0 = COPY [[ANYEXT]](s32)133 %0:_(s32) = COPY $sgpr0134 %1:_(s32) = COPY $sgpr1135 %2:_(s16) = G_TRUNC %0136 %3:_(s16) = G_TRUNC %1137 %4:_(s16) = G_UMAX %2, %3138 %5:_(s32) = G_ANYEXT %4139 $sgpr0 = COPY %5140 141...142 143---144name: umax_s16_ss_vgpr_use145legalized: true146 147body: |148 bb.0:149 liveins: $sgpr0, $sgpr1150 151 ; CHECK-LABEL: name: umax_s16_ss_vgpr_use152 ; CHECK: liveins: $sgpr0, $sgpr1153 ; CHECK-NEXT: {{ $}}154 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0155 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1156 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)157 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY1]](s32)158 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s16)159 ; CHECK-NEXT: [[ZEXT1:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s16)160 ; CHECK-NEXT: [[UMAX:%[0-9]+]]:sgpr(s32) = G_UMAX [[ZEXT]], [[ZEXT1]]161 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s16) = G_TRUNC [[UMAX]](s32)162 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC2]](s16)163 ; CHECK-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)164 %0:_(s32) = COPY $sgpr0165 %1:_(s32) = COPY $sgpr1166 %2:_(s16) = G_TRUNC %0167 %3:_(s16) = G_TRUNC %1168 %4:_(s16) = G_UMAX %2, %3169 %5:_(s32) = G_ANYEXT %4170 $vgpr0 = COPY %5171 172...173 174---175name: umax_v2s16_ss176legalized: true177 178body: |179 bb.0:180 liveins: $sgpr0, $sgpr1181 182 ; CHECK-LABEL: name: umax_v2s16_ss183 ; CHECK: liveins: $sgpr0, $sgpr1184 ; CHECK-NEXT: {{ $}}185 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0186 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr1187 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:sgpr(s32) = G_BITCAST [[COPY]](<2 x s16>)188 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535189 ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[BITCAST]], [[C]]190 ; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 16191 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:sgpr(s32) = G_LSHR [[BITCAST]], [[C1]](s32)192 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:sgpr(s32) = G_BITCAST [[COPY1]](<2 x s16>)193 ; CHECK-NEXT: [[AND1:%[0-9]+]]:sgpr(s32) = G_AND [[BITCAST1]], [[C]]194 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:sgpr(s32) = G_LSHR [[BITCAST1]], [[C1]](s32)195 ; CHECK-NEXT: [[UMAX:%[0-9]+]]:sgpr(s32) = G_UMAX [[AND]], [[AND1]]196 ; CHECK-NEXT: [[UMAX1:%[0-9]+]]:sgpr(s32) = G_UMAX [[LSHR]], [[LSHR1]]197 ; CHECK-NEXT: [[BUILD_VECTOR_TRUNC:%[0-9]+]]:sgpr(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[UMAX]](s32), [[UMAX1]](s32)198 ; CHECK-NEXT: $sgpr0 = COPY [[BUILD_VECTOR_TRUNC]](<2 x s16>)199 %0:_(<2 x s16>) = COPY $sgpr0200 %1:_(<2 x s16>) = COPY $sgpr1201 %2:_(<2 x s16>) = G_UMAX %0, %1202 $sgpr0 = COPY %2203...204 205---206name: umax_v2s16_sv207legalized: true208 209body: |210 bb.0:211 liveins: $sgpr0, $vgpr0212 213 ; CHECK-LABEL: name: umax_v2s16_sv214 ; CHECK: liveins: $sgpr0, $vgpr0215 ; CHECK-NEXT: {{ $}}216 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0217 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0218 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY]](<2 x s16>)219 ; CHECK-NEXT: [[UMAX:%[0-9]+]]:vgpr(<2 x s16>) = G_UMAX [[COPY2]], [[COPY1]]220 ; CHECK-NEXT: $vgpr0 = COPY [[UMAX]](<2 x s16>)221 %0:_(<2 x s16>) = COPY $sgpr0222 %1:_(<2 x s16>) = COPY $vgpr0223 %2:_(<2 x s16>) = G_UMAX %0, %1224 $vgpr0 = COPY %2225...226 227---228name: umax_v2s16_vs229legalized: true230 231body: |232 bb.0:233 liveins: $sgpr0, $vgpr0234 235 ; CHECK-LABEL: name: umax_v2s16_vs236 ; CHECK: liveins: $sgpr0, $vgpr0237 ; CHECK-NEXT: {{ $}}238 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0239 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0240 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY1]](<2 x s16>)241 ; CHECK-NEXT: [[UMAX:%[0-9]+]]:vgpr(<2 x s16>) = G_UMAX [[COPY]], [[COPY2]]242 ; CHECK-NEXT: $vgpr0 = COPY [[UMAX]](<2 x s16>)243 %0:_(<2 x s16>) = COPY $vgpr0244 %1:_(<2 x s16>) = COPY $sgpr0245 %2:_(<2 x s16>) = G_UMAX %0, %1246 $vgpr0 = COPY %2247...248 249---250name: umax_v2s16_vv251legalized: true252 253body: |254 bb.0:255 liveins: $vgpr0, $vgpr1256 257 ; CHECK-LABEL: name: umax_v2s16_vv258 ; CHECK: liveins: $vgpr0, $vgpr1259 ; CHECK-NEXT: {{ $}}260 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0261 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr1262 ; CHECK-NEXT: [[UMAX:%[0-9]+]]:vgpr(<2 x s16>) = G_UMAX [[COPY]], [[COPY1]]263 ; CHECK-NEXT: $vgpr0 = COPY [[UMAX]](<2 x s16>)264 %0:_(<2 x s16>) = COPY $vgpr0265 %1:_(<2 x s16>) = COPY $vgpr1266 %2:_(<2 x s16>) = G_UMAX %0, %1267 $vgpr0 = COPY %2268...269