686 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -disable-gisel-legality-check -o - %s | FileCheck -check-prefix=GFX8 %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX9 %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX10 %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -mattr=+real-true16 -verify-machineinstrs -o - %s | FileCheck -check-prefixes=GFX11,GFX11-TRUE16 %s6# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -mattr=-real-true16 -verify-machineinstrs -o - %s | FileCheck -check-prefixes=GFX11,GFX11-FAKE16 %s7 8---9 10name: fcanonicalize_f16_denorm11legalized: true12regBankSelected: true13machineFunctionInfo:14 mode:15 fp64-fp16-input-denormals: true16 fp64-fp16-output-denormals: true17 18body: |19 bb.0:20 liveins: $vgpr021 ; GFX8-LABEL: name: fcanonicalize_f16_denorm22 ; GFX8: liveins: $vgpr023 ; GFX8-NEXT: {{ $}}24 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr025 ; GFX8-NEXT: [[V_MAX_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F16_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec26 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_MAX_F16_e64_]]27 ;28 ; GFX9-LABEL: name: fcanonicalize_f16_denorm29 ; GFX9: liveins: $vgpr030 ; GFX9-NEXT: {{ $}}31 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr032 ; GFX9-NEXT: [[V_MAX_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F16_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec33 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MAX_F16_e64_]]34 ;35 ; GFX10-LABEL: name: fcanonicalize_f16_denorm36 ; GFX10: liveins: $vgpr037 ; GFX10-NEXT: {{ $}}38 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr039 ; GFX10-NEXT: [[V_MAX_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F16_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec40 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MAX_F16_e64_]]41 ;42 ; GFX11-TRUE16-LABEL: name: fcanonicalize_f16_denorm43 ; GFX11-TRUE16: liveins: $vgpr044 ; GFX11-TRUE16-NEXT: {{ $}}45 ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr046 ; GFX11-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo1647 ; GFX11-TRUE16-NEXT: [[V_MAX_F16_t16_e64_:%[0-9]+]]:vgpr_16 = nofpexcept V_MAX_F16_t16_e64 0, [[COPY1]], 0, [[COPY1]], 0, 0, 0, implicit $mode, implicit $exec48 ; GFX11-TRUE16-NEXT: S_ENDPGM 0, implicit [[V_MAX_F16_t16_e64_]]49 ;50 ; GFX11-FAKE16-LABEL: name: fcanonicalize_f16_denorm51 ; GFX11-FAKE16: liveins: $vgpr052 ; GFX11-FAKE16-NEXT: {{ $}}53 ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr054 ; GFX11-FAKE16-NEXT: [[V_MAX_F16_fake16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F16_fake16_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec55 ; GFX11-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_MAX_F16_fake16_e64_]]56 %0:vgpr(s32) = COPY $vgpr057 %1:vgpr(s16) = G_TRUNC %058 %2:vgpr(s16) = G_FCANONICALIZE %159 S_ENDPGM 0, implicit %260...61 62---63 64name: fcanonicalize_f16_flush65legalized: true66regBankSelected: true67machineFunctionInfo:68 mode:69 fp64-fp16-input-denormals: false70 fp64-fp16-output-denormals: false71 72body: |73 bb.0:74 liveins: $vgpr075 ; GFX8-LABEL: name: fcanonicalize_f16_flush76 ; GFX8: liveins: $vgpr077 ; GFX8-NEXT: {{ $}}78 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr079 ; GFX8-NEXT: [[V_MUL_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MUL_F16_e64 0, 15360, 0, [[COPY]], 0, 0, implicit $mode, implicit $exec80 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_MUL_F16_e64_]]81 ;82 ; GFX9-LABEL: name: fcanonicalize_f16_flush83 ; GFX9: liveins: $vgpr084 ; GFX9-NEXT: {{ $}}85 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr086 ; GFX9-NEXT: [[V_MAX_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F16_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec87 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MAX_F16_e64_]]88 ;89 ; GFX10-LABEL: name: fcanonicalize_f16_flush90 ; GFX10: liveins: $vgpr091 ; GFX10-NEXT: {{ $}}92 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr093 ; GFX10-NEXT: [[V_MAX_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F16_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec94 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MAX_F16_e64_]]95 ;96 ; GFX11-TRUE16-LABEL: name: fcanonicalize_f16_flush97 ; GFX11-TRUE16: liveins: $vgpr098 ; GFX11-TRUE16-NEXT: {{ $}}99 ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0100 ; GFX11-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16101 ; GFX11-TRUE16-NEXT: [[V_MAX_F16_t16_e64_:%[0-9]+]]:vgpr_16 = nofpexcept V_MAX_F16_t16_e64 0, [[COPY1]], 0, [[COPY1]], 0, 0, 0, implicit $mode, implicit $exec102 ; GFX11-TRUE16-NEXT: S_ENDPGM 0, implicit [[V_MAX_F16_t16_e64_]]103 ;104 ; GFX11-FAKE16-LABEL: name: fcanonicalize_f16_flush105 ; GFX11-FAKE16: liveins: $vgpr0106 ; GFX11-FAKE16-NEXT: {{ $}}107 ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0108 ; GFX11-FAKE16-NEXT: [[V_MAX_F16_fake16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F16_fake16_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec109 ; GFX11-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_MAX_F16_fake16_e64_]]110 %0:vgpr(s32) = COPY $vgpr0111 %1:vgpr(s16) = G_TRUNC %0112 %2:vgpr(s16) = G_FCANONICALIZE %1113 S_ENDPGM 0, implicit %2114...115 116---117 118name: fcanonicalize_f32_denorm119legalized: true120regBankSelected: true121machineFunctionInfo:122 mode:123 fp32-input-denormals: true124 fp32-output-denormals: true125 126body: |127 bb.0:128 liveins: $vgpr0129 130 ; GFX8-LABEL: name: fcanonicalize_f32_denorm131 ; GFX8: liveins: $vgpr0132 ; GFX8-NEXT: {{ $}}133 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0134 ; GFX8-NEXT: [[V_MUL_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MUL_F32_e64 0, 1065353216, 0, [[COPY]], 0, 0, implicit $mode, implicit $exec135 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_MUL_F32_e64_]]136 ;137 ; GFX9-LABEL: name: fcanonicalize_f32_denorm138 ; GFX9: liveins: $vgpr0139 ; GFX9-NEXT: {{ $}}140 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0141 ; GFX9-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec142 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]143 ;144 ; GFX10-LABEL: name: fcanonicalize_f32_denorm145 ; GFX10: liveins: $vgpr0146 ; GFX10-NEXT: {{ $}}147 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0148 ; GFX10-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec149 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]150 ;151 ; GFX11-LABEL: name: fcanonicalize_f32_denorm152 ; GFX11: liveins: $vgpr0153 ; GFX11-NEXT: {{ $}}154 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0155 ; GFX11-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec156 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]157 %0:vgpr(s32) = COPY $vgpr0158 %1:vgpr(s32) = G_FCANONICALIZE %0159 S_ENDPGM 0, implicit %1160...161 162---163 164name: fcanonicalize_f32_flush165legalized: true166regBankSelected: true167machineFunctionInfo:168 mode:169 fp32-input-denormals: false170 fp32-output-denormals: false171 172body: |173 bb.0:174 liveins: $vgpr0175 176 ; GFX8-LABEL: name: fcanonicalize_f32_flush177 ; GFX8: liveins: $vgpr0178 ; GFX8-NEXT: {{ $}}179 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0180 ; GFX8-NEXT: [[V_MUL_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MUL_F32_e64 0, 1065353216, 0, [[COPY]], 0, 0, implicit $mode, implicit $exec181 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_MUL_F32_e64_]]182 ;183 ; GFX9-LABEL: name: fcanonicalize_f32_flush184 ; GFX9: liveins: $vgpr0185 ; GFX9-NEXT: {{ $}}186 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0187 ; GFX9-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec188 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]189 ;190 ; GFX10-LABEL: name: fcanonicalize_f32_flush191 ; GFX10: liveins: $vgpr0192 ; GFX10-NEXT: {{ $}}193 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0194 ; GFX10-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec195 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]196 ;197 ; GFX11-LABEL: name: fcanonicalize_f32_flush198 ; GFX11: liveins: $vgpr0199 ; GFX11-NEXT: {{ $}}200 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0201 ; GFX11-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec202 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]203 %0:vgpr(s32) = COPY $vgpr0204 %1:vgpr(s32) = G_FCANONICALIZE %0205 S_ENDPGM 0, implicit %1206...207 208---209 210name: fcanonicalize_v2f16_denorm211legalized: true212regBankSelected: true213machineFunctionInfo:214 mode:215 fp64-fp16-input-denormals: true216 fp64-fp16-output-denormals: true217 218body: |219 bb.0:220 liveins: $vgpr0221 222 ; GFX8-LABEL: name: fcanonicalize_v2f16_denorm223 ; GFX8: liveins: $vgpr0224 ; GFX8-NEXT: {{ $}}225 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0226 ; GFX8-NEXT: [[V_PK_MAX_F16_:%[0-9]+]]:vgpr_32 = nofpexcept V_PK_MAX_F16 8, [[COPY]], 8, [[COPY]], 0, 0, 0, 0, 0, implicit $mode, implicit $exec227 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_PK_MAX_F16_]]228 ;229 ; GFX9-LABEL: name: fcanonicalize_v2f16_denorm230 ; GFX9: liveins: $vgpr0231 ; GFX9-NEXT: {{ $}}232 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0233 ; GFX9-NEXT: [[V_PK_MAX_F16_:%[0-9]+]]:vgpr_32 = nofpexcept V_PK_MAX_F16 8, [[COPY]], 8, [[COPY]], 0, 0, 0, 0, 0, implicit $mode, implicit $exec234 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_PK_MAX_F16_]]235 ;236 ; GFX10-LABEL: name: fcanonicalize_v2f16_denorm237 ; GFX10: liveins: $vgpr0238 ; GFX10-NEXT: {{ $}}239 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0240 ; GFX10-NEXT: [[V_PK_MAX_F16_:%[0-9]+]]:vgpr_32 = nofpexcept V_PK_MAX_F16 8, [[COPY]], 8, [[COPY]], 0, 0, 0, 0, 0, implicit $mode, implicit $exec241 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_PK_MAX_F16_]]242 ;243 ; GFX11-LABEL: name: fcanonicalize_v2f16_denorm244 ; GFX11: liveins: $vgpr0245 ; GFX11-NEXT: {{ $}}246 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0247 ; GFX11-NEXT: [[V_PK_MAX_F16_:%[0-9]+]]:vgpr_32 = nofpexcept V_PK_MAX_F16 8, [[COPY]], 8, [[COPY]], 0, 0, 0, 0, 0, implicit $mode, implicit $exec248 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_PK_MAX_F16_]]249 %0:vgpr(<2 x s16>) = COPY $vgpr0250 %1:vgpr(<2 x s16>) = G_FCANONICALIZE %0251 S_ENDPGM 0, implicit %1252...253 254---255 256name: fcanonicalize_v2f16_flush257legalized: true258regBankSelected: true259machineFunctionInfo:260 mode:261 fp64-fp16-input-denormals: false262 fp64-fp16-output-denormals: false263 264body: |265 bb.0:266 liveins: $vgpr0267 268 ; GFX8-LABEL: name: fcanonicalize_v2f16_flush269 ; GFX8: liveins: $vgpr0270 ; GFX8-NEXT: {{ $}}271 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0272 ; GFX8-NEXT: [[V_PK_MUL_F16_:%[0-9]+]]:vgpr_32 = nofpexcept V_PK_MUL_F16 0, 15360, 8, [[COPY]], 0, 0, 0, 0, 0, implicit $mode, implicit $exec273 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_PK_MUL_F16_]]274 ;275 ; GFX9-LABEL: name: fcanonicalize_v2f16_flush276 ; GFX9: liveins: $vgpr0277 ; GFX9-NEXT: {{ $}}278 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0279 ; GFX9-NEXT: [[V_PK_MAX_F16_:%[0-9]+]]:vgpr_32 = nofpexcept V_PK_MAX_F16 8, [[COPY]], 8, [[COPY]], 0, 0, 0, 0, 0, implicit $mode, implicit $exec280 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_PK_MAX_F16_]]281 ;282 ; GFX10-LABEL: name: fcanonicalize_v2f16_flush283 ; GFX10: liveins: $vgpr0284 ; GFX10-NEXT: {{ $}}285 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0286 ; GFX10-NEXT: [[V_PK_MAX_F16_:%[0-9]+]]:vgpr_32 = nofpexcept V_PK_MAX_F16 8, [[COPY]], 8, [[COPY]], 0, 0, 0, 0, 0, implicit $mode, implicit $exec287 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_PK_MAX_F16_]]288 ;289 ; GFX11-LABEL: name: fcanonicalize_v2f16_flush290 ; GFX11: liveins: $vgpr0291 ; GFX11-NEXT: {{ $}}292 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0293 ; GFX11-NEXT: [[V_PK_MAX_F16_:%[0-9]+]]:vgpr_32 = nofpexcept V_PK_MAX_F16 8, [[COPY]], 8, [[COPY]], 0, 0, 0, 0, 0, implicit $mode, implicit $exec294 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_PK_MAX_F16_]]295 %0:vgpr(<2 x s16>) = COPY $vgpr0296 %1:vgpr(<2 x s16>) = G_FCANONICALIZE %0297 S_ENDPGM 0, implicit %1298...299 300---301 302name: fcanonicalize_f64_denorm303legalized: true304regBankSelected: true305machineFunctionInfo:306 mode:307 fp64-fp16-input-denormals: true308 fp64-fp16-output-denormals: true309 310body: |311 bb.0:312 liveins: $vgpr0_vgpr1313 314 ; GFX8-LABEL: name: fcanonicalize_f64_denorm315 ; GFX8: liveins: $vgpr0_vgpr1316 ; GFX8-NEXT: {{ $}}317 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1318 ; GFX8-NEXT: [[V_MAX_F64_e64_:%[0-9]+]]:vreg_64 = nofpexcept V_MAX_F64_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec319 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_MAX_F64_e64_]]320 ;321 ; GFX9-LABEL: name: fcanonicalize_f64_denorm322 ; GFX9: liveins: $vgpr0_vgpr1323 ; GFX9-NEXT: {{ $}}324 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1325 ; GFX9-NEXT: [[V_MAX_F64_e64_:%[0-9]+]]:vreg_64 = nofpexcept V_MAX_F64_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec326 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MAX_F64_e64_]]327 ;328 ; GFX10-LABEL: name: fcanonicalize_f64_denorm329 ; GFX10: liveins: $vgpr0_vgpr1330 ; GFX10-NEXT: {{ $}}331 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1332 ; GFX10-NEXT: [[V_MAX_F64_e64_:%[0-9]+]]:vreg_64 = nofpexcept V_MAX_F64_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec333 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MAX_F64_e64_]]334 ;335 ; GFX11-LABEL: name: fcanonicalize_f64_denorm336 ; GFX11: liveins: $vgpr0_vgpr1337 ; GFX11-NEXT: {{ $}}338 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1339 ; GFX11-NEXT: [[V_MAX_F64_e64_:%[0-9]+]]:vreg_64 = nofpexcept V_MAX_F64_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec340 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_MAX_F64_e64_]]341 %0:vgpr(s64) = COPY $vgpr0_vgpr1342 %1:vgpr(s64) = G_FCANONICALIZE %0343 S_ENDPGM 0, implicit %1344...345 346---347 348name: fcanonicalize_f64_flush349legalized: true350regBankSelected: true351machineFunctionInfo:352 mode:353 fp64-fp16-input-denormals: false354 fp64-fp16-output-denormals: false355 356body: |357 bb.0:358 liveins: $vgpr0_vgpr1359 360 ; GFX8-LABEL: name: fcanonicalize_f64_flush361 ; GFX8: liveins: $vgpr0_vgpr1362 ; GFX8-NEXT: {{ $}}363 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1364 ; GFX8-NEXT: [[V_MUL_F64_e64_:%[0-9]+]]:vreg_64 = nofpexcept V_MUL_F64_e64 0, 4607182418800017408, 0, [[COPY]], 0, 0, implicit $mode, implicit $exec365 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_MUL_F64_e64_]]366 ;367 ; GFX9-LABEL: name: fcanonicalize_f64_flush368 ; GFX9: liveins: $vgpr0_vgpr1369 ; GFX9-NEXT: {{ $}}370 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1371 ; GFX9-NEXT: [[V_MAX_F64_e64_:%[0-9]+]]:vreg_64 = nofpexcept V_MAX_F64_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec372 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MAX_F64_e64_]]373 ;374 ; GFX10-LABEL: name: fcanonicalize_f64_flush375 ; GFX10: liveins: $vgpr0_vgpr1376 ; GFX10-NEXT: {{ $}}377 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1378 ; GFX10-NEXT: [[V_MAX_F64_e64_:%[0-9]+]]:vreg_64 = nofpexcept V_MAX_F64_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec379 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MAX_F64_e64_]]380 ;381 ; GFX11-LABEL: name: fcanonicalize_f64_flush382 ; GFX11: liveins: $vgpr0_vgpr1383 ; GFX11-NEXT: {{ $}}384 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1385 ; GFX11-NEXT: [[V_MAX_F64_e64_:%[0-9]+]]:vreg_64 = nofpexcept V_MAX_F64_e64 0, [[COPY]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec386 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_MAX_F64_e64_]]387 %0:vgpr(s64) = COPY $vgpr0_vgpr1388 %1:vgpr(s64) = G_FCANONICALIZE %0389 S_ENDPGM 0, implicit %1390...391 392---393 394name: fcanonicalize_fabs_f32_denorm395legalized: true396regBankSelected: true397machineFunctionInfo:398 mode:399 fp32-input-denormals: true400 fp32-output-denormals: true401 402body: |403 bb.0:404 liveins: $vgpr0405 ; GFX8-LABEL: name: fcanonicalize_fabs_f32_denorm406 ; GFX8: liveins: $vgpr0407 ; GFX8-NEXT: {{ $}}408 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0409 ; GFX8-NEXT: [[V_MUL_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MUL_F32_e64 0, 1065353216, 2, [[COPY]], 0, 0, implicit $mode, implicit $exec410 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_MUL_F32_e64_]]411 ;412 ; GFX9-LABEL: name: fcanonicalize_fabs_f32_denorm413 ; GFX9: liveins: $vgpr0414 ; GFX9-NEXT: {{ $}}415 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0416 ; GFX9-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 2, [[COPY]], 2, [[COPY]], 0, 0, implicit $mode, implicit $exec417 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]418 ;419 ; GFX10-LABEL: name: fcanonicalize_fabs_f32_denorm420 ; GFX10: liveins: $vgpr0421 ; GFX10-NEXT: {{ $}}422 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0423 ; GFX10-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 2, [[COPY]], 2, [[COPY]], 0, 0, implicit $mode, implicit $exec424 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]425 ;426 ; GFX11-LABEL: name: fcanonicalize_fabs_f32_denorm427 ; GFX11: liveins: $vgpr0428 ; GFX11-NEXT: {{ $}}429 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0430 ; GFX11-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 2, [[COPY]], 2, [[COPY]], 0, 0, implicit $mode, implicit $exec431 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]432 %0:vgpr(s32) = COPY $vgpr0433 %1:vgpr(s32) = G_FABS %0434 %2:vgpr(s32) = G_FCANONICALIZE %1435 S_ENDPGM 0, implicit %2436...437 438 439---440 441name: fcanonicalize_fabs_f32_flush442legalized: true443regBankSelected: true444machineFunctionInfo:445 mode:446 fp32-input-denormals: false447 fp32-output-denormals: false448 449body: |450 bb.0:451 liveins: $vgpr0452 ; GFX8-LABEL: name: fcanonicalize_fabs_f32_flush453 ; GFX8: liveins: $vgpr0454 ; GFX8-NEXT: {{ $}}455 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0456 ; GFX8-NEXT: [[V_MUL_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MUL_F32_e64 0, 1065353216, 2, [[COPY]], 0, 0, implicit $mode, implicit $exec457 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_MUL_F32_e64_]]458 ;459 ; GFX9-LABEL: name: fcanonicalize_fabs_f32_flush460 ; GFX9: liveins: $vgpr0461 ; GFX9-NEXT: {{ $}}462 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0463 ; GFX9-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 2, [[COPY]], 2, [[COPY]], 0, 0, implicit $mode, implicit $exec464 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]465 ;466 ; GFX10-LABEL: name: fcanonicalize_fabs_f32_flush467 ; GFX10: liveins: $vgpr0468 ; GFX10-NEXT: {{ $}}469 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0470 ; GFX10-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 2, [[COPY]], 2, [[COPY]], 0, 0, implicit $mode, implicit $exec471 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]472 ;473 ; GFX11-LABEL: name: fcanonicalize_fabs_f32_flush474 ; GFX11: liveins: $vgpr0475 ; GFX11-NEXT: {{ $}}476 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0477 ; GFX11-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 2, [[COPY]], 2, [[COPY]], 0, 0, implicit $mode, implicit $exec478 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]479 %0:vgpr(s32) = COPY $vgpr0480 %1:vgpr(s32) = G_FABS %0481 %2:vgpr(s32) = G_FCANONICALIZE %1482 S_ENDPGM 0, implicit %2483...484 485---486 487name: fcanonicalize_fneg_f32_denorm488legalized: true489regBankSelected: true490machineFunctionInfo:491 mode:492 fp32-input-denormals: true493 fp32-output-denormals: true494 495body: |496 bb.0:497 liveins: $vgpr0498 ; GFX8-LABEL: name: fcanonicalize_fneg_f32_denorm499 ; GFX8: liveins: $vgpr0500 ; GFX8-NEXT: {{ $}}501 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0502 ; GFX8-NEXT: [[V_MUL_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MUL_F32_e64 0, 3212836864, 0, [[COPY]], 0, 0, implicit $mode, implicit $exec503 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_MUL_F32_e64_]]504 ;505 ; GFX9-LABEL: name: fcanonicalize_fneg_f32_denorm506 ; GFX9: liveins: $vgpr0507 ; GFX9-NEXT: {{ $}}508 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0509 ; GFX9-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 1, [[COPY]], 1, [[COPY]], 0, 0, implicit $mode, implicit $exec510 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]511 ;512 ; GFX10-LABEL: name: fcanonicalize_fneg_f32_denorm513 ; GFX10: liveins: $vgpr0514 ; GFX10-NEXT: {{ $}}515 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0516 ; GFX10-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 1, [[COPY]], 1, [[COPY]], 0, 0, implicit $mode, implicit $exec517 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]518 ;519 ; GFX11-LABEL: name: fcanonicalize_fneg_f32_denorm520 ; GFX11: liveins: $vgpr0521 ; GFX11-NEXT: {{ $}}522 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0523 ; GFX11-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 1, [[COPY]], 1, [[COPY]], 0, 0, implicit $mode, implicit $exec524 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]525 %0:vgpr(s32) = COPY $vgpr0526 %1:vgpr(s32) = G_FNEG %0527 %2:vgpr(s32) = G_FCANONICALIZE %1528 S_ENDPGM 0, implicit %2529...530 531---532 533name: fcanonicalize_fneg_f32_flush534legalized: true535regBankSelected: true536machineFunctionInfo:537 mode:538 fp32-input-denormals: false539 fp32-output-denormals: false540 541body: |542 bb.0:543 liveins: $vgpr0544 ; GFX8-LABEL: name: fcanonicalize_fneg_f32_flush545 ; GFX8: liveins: $vgpr0546 ; GFX8-NEXT: {{ $}}547 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0548 ; GFX8-NEXT: [[V_MUL_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MUL_F32_e64 0, 3212836864, 0, [[COPY]], 0, 0, implicit $mode, implicit $exec549 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_MUL_F32_e64_]]550 ;551 ; GFX9-LABEL: name: fcanonicalize_fneg_f32_flush552 ; GFX9: liveins: $vgpr0553 ; GFX9-NEXT: {{ $}}554 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0555 ; GFX9-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 1, [[COPY]], 1, [[COPY]], 0, 0, implicit $mode, implicit $exec556 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]557 ;558 ; GFX10-LABEL: name: fcanonicalize_fneg_f32_flush559 ; GFX10: liveins: $vgpr0560 ; GFX10-NEXT: {{ $}}561 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0562 ; GFX10-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 1, [[COPY]], 1, [[COPY]], 0, 0, implicit $mode, implicit $exec563 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]564 ;565 ; GFX11-LABEL: name: fcanonicalize_fneg_f32_flush566 ; GFX11: liveins: $vgpr0567 ; GFX11-NEXT: {{ $}}568 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0569 ; GFX11-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 1, [[COPY]], 1, [[COPY]], 0, 0, implicit $mode, implicit $exec570 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]571 %0:vgpr(s32) = COPY $vgpr0572 %1:vgpr(s32) = G_FNEG %0573 %2:vgpr(s32) = G_FCANONICALIZE %1574 S_ENDPGM 0, implicit %2575...576 577---578 579name: fcanonicalize_fneg_fabs_f32_denorm580legalized: true581regBankSelected: true582machineFunctionInfo:583 mode:584 fp32-input-denormals: true585 fp32-output-denormals: true586 587body: |588 bb.0:589 liveins: $vgpr0590 ; GFX8-LABEL: name: fcanonicalize_fneg_fabs_f32_denorm591 ; GFX8: liveins: $vgpr0592 ; GFX8-NEXT: {{ $}}593 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0594 ; GFX8-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2147483648595 ; GFX8-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[S_MOV_B32_]], [[COPY]], implicit $exec596 ; GFX8-NEXT: [[V_MUL_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MUL_F32_e64 0, 1065353216, 2, [[V_XOR_B32_e64_]], 0, 0, implicit $mode, implicit $exec597 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_MUL_F32_e64_]]598 ;599 ; GFX9-LABEL: name: fcanonicalize_fneg_fabs_f32_denorm600 ; GFX9: liveins: $vgpr0601 ; GFX9-NEXT: {{ $}}602 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0603 ; GFX9-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2147483648604 ; GFX9-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[S_MOV_B32_]], [[COPY]], implicit $exec605 ; GFX9-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 2, [[V_XOR_B32_e64_]], 2, [[V_XOR_B32_e64_]], 0, 0, implicit $mode, implicit $exec606 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]607 ;608 ; GFX10-LABEL: name: fcanonicalize_fneg_fabs_f32_denorm609 ; GFX10: liveins: $vgpr0610 ; GFX10-NEXT: {{ $}}611 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0612 ; GFX10-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2147483648613 ; GFX10-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[S_MOV_B32_]], [[COPY]], implicit $exec614 ; GFX10-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 2, [[V_XOR_B32_e64_]], 2, [[V_XOR_B32_e64_]], 0, 0, implicit $mode, implicit $exec615 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]616 ;617 ; GFX11-LABEL: name: fcanonicalize_fneg_fabs_f32_denorm618 ; GFX11: liveins: $vgpr0619 ; GFX11-NEXT: {{ $}}620 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0621 ; GFX11-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2147483648622 ; GFX11-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[S_MOV_B32_]], [[COPY]], implicit $exec623 ; GFX11-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 2, [[V_XOR_B32_e64_]], 2, [[V_XOR_B32_e64_]], 0, 0, implicit $mode, implicit $exec624 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]625 %0:vgpr(s32) = COPY $vgpr0626 %1:vgpr(s32) = G_FNEG %0627 %2:vgpr(s32) = G_FABS %1628 %3:vgpr(s32) = G_FCANONICALIZE %2629 S_ENDPGM 0, implicit %3630...631 632---633 634name: fcanonicalize_fneg_fabs_f32_flush635legalized: true636regBankSelected: true637machineFunctionInfo:638 mode:639 fp32-input-denormals: false640 fp32-output-denormals: false641 642body: |643 bb.0:644 liveins: $vgpr0645 ; GFX8-LABEL: name: fcanonicalize_fneg_fabs_f32_flush646 ; GFX8: liveins: $vgpr0647 ; GFX8-NEXT: {{ $}}648 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0649 ; GFX8-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2147483648650 ; GFX8-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[S_MOV_B32_]], [[COPY]], implicit $exec651 ; GFX8-NEXT: [[V_MUL_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MUL_F32_e64 0, 1065353216, 2, [[V_XOR_B32_e64_]], 0, 0, implicit $mode, implicit $exec652 ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_MUL_F32_e64_]]653 ;654 ; GFX9-LABEL: name: fcanonicalize_fneg_fabs_f32_flush655 ; GFX9: liveins: $vgpr0656 ; GFX9-NEXT: {{ $}}657 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0658 ; GFX9-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2147483648659 ; GFX9-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[S_MOV_B32_]], [[COPY]], implicit $exec660 ; GFX9-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 2, [[V_XOR_B32_e64_]], 2, [[V_XOR_B32_e64_]], 0, 0, implicit $mode, implicit $exec661 ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]662 ;663 ; GFX10-LABEL: name: fcanonicalize_fneg_fabs_f32_flush664 ; GFX10: liveins: $vgpr0665 ; GFX10-NEXT: {{ $}}666 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0667 ; GFX10-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2147483648668 ; GFX10-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[S_MOV_B32_]], [[COPY]], implicit $exec669 ; GFX10-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 2, [[V_XOR_B32_e64_]], 2, [[V_XOR_B32_e64_]], 0, 0, implicit $mode, implicit $exec670 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]671 ;672 ; GFX11-LABEL: name: fcanonicalize_fneg_fabs_f32_flush673 ; GFX11: liveins: $vgpr0674 ; GFX11-NEXT: {{ $}}675 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0676 ; GFX11-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2147483648677 ; GFX11-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[S_MOV_B32_]], [[COPY]], implicit $exec678 ; GFX11-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 2, [[V_XOR_B32_e64_]], 2, [[V_XOR_B32_e64_]], 0, 0, implicit $mode, implicit $exec679 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_MAX_F32_e64_]]680 %0:vgpr(s32) = COPY $vgpr0681 %1:vgpr(s32) = G_FNEG %0682 %2:vgpr(s32) = G_FABS %1683 %3:vgpr(s32) = G_FCANONICALIZE %2684 S_ENDPGM 0, implicit %3685...686