265 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: smax_s32_ss6legalized: true7 8body: |9 bb.0:10 liveins: $sgpr0, $sgpr111 12 ; CHECK-LABEL: name: smax_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: [[SMAX:%[0-9]+]]:sgpr(s32) = G_SMAX [[COPY]], [[COPY1]]18 %0:_(s32) = COPY $sgpr019 %1:_(s32) = COPY $sgpr120 %2:_(s32) = G_SMAX %0, %121...22 23---24name: smax_s32_sv25legalized: true26 27body: |28 bb.0:29 liveins: $sgpr0, $vgpr030 31 ; CHECK-LABEL: name: smax_s32_sv32 ; CHECK: liveins: $sgpr0, $vgpr033 ; CHECK-NEXT: {{ $}}34 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr035 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr036 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)37 ; CHECK-NEXT: [[SMAX:%[0-9]+]]:vgpr(s32) = G_SMAX [[COPY2]], [[COPY1]]38 %0:_(s32) = COPY $sgpr039 %1:_(s32) = COPY $vgpr040 %2:_(s32) = G_SMAX %0, %141...42 43---44name: smax_s32_vs45legalized: true46 47body: |48 bb.0:49 liveins: $sgpr0, $vgpr050 51 ; CHECK-LABEL: name: smax_s32_vs52 ; CHECK: liveins: $sgpr0, $vgpr053 ; CHECK-NEXT: {{ $}}54 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr055 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr056 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)57 ; CHECK-NEXT: [[SMAX:%[0-9]+]]:vgpr(s32) = G_SMAX [[COPY]], [[COPY2]]58 ; CHECK-NEXT: $vgpr0 = COPY [[SMAX]](s32)59 %0:_(s32) = COPY $vgpr060 %1:_(s32) = COPY $sgpr061 %2:_(s32) = G_SMAX %0, %162 $vgpr0 = COPY %263 64...65 66---67name: smax_s32_vv68legalized: true69 70body: |71 bb.0:72 liveins: $vgpr0, $vgpr173 74 ; CHECK-LABEL: name: smax_s32_vv75 ; CHECK: liveins: $vgpr0, $vgpr176 ; CHECK-NEXT: {{ $}}77 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr078 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr179 ; CHECK-NEXT: [[SMAX:%[0-9]+]]:vgpr(s32) = G_SMAX [[COPY]], [[COPY1]]80 ; CHECK-NEXT: $vgpr0 = COPY [[SMAX]](s32)81 %0:_(s32) = COPY $vgpr082 %1:_(s32) = COPY $vgpr183 %2:_(s32) = G_SMAX %0, %184 $vgpr0 = COPY %285...86 87# FIXME: This should use VGPR instruction88---89name: smax_s32_ss_vgpr_use90legalized: true91 92body: |93 bb.0:94 liveins: $sgpr0, $sgpr195 96 ; CHECK-LABEL: name: smax_s32_ss_vgpr_use97 ; CHECK: liveins: $sgpr0, $sgpr198 ; CHECK-NEXT: {{ $}}99 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0100 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1101 ; CHECK-NEXT: [[SMAX:%[0-9]+]]:sgpr(s32) = G_SMAX [[COPY]], [[COPY1]]102 ; CHECK-NEXT: $vgpr0 = COPY [[SMAX]](s32)103 %0:_(s32) = COPY $sgpr0104 %1:_(s32) = COPY $sgpr1105 %2:_(s32) = G_SMAX %0, %1106 $vgpr0 = COPY %2107...108 109---110name: smax_s16_ss111legalized: true112 113body: |114 bb.0:115 liveins: $sgpr0, $sgpr1116 117 ; CHECK-LABEL: name: smax_s16_ss118 ; CHECK: liveins: $sgpr0, $sgpr1119 ; CHECK-NEXT: {{ $}}120 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0121 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1122 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)123 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY1]](s32)124 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:sgpr(s32) = G_SEXT [[TRUNC]](s16)125 ; CHECK-NEXT: [[SEXT1:%[0-9]+]]:sgpr(s32) = G_SEXT [[TRUNC1]](s16)126 ; CHECK-NEXT: [[SMAX:%[0-9]+]]:sgpr(s32) = G_SMAX [[SEXT]], [[SEXT1]]127 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s16) = G_TRUNC [[SMAX]](s32)128 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC2]](s16)129 ; CHECK-NEXT: $sgpr0 = COPY [[ANYEXT]](s32)130 %0:_(s32) = COPY $sgpr0131 %1:_(s32) = COPY $sgpr1132 %2:_(s16) = G_TRUNC %0133 %3:_(s16) = G_TRUNC %1134 %4:_(s16) = G_SMAX %2, %3135 %5:_(s32) = G_ANYEXT %4136 $sgpr0 = COPY %5137 138...139 140---141name: smax_s16_ss_vgpr_use142legalized: true143 144body: |145 bb.0:146 liveins: $sgpr0, $sgpr1147 148 ; CHECK-LABEL: name: smax_s16_ss_vgpr_use149 ; CHECK: liveins: $sgpr0, $sgpr1150 ; CHECK-NEXT: {{ $}}151 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0152 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1153 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)154 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY1]](s32)155 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:sgpr(s32) = G_SEXT [[TRUNC]](s16)156 ; CHECK-NEXT: [[SEXT1:%[0-9]+]]:sgpr(s32) = G_SEXT [[TRUNC1]](s16)157 ; CHECK-NEXT: [[SMAX:%[0-9]+]]:sgpr(s32) = G_SMAX [[SEXT]], [[SEXT1]]158 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s16) = G_TRUNC [[SMAX]](s32)159 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC2]](s16)160 ; CHECK-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)161 %0:_(s32) = COPY $sgpr0162 %1:_(s32) = COPY $sgpr1163 %2:_(s16) = G_TRUNC %0164 %3:_(s16) = G_TRUNC %1165 %4:_(s16) = G_SMAX %2, %3166 %5:_(s32) = G_ANYEXT %4167 $vgpr0 = COPY %5168 169...170 171---172name: smax_v2s16_ss173legalized: true174 175body: |176 bb.0:177 liveins: $sgpr0, $sgpr1178 179 ; CHECK-LABEL: name: smax_v2s16_ss180 ; CHECK: liveins: $sgpr0, $sgpr1181 ; CHECK-NEXT: {{ $}}182 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0183 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr1184 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:sgpr(s32) = G_BITCAST [[COPY]](<2 x s16>)185 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[BITCAST]], 16186 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 16187 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:sgpr(s32) = G_ASHR [[BITCAST]], [[C]](s32)188 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:sgpr(s32) = G_BITCAST [[COPY1]](<2 x s16>)189 ; CHECK-NEXT: [[SEXT_INREG1:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[BITCAST1]], 16190 ; CHECK-NEXT: [[ASHR1:%[0-9]+]]:sgpr(s32) = G_ASHR [[BITCAST1]], [[C]](s32)191 ; CHECK-NEXT: [[SMAX:%[0-9]+]]:sgpr(s32) = G_SMAX [[SEXT_INREG]], [[SEXT_INREG1]]192 ; CHECK-NEXT: [[SMAX1:%[0-9]+]]:sgpr(s32) = G_SMAX [[ASHR]], [[ASHR1]]193 ; CHECK-NEXT: [[BUILD_VECTOR_TRUNC:%[0-9]+]]:sgpr(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[SMAX]](s32), [[SMAX1]](s32)194 ; CHECK-NEXT: $sgpr0 = COPY [[BUILD_VECTOR_TRUNC]](<2 x s16>)195 %0:_(<2 x s16>) = COPY $sgpr0196 %1:_(<2 x s16>) = COPY $sgpr1197 %2:_(<2 x s16>) = G_SMAX %0, %1198 $sgpr0 = COPY %2199...200 201---202name: smax_v2s16_sv203legalized: true204 205body: |206 bb.0:207 liveins: $sgpr0, $vgpr0208 209 ; CHECK-LABEL: name: smax_v2s16_sv210 ; CHECK: liveins: $sgpr0, $vgpr0211 ; CHECK-NEXT: {{ $}}212 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0213 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0214 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY]](<2 x s16>)215 ; CHECK-NEXT: [[SMAX:%[0-9]+]]:vgpr(<2 x s16>) = G_SMAX [[COPY2]], [[COPY1]]216 ; CHECK-NEXT: $vgpr0 = COPY [[SMAX]](<2 x s16>)217 %0:_(<2 x s16>) = COPY $sgpr0218 %1:_(<2 x s16>) = COPY $vgpr0219 %2:_(<2 x s16>) = G_SMAX %0, %1220 $vgpr0 = COPY %2221...222 223---224name: smax_v2s16_vs225legalized: true226 227body: |228 bb.0:229 liveins: $sgpr0, $vgpr0230 231 ; CHECK-LABEL: name: smax_v2s16_vs232 ; CHECK: liveins: $sgpr0, $vgpr0233 ; CHECK-NEXT: {{ $}}234 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0235 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0236 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY1]](<2 x s16>)237 ; CHECK-NEXT: [[SMAX:%[0-9]+]]:vgpr(<2 x s16>) = G_SMAX [[COPY]], [[COPY2]]238 ; CHECK-NEXT: $vgpr0 = COPY [[SMAX]](<2 x s16>)239 %0:_(<2 x s16>) = COPY $vgpr0240 %1:_(<2 x s16>) = COPY $sgpr0241 %2:_(<2 x s16>) = G_SMAX %0, %1242 $vgpr0 = COPY %2243...244 245---246name: smax_v2s16_vv247legalized: true248 249body: |250 bb.0:251 liveins: $vgpr0, $vgpr1252 253 ; CHECK-LABEL: name: smax_v2s16_vv254 ; CHECK: liveins: $vgpr0, $vgpr1255 ; CHECK-NEXT: {{ $}}256 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0257 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr1258 ; CHECK-NEXT: [[SMAX:%[0-9]+]]:vgpr(<2 x s16>) = G_SMAX [[COPY]], [[COPY1]]259 ; CHECK-NEXT: $vgpr0 = COPY [[SMAX]](<2 x s16>)260 %0:_(<2 x s16>) = COPY $vgpr0261 %1:_(<2 x s16>) = COPY $vgpr1262 %2:_(<2 x s16>) = G_SMAX %0, %1263 $vgpr0 = COPY %2264...265