brintos

brintos / llvm-project-archived public Read only

0
0
Text · 28.6 KiB · d326348 Raw
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