304 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx1150 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX1150 %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX1150 %s4 5---6name: sitofp_i32_to_f327legalized: true8regBankSelected: true9body: |10 bb.0:11 liveins: $sgpr012 13 ; GFX1150-LABEL: name: sitofp_i32_to_f3214 ; GFX1150: liveins: $sgpr015 ; GFX1150-NEXT: {{ $}}16 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr017 ; GFX1150-NEXT: [[S_CVT_F32_I32_:%[0-9]+]]:sreg_32 = S_CVT_F32_I32 [[COPY]], implicit $mode18 ; GFX1150-NEXT: $sgpr0 = COPY [[S_CVT_F32_I32_]]19 %0:sgpr(s32) = COPY $sgpr020 %1:sgpr(s32) = G_SITOFP %0(s32)21 $sgpr0 = COPY %1(s32)22 23...24---25name: uitofp_u32_to_f3226legalized: true27regBankSelected: true28body: |29 bb.0:30 liveins: $sgpr031 32 ; GFX1150-LABEL: name: uitofp_u32_to_f3233 ; GFX1150: liveins: $sgpr034 ; GFX1150-NEXT: {{ $}}35 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr036 ; GFX1150-NEXT: [[S_CVT_F32_U32_:%[0-9]+]]:sreg_32 = S_CVT_F32_U32 [[COPY]], implicit $mode37 ; GFX1150-NEXT: $sgpr0 = COPY [[S_CVT_F32_U32_]]38 %0:sgpr(s32) = COPY $sgpr039 %1:sgpr(s32) = G_UITOFP %0(s32)40 $sgpr0 = COPY %1(s32)41 42...43---44name: fptosi_f32_to_i3245legalized: true46regBankSelected: true47body: |48 bb.0:49 liveins: $sgpr050 51 ; GFX1150-LABEL: name: fptosi_f32_to_i3252 ; GFX1150: liveins: $sgpr053 ; GFX1150-NEXT: {{ $}}54 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr055 ; GFX1150-NEXT: %1:sreg_32 = nofpexcept S_CVT_I32_F32 [[COPY]], implicit $mode56 ; GFX1150-NEXT: $sgpr0 = COPY %157 %0:sgpr(s32) = COPY $sgpr058 %1:sgpr(s32) = G_FPTOSI %0(s32)59 $sgpr0 = COPY %1(s32)60 61...62---63name: fptoui_f32_to_u3264legalized: true65regBankSelected: true66body: |67 bb.0:68 liveins: $sgpr069 70 ; GFX1150-LABEL: name: fptoui_f32_to_u3271 ; GFX1150: liveins: $sgpr072 ; GFX1150-NEXT: {{ $}}73 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr074 ; GFX1150-NEXT: %1:sreg_32 = nofpexcept S_CVT_U32_F32 [[COPY]], implicit $mode75 ; GFX1150-NEXT: $sgpr0 = COPY %176 %0:sgpr(s32) = COPY $sgpr077 %1:sgpr(s32) = G_FPTOUI %0(s32)78 $sgpr0 = COPY %1(s32)79 80...81---82name: fpext_f16_to_f3283legalized: true84regBankSelected: true85body: |86 bb.0:87 liveins: $sgpr088 89 ; GFX1150-LABEL: name: fpext_f16_to_f3290 ; GFX1150: liveins: $sgpr091 ; GFX1150-NEXT: {{ $}}92 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr093 ; GFX1150-NEXT: %2:sreg_32 = nofpexcept S_CVT_F32_F16 [[COPY]], implicit $mode94 ; GFX1150-NEXT: $sgpr0 = COPY %295 %0:sgpr(s32) = COPY $sgpr096 %1:sgpr(s16) = G_TRUNC %0(s32)97 %2:sgpr(s32) = G_FPEXT %1(s16)98 $sgpr0 = COPY %2(s32)99 100...101---102name: fpext_hif16_to_32103legalized: true104regBankSelected: true105body: |106 bb.0:107 liveins: $sgpr0108 109 ; GFX1150-LABEL: name: fpext_hif16_to_32110 ; GFX1150: liveins: $sgpr0111 ; GFX1150-NEXT: {{ $}}112 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0113 ; GFX1150-NEXT: [[S_CVT_HI_F32_F16_:%[0-9]+]]:sreg_32 = S_CVT_HI_F32_F16 [[COPY]], implicit $mode114 ; GFX1150-NEXT: $sgpr0 = COPY [[S_CVT_HI_F32_F16_]]115 %0:sgpr(<2 x s16>) = COPY $sgpr0116 %2:sgpr(s32) = G_BITCAST %0(<2 x s16>)117 %3:sgpr(s32) = G_CONSTANT i32 16118 %4:sgpr(s32) = G_LSHR %2, %3(s32)119 %5:sgpr(s16) = G_TRUNC %4(s32)120 %6:sgpr(s32) = G_FPEXT %5(s16)121 $sgpr0 = COPY %6(s32)122 123...124---125name: fptrunc_f32_to_f16126legalized: true127regBankSelected: true128body: |129 bb.0:130 liveins: $sgpr0131 132 ; GFX1150-LABEL: name: fptrunc_f32_to_f16133 ; GFX1150: liveins: $sgpr0134 ; GFX1150-NEXT: {{ $}}135 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0136 ; GFX1150-NEXT: %1:sreg_32 = nofpexcept S_CVT_F16_F32 [[COPY]], implicit $mode137 ; GFX1150-NEXT: $sgpr0 = COPY %1138 %0:sgpr(s32) = COPY $sgpr0139 %1:sgpr(s16) = G_FPTRUNC %0(s32)140 %2:sgpr(s32) = G_ANYEXT %1(s16)141 $sgpr0 = COPY %2(s32)142 143...144---145name: fceil_f32146legalized: true147regBankSelected: true148body: |149 bb.0:150 liveins: $sgpr0151 152 ; GFX1150-LABEL: name: fceil_f32153 ; GFX1150: liveins: $sgpr0154 ; GFX1150-NEXT: {{ $}}155 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0156 ; GFX1150-NEXT: %1:sreg_32 = nofpexcept S_CEIL_F32 [[COPY]], implicit $mode157 ; GFX1150-NEXT: $sgpr0 = COPY %1158 %0:sgpr(s32) = COPY $sgpr0159 %1:sgpr(s32) = G_FCEIL %0160 $sgpr0 = COPY %1(s32)161 162...163---164name: ffloor_f32165legalized: true166regBankSelected: true167body: |168 bb.0:169 liveins: $sgpr0170 171 ; GFX1150-LABEL: name: ffloor_f32172 ; GFX1150: liveins: $sgpr0173 ; GFX1150-NEXT: {{ $}}174 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0175 ; GFX1150-NEXT: %1:sreg_32 = nofpexcept S_FLOOR_F32 [[COPY]], implicit $mode176 ; GFX1150-NEXT: $sgpr0 = COPY %1177 %0:sgpr(s32) = COPY $sgpr0178 %1:sgpr(s32) = G_FFLOOR %0179 $sgpr0 = COPY %1(s32)180 181...182---183name: ftrunc_f32184legalized: true185regBankSelected: true186body: |187 bb.0:188 liveins: $sgpr0189 190 ; GFX1150-LABEL: name: ftrunc_f32191 ; GFX1150: liveins: $sgpr0192 ; GFX1150-NEXT: {{ $}}193 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0194 ; GFX1150-NEXT: %1:sreg_32 = nofpexcept S_TRUNC_F32 [[COPY]], implicit $mode195 ; GFX1150-NEXT: $sgpr0 = COPY %1196 %0:sgpr(s32) = COPY $sgpr0197 %1:sgpr(s32) = G_INTRINSIC_TRUNC %0198 $sgpr0 = COPY %1(s32)199 200...201---202name: frint_f32203legalized: true204regBankSelected: true205body: |206 bb.0:207 liveins: $sgpr0208 209 ; GFX1150-LABEL: name: frint_f32210 ; GFX1150: liveins: $sgpr0211 ; GFX1150-NEXT: {{ $}}212 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0213 ; GFX1150-NEXT: %1:sreg_32 = nofpexcept S_RNDNE_F32 [[COPY]], implicit $mode214 ; GFX1150-NEXT: $sgpr0 = COPY %1215 %0:sgpr(s32) = COPY $sgpr0216 %1:sgpr(s32) = G_INTRINSIC_ROUNDEVEN %0217 $sgpr0 = COPY %1(s32)218 219...220---221name: fceil_f16222legalized: true223regBankSelected: true224body: |225 bb.0:226 liveins: $sgpr0227 228 ; GFX1150-LABEL: name: fceil_f16229 ; GFX1150: liveins: $sgpr0230 ; GFX1150-NEXT: {{ $}}231 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0232 ; GFX1150-NEXT: %2:sreg_32 = nofpexcept S_CEIL_F16 [[COPY]], implicit $mode233 ; GFX1150-NEXT: $sgpr0 = COPY %2234 %0:sgpr(s32) = COPY $sgpr0235 %1:sgpr(s16) = G_TRUNC %0(s32)236 %2:sgpr(s16) = G_FCEIL %1237 %3:sgpr(s32) = G_ANYEXT %2(s16)238 $sgpr0 = COPY %3(s32)239 240...241---242name: ffloor_f16243legalized: true244regBankSelected: true245body: |246 bb.0:247 liveins: $sgpr0248 249 ; GFX1150-LABEL: name: ffloor_f16250 ; GFX1150: liveins: $sgpr0251 ; GFX1150-NEXT: {{ $}}252 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0253 ; GFX1150-NEXT: %2:sreg_32 = nofpexcept S_FLOOR_F16 [[COPY]], implicit $mode254 ; GFX1150-NEXT: $sgpr0 = COPY %2255 %0:sgpr(s32) = COPY $sgpr0256 %1:sgpr(s16) = G_TRUNC %0(s32)257 %2:sgpr(s16) = G_FFLOOR %1258 %3:sgpr(s32) = G_ANYEXT %2(s16)259 $sgpr0 = COPY %3(s32)260 261...262---263name: ftrunc_f16264legalized: true265regBankSelected: true266body: |267 bb.0:268 liveins: $sgpr0269 270 ; GFX1150-LABEL: name: ftrunc_f16271 ; GFX1150: liveins: $sgpr0272 ; GFX1150-NEXT: {{ $}}273 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0274 ; GFX1150-NEXT: %2:sreg_32 = nofpexcept S_TRUNC_F16 [[COPY]], implicit $mode275 ; GFX1150-NEXT: $sgpr0 = COPY %2276 %0:sgpr(s32) = COPY $sgpr0277 %1:sgpr(s16) = G_TRUNC %0(s32)278 %2:sgpr(s16) = G_INTRINSIC_TRUNC %1279 %3:sgpr(s32) = G_ANYEXT %2(s16)280 $sgpr0 = COPY %3(s32)281 282...283---284name: frint_f16285legalized: true286regBankSelected: true287body: |288 bb.0:289 liveins: $sgpr0290 291 ; GFX1150-LABEL: name: frint_f16292 ; GFX1150: liveins: $sgpr0293 ; GFX1150-NEXT: {{ $}}294 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0295 ; GFX1150-NEXT: %2:sreg_32 = nofpexcept S_RNDNE_F16 [[COPY]], implicit $mode296 ; GFX1150-NEXT: $sgpr0 = COPY %2297 %0:sgpr(s32) = COPY $sgpr0298 %1:sgpr(s16) = G_TRUNC %0(s32)299 %2:sgpr(s16) = G_INTRINSIC_ROUNDEVEN %1300 %3:sgpr(s32) = G_ANYEXT %2(s16)301 $sgpr0 = COPY %3(s32)302 303...304