521 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 32# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -verify-machineinstrs -run-pass=si-fold-operands -o - %s | FileCheck --check-prefixes=GCN,GFX10 %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -run-pass=si-fold-operands -o - %s | FileCheck --check-prefixes=GCN,GFX9 %s4 5---6name: no_fold_fp_64bit_literal_sgpr7tracksRegLiveness: true8body: |9 bb.0:10 11 ; GCN-LABEL: name: no_fold_fp_64bit_literal_sgpr12 ; GCN: [[DEF:%[0-9]+]]:vreg_64 = IMPLICIT_DEF13 ; GCN-NEXT: [[S_MOV_B:%[0-9]+]]:sreg_64 = S_MOV_B64_IMM_PSEUDO 131176846775012120014 ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64 = V_ADD_F64_e64 0, [[S_MOV_B]], 0, [[DEF]], 0, 0, implicit $mode, implicit $exec15 ; GCN-NEXT: SI_RETURN_TO_EPILOG [[V_ADD_F64_e64_]]16 %0:vreg_64 = IMPLICIT_DEF17 %1:sreg_64 = S_MOV_B64_IMM_PSEUDO 131176846775012120018 %2:vreg_64 = V_ADD_F64_e64 0, %1, 0, %0, 0, 0, implicit $mode, implicit $exec19 SI_RETURN_TO_EPILOG %220...21 22---23name: no_fold_fp_64bit_literal_vgpr24tracksRegLiveness: true25body: |26 bb.0:27 28 ; GCN-LABEL: name: no_fold_fp_64bit_literal_vgpr29 ; GCN: [[DEF:%[0-9]+]]:vreg_64 = IMPLICIT_DEF30 ; GCN-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64 = V_MOV_B64_PSEUDO 1311768467750121200, implicit $exec31 ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64 = V_ADD_F64_e64 0, [[V_MOV_B]], 0, [[DEF]], 0, 0, implicit $mode, implicit $exec32 ; GCN-NEXT: SI_RETURN_TO_EPILOG [[V_ADD_F64_e64_]]33 %0:vreg_64 = IMPLICIT_DEF34 %1:vreg_64 = V_MOV_B64_PSEUDO 1311768467750121200, implicit $exec35 %2:vreg_64 = V_ADD_F64_e64 0, %1, 0, %0, 0, 0, implicit $mode, implicit $exec36 SI_RETURN_TO_EPILOG %237...38 39---40name: fold_fp_32bit_literal_sgpr41tracksRegLiveness: true42body: |43 bb.0:44 45 ; GFX10-LABEL: name: fold_fp_32bit_literal_sgpr46 ; GFX10: [[DEF:%[0-9]+]]:vreg_64 = IMPLICIT_DEF47 ; GFX10-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64 = V_ADD_F64_e64 0, 4636737291354636288, 0, [[DEF]], 0, 0, implicit $mode, implicit $exec48 ; GFX10-NEXT: SI_RETURN_TO_EPILOG [[V_ADD_F64_e64_]]49 ;50 ; GFX9-LABEL: name: fold_fp_32bit_literal_sgpr51 ; GFX9: [[DEF:%[0-9]+]]:vreg_64 = IMPLICIT_DEF52 ; GFX9-NEXT: [[S_MOV_B:%[0-9]+]]:sreg_64 = S_MOV_B64_IMM_PSEUDO 463673729135463628853 ; GFX9-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64 = V_ADD_F64_e64 0, [[S_MOV_B]], 0, [[DEF]], 0, 0, implicit $mode, implicit $exec54 ; GFX9-NEXT: SI_RETURN_TO_EPILOG [[V_ADD_F64_e64_]]55 %0:vreg_64 = IMPLICIT_DEF56 %1:sreg_64 = S_MOV_B64_IMM_PSEUDO 463673729135463628857 %2:vreg_64 = V_ADD_F64_e64 0, %1, 0, %0, 0, 0, implicit $mode, implicit $exec58 SI_RETURN_TO_EPILOG %259...60 61---62name: no_fold_int_64bit_literal_sgpr63tracksRegLiveness: true64body: |65 bb.0:66 67 ; GCN-LABEL: name: no_fold_int_64bit_literal_sgpr68 ; GCN: [[DEF:%[0-9]+]]:sreg_64 = IMPLICIT_DEF69 ; GCN-NEXT: [[S_MOV_B:%[0-9]+]]:sreg_64 = S_MOV_B64_IMM_PSEUDO 131176846775012120070 ; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[DEF]], [[S_MOV_B]], implicit-def $scc71 ; GCN-NEXT: SI_RETURN_TO_EPILOG [[S_AND_B64_]]72 %0:sreg_64 = IMPLICIT_DEF73 %1:sreg_64 = S_MOV_B64_IMM_PSEUDO 131176846775012120074 %2:sreg_64 = S_AND_B64 %0, %1, implicit-def $scc75 SI_RETURN_TO_EPILOG %276...77 78---79name: fold_int_32bit_literal_sgpr80tracksRegLiveness: true81body: |82 bb.0:83 84 ; GCN-LABEL: name: fold_int_32bit_literal_sgpr85 ; GCN: [[DEF:%[0-9]+]]:sreg_64 = IMPLICIT_DEF86 ; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[DEF]], 2147483647, implicit-def $scc87 ; GCN-NEXT: SI_RETURN_TO_EPILOG [[S_AND_B64_]]88 %0:sreg_64 = IMPLICIT_DEF89 %1:sreg_64 = S_MOV_B64 214748364790 %2:sreg_64 = S_AND_B64 %0, %1, implicit-def $scc91 SI_RETURN_TO_EPILOG %292...93 94# FIXME: This could be folded, but we do not know if operand of S_AND_B64 is signed or unsigned95# and if it will be sign or zero extended.96 97---98name: fold_uint_32bit_literal_sgpr99tracksRegLiveness: true100body: |101 bb.0:102 103 ; GCN-LABEL: name: fold_uint_32bit_literal_sgpr104 ; GCN: [[DEF:%[0-9]+]]:sreg_64 = IMPLICIT_DEF105 ; GCN-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 4294967295106 ; GCN-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[DEF]], [[S_MOV_B64_]], implicit-def $scc107 ; GCN-NEXT: SI_RETURN_TO_EPILOG [[S_AND_B64_]]108 %0:sreg_64 = IMPLICIT_DEF109 %1:sreg_64 = S_MOV_B64 4294967295110 %2:sreg_64 = S_AND_B64 %0, %1, implicit-def $scc111 SI_RETURN_TO_EPILOG %2112...113 114---115name: no_fold_v2fp_64bit_literal_sgpr116tracksRegLiveness: true117body: |118 bb.0:119 120 ; GCN-LABEL: name: no_fold_v2fp_64bit_literal_sgpr121 ; GCN: [[DEF:%[0-9]+]]:vreg_64 = IMPLICIT_DEF122 ; GCN-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64 = V_MOV_B64_PSEUDO 4629700418019000320, implicit $exec123 ; GCN-NEXT: [[V_PK_ADD_F32_:%[0-9]+]]:vreg_64 = V_PK_ADD_F32 0, [[DEF]], 0, [[V_MOV_B]], 0, 0, 0, 0, 0, implicit $mode, implicit $exec124 ; GCN-NEXT: SI_RETURN_TO_EPILOG [[V_PK_ADD_F32_]]125 %0:vreg_64 = IMPLICIT_DEF126 %1:vreg_64 = V_MOV_B64_PSEUDO 4629700418019000320, implicit $exec127 %2:vreg_64 = V_PK_ADD_F32 0, %0, 0, %1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec128 SI_RETURN_TO_EPILOG %2129...130 131---132name: fold_v2fp_32bit_literal_sgpr133tracksRegLiveness: true134body: |135 bb.0:136 137 ; GCN-LABEL: name: fold_v2fp_32bit_literal_sgpr138 ; GCN: [[DEF:%[0-9]+]]:vreg_64 = IMPLICIT_DEF139 ; GCN-NEXT: [[V_PK_ADD_F32_:%[0-9]+]]:vreg_64 = V_PK_ADD_F32 0, [[DEF]], 0, 1065353216, 0, 0, 0, 0, 0, implicit $mode, implicit $exec140 ; GCN-NEXT: SI_RETURN_TO_EPILOG [[V_PK_ADD_F32_]]141 %0:vreg_64 = IMPLICIT_DEF142 %1:vreg_64 = V_MOV_B64_PSEUDO 1065353216, implicit $exec143 %2:vreg_64 = V_PK_ADD_F32 0, %0, 0, %1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec144 SI_RETURN_TO_EPILOG %2145...146 147---148name: v_mov_b64_pseudo_imm_0_full_copy_to_f64_use149tracksRegLiveness: true150body: |151 bb.0:152 liveins: $vgpr0_vgpr1153 ; GCN-LABEL: name: v_mov_b64_pseudo_imm_0_full_copy_to_f64_use154 ; GCN: liveins: $vgpr0_vgpr1155 ; GCN-NEXT: {{ $}}156 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1157 ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, 0, 0, 0, implicit $mode, implicit $exec158 ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]159 ; GCN-NEXT: S_ENDPGM 0160 %0:vreg_64_align2 = COPY $vgpr0_vgpr1161 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 0, implicit $exec162 %2:vreg_64_align2 = COPY %1163 %3:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %2, 0, 0, implicit $mode, implicit $exec164 $vgpr0_vgpr1 = COPY %3165 S_ENDPGM 0166 167...168 169---170name: v_mov_b64_pseudo_imm_fp64_1_full_copy_to_f64_use171tracksRegLiveness: true172body: |173 bb.0:174 liveins: $vgpr0_vgpr1175 ; GCN-LABEL: name: v_mov_b64_pseudo_imm_fp64_1_full_copy_to_f64_use176 ; GCN: liveins: $vgpr0_vgpr1177 ; GCN-NEXT: {{ $}}178 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1179 ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, 4607182418800017408, 0, 0, implicit $mode, implicit $exec180 ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]181 ; GCN-NEXT: S_ENDPGM 0182 %0:vreg_64_align2 = COPY $vgpr0_vgpr1183 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4607182418800017408, implicit $exec184 %2:vreg_64_align2 = COPY %1185 %3:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %2, 0, 0, implicit $mode, implicit $exec186 $vgpr0_vgpr1 = COPY %3187 S_ENDPGM 0188 189...190 191---192name: v_mov_b64_pseudo_lit_full_copy_to_f64_use193tracksRegLiveness: true194body: |195 bb.0:196 liveins: $vgpr0_vgpr1197 ; GCN-LABEL: name: v_mov_b64_pseudo_lit_full_copy_to_f64_use198 ; GCN: liveins: $vgpr0_vgpr1199 ; GCN-NEXT: {{ $}}200 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1201 ; GCN-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 4290672329592, implicit $exec202 ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, [[V_MOV_B]], 0, 0, implicit $mode, implicit $exec203 ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]204 ; GCN-NEXT: S_ENDPGM 0205 %0:vreg_64_align2 = COPY $vgpr0_vgpr1206 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4290672329592, implicit $exec207 %2:vreg_64_align2 = COPY %1208 %3:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %2, 0, 0, implicit $mode, implicit $exec209 $vgpr0_vgpr1 = COPY %3210 S_ENDPGM 0211 212...213 214---215name: v_mov_b64_pseudo_imm_fp32_1_splat_full_copy_to_f64_use216tracksRegLiveness: true217body: |218 bb.0:219 liveins: $vgpr0_vgpr1220 ; GCN-LABEL: name: v_mov_b64_pseudo_imm_fp32_1_splat_full_copy_to_f64_use221 ; GCN: liveins: $vgpr0_vgpr1222 ; GCN-NEXT: {{ $}}223 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1224 ; GCN-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 4575657222473777152, implicit $exec225 ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, [[V_MOV_B]], 0, 0, implicit $mode, implicit $exec226 ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]227 ; GCN-NEXT: S_ENDPGM 0228 %0:vreg_64_align2 = COPY $vgpr0_vgpr1229 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4575657222473777152, implicit $exec230 %2:vreg_64_align2 = COPY %1231 %3:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %2, 0, 0, implicit $mode, implicit $exec232 $vgpr0_vgpr1 = COPY %3233 S_ENDPGM 0234 235...236 237---238name: v_mov_b64_pseudo_imm_fp32_1_splat_copy_extract_sub0_to_f32_use239tracksRegLiveness: true240body: |241 bb.0:242 liveins: $vgpr0243 ; GCN-LABEL: name: v_mov_b64_pseudo_imm_fp32_1_splat_copy_extract_sub0_to_f32_use244 ; GCN: liveins: $vgpr0245 ; GCN-NEXT: {{ $}}246 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0247 ; GCN-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, 1065353216, 0, 0, implicit $mode, implicit $exec248 ; GCN-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]249 ; GCN-NEXT: S_ENDPGM 0250 %0:vgpr_32 = COPY $vgpr0251 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4575657222473777152, implicit $exec252 %2:vgpr_32 = COPY %1.sub0253 %3:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 1, %2, 0, 0, implicit $mode, implicit $exec254 $vgpr0 = COPY %3255 S_ENDPGM 0256 257...258 259---260name: v_mov_b64_pseudo_imm_fp32_1_splat_copy_extract_sub1_to_f32_use261tracksRegLiveness: true262body: |263 bb.0:264 liveins: $vgpr0265 ; GCN-LABEL: name: v_mov_b64_pseudo_imm_fp32_1_splat_copy_extract_sub1_to_f32_use266 ; GCN: liveins: $vgpr0267 ; GCN-NEXT: {{ $}}268 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0269 ; GCN-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, 1065353216, 0, 0, implicit $mode, implicit $exec270 ; GCN-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]271 ; GCN-NEXT: S_ENDPGM 0272 %0:vgpr_32 = COPY $vgpr0273 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4575657222473777152, implicit $exec274 %2:vgpr_32 = COPY %1.sub1275 %3:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 1, %2, 0, 0, implicit $mode, implicit $exec276 $vgpr0 = COPY %3277 S_ENDPGM 0278 279...280 281---282name: v_mov_b64_pseudo_imm_fp64_1_copy_extract_sub0_to_f32_use283tracksRegLiveness: true284body: |285 bb.0:286 liveins: $vgpr0287 ; GCN-LABEL: name: v_mov_b64_pseudo_imm_fp64_1_copy_extract_sub0_to_f32_use288 ; GCN: liveins: $vgpr0289 ; GCN-NEXT: {{ $}}290 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0291 ; GCN-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, 0, 0, 0, implicit $mode, implicit $exec292 ; GCN-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]293 ; GCN-NEXT: S_ENDPGM 0294 %0:vgpr_32 = COPY $vgpr0295 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4607182418800017408, implicit $exec296 %2:vgpr_32 = COPY %1.sub0297 %3:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 1, %2, 0, 0, implicit $mode, implicit $exec298 $vgpr0 = COPY %3299 S_ENDPGM 0300 301...302 303---304name: v_mov_b64_pseudo_imm_fp64_1_copy_extract_sub1_to_f32_use305tracksRegLiveness: true306body: |307 bb.0:308 liveins: $vgpr0309 ; GFX10-LABEL: name: v_mov_b64_pseudo_imm_fp64_1_copy_extract_sub1_to_f32_use310 ; GFX10: liveins: $vgpr0311 ; GFX10-NEXT: {{ $}}312 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0313 ; GFX10-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, 1072693248, 0, 0, implicit $mode, implicit $exec314 ; GFX10-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]315 ; GFX10-NEXT: S_ENDPGM 0316 ;317 ; GFX9-LABEL: name: v_mov_b64_pseudo_imm_fp64_1_copy_extract_sub1_to_f32_use318 ; GFX9: liveins: $vgpr0319 ; GFX9-NEXT: {{ $}}320 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0321 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1072693248, implicit $exec322 ; GFX9-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, [[V_MOV_B32_e32_]], 0, 0, implicit $mode, implicit $exec323 ; GFX9-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]324 ; GFX9-NEXT: S_ENDPGM 0325 %0:vgpr_32 = COPY $vgpr0326 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4607182418800017408, implicit $exec327 %2:vgpr_32 = COPY %1.sub1328 %3:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 1, %2, 0, 0, implicit $mode, implicit $exec329 $vgpr0 = COPY %3330 S_ENDPGM 0331 332...333 334---335name: v_mov_b64_pseudo_imm_fp32_1_fp32_2_copy_extract_sub0_f32_use336tracksRegLiveness: true337body: |338 bb.0:339 liveins: $vgpr0340 ; GCN-LABEL: name: v_mov_b64_pseudo_imm_fp32_1_fp32_2_copy_extract_sub0_f32_use341 ; GCN: liveins: $vgpr0342 ; GCN-NEXT: {{ $}}343 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0344 ; GCN-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, 1073741824, 0, 0, implicit $mode, implicit $exec345 ; GCN-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]346 ; GCN-NEXT: S_ENDPGM 0347 %0:vgpr_32 = COPY $vgpr0348 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4575657222482165760, implicit $exec349 %2:vgpr_32 = COPY %1.sub0350 %3:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 1, %2, 0, 0, implicit $mode, implicit $exec351 $vgpr0 = COPY %3352 S_ENDPGM 0353 354...355 356---357name: v_mov_b64_pseudo_imm_fp32_1_fp32_2_copy_extract_sub1_f32_use358tracksRegLiveness: true359body: |360 bb.0:361 liveins: $vgpr0362 ; GCN-LABEL: name: v_mov_b64_pseudo_imm_fp32_1_fp32_2_copy_extract_sub1_f32_use363 ; GCN: liveins: $vgpr0364 ; GCN-NEXT: {{ $}}365 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0366 ; GCN-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, 1065353216, 0, 0, implicit $mode, implicit $exec367 ; GCN-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]368 ; GCN-NEXT: S_ENDPGM 0369 %0:vgpr_32 = COPY $vgpr0370 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4575657222482165760, implicit $exec371 %2:vgpr_32 = COPY %1.sub1372 %3:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 1, %2, 0, 0, implicit $mode, implicit $exec373 $vgpr0 = COPY %3374 S_ENDPGM 0375 376...377 378---379name: v_mov_b64_pseudo_imm_fp32_1_splat_direct_subreg_sub0_f32_use380tracksRegLiveness: true381body: |382 bb.0:383 liveins: $vgpr0384 ; GCN-LABEL: name: v_mov_b64_pseudo_imm_fp32_1_splat_direct_subreg_sub0_f32_use385 ; GCN: liveins: $vgpr0386 ; GCN-NEXT: {{ $}}387 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0388 ; GCN-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, 1065353216, 0, 0, implicit $mode, implicit $exec389 ; GCN-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]390 ; GCN-NEXT: S_ENDPGM 0391 %0:vgpr_32 = COPY $vgpr0392 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4575657222473777152, implicit $exec393 %2:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 1, %1.sub0, 0, 0, implicit $mode, implicit $exec394 $vgpr0 = COPY %2395 S_ENDPGM 0396 397...398 399---400name: v_mov_b64_pseudo_imm_fp32_1_splat_direct_subreg_sub1_f32_use401tracksRegLiveness: true402body: |403 bb.0:404 liveins: $vgpr0405 ; GCN-LABEL: name: v_mov_b64_pseudo_imm_fp32_1_splat_direct_subreg_sub1_f32_use406 ; GCN: liveins: $vgpr0407 ; GCN-NEXT: {{ $}}408 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0409 ; GCN-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, 1065353216, 0, 0, implicit $mode, implicit $exec410 ; GCN-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]411 ; GCN-NEXT: S_ENDPGM 0412 %0:vgpr_32 = COPY $vgpr0413 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4575657222473777152, implicit $exec414 %2:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 1, %1.sub1, 0, 0, implicit $mode, implicit $exec415 $vgpr0 = COPY %2416 S_ENDPGM 0417 418...419 420---421name: v_mov_b64_pseudo_lit_direct_subreg_sub0_f32_use422tracksRegLiveness: true423body: |424 bb.0:425 liveins: $vgpr0426 ; GFX10-LABEL: name: v_mov_b64_pseudo_lit_direct_subreg_sub0_f32_use427 ; GFX10: liveins: $vgpr0428 ; GFX10-NEXT: {{ $}}429 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0430 ; GFX10-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, 8888, 0, 0, implicit $mode, implicit $exec431 ; GFX10-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]432 ; GFX10-NEXT: S_ENDPGM 0433 ;434 ; GFX9-LABEL: name: v_mov_b64_pseudo_lit_direct_subreg_sub0_f32_use435 ; GFX9: liveins: $vgpr0436 ; GFX9-NEXT: {{ $}}437 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0438 ; GFX9-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 42945378001592, implicit $exec439 ; GFX9-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, [[V_MOV_B]].sub0, 0, 0, implicit $mode, implicit $exec440 ; GFX9-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]441 ; GFX9-NEXT: S_ENDPGM 0442 %0:vgpr_32 = COPY $vgpr0443 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 42945378001592, implicit $exec444 %2:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 1, %1.sub0, 0, 0, implicit $mode, implicit $exec445 $vgpr0 = COPY %2446 S_ENDPGM 0447 448...449 450---451name: v_mov_b64_pseudo_lit_direct_subreg_sub1_f32_use452tracksRegLiveness: true453body: |454 bb.0:455 liveins: $vgpr0456 ; GFX10-LABEL: name: v_mov_b64_pseudo_lit_direct_subreg_sub1_f32_use457 ; GFX10: liveins: $vgpr0458 ; GFX10-NEXT: {{ $}}459 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0460 ; GFX10-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, 9999, 0, 0, implicit $mode, implicit $exec461 ; GFX10-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]462 ; GFX10-NEXT: S_ENDPGM 0463 ;464 ; GFX9-LABEL: name: v_mov_b64_pseudo_lit_direct_subreg_sub1_f32_use465 ; GFX9: liveins: $vgpr0466 ; GFX9-NEXT: {{ $}}467 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0468 ; GFX9-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 42945378001592, implicit $exec469 ; GFX9-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, [[V_MOV_B]].sub1, 0, 0, implicit $mode, implicit $exec470 ; GFX9-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]471 ; GFX9-NEXT: S_ENDPGM 0472 %0:vgpr_32 = COPY $vgpr0473 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 42945378001592, implicit $exec474 %2:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 1, %1.sub1, 0, 0, implicit $mode, implicit $exec475 $vgpr0 = COPY %2476 S_ENDPGM 0477 478...479 480---481name: v_mov_b64_pseudo_imm_fp32_1_fp32_2_direct_subreg_sub0_f32_use482tracksRegLiveness: true483body: |484 bb.0:485 liveins: $vgpr0486 ; GCN-LABEL: name: v_mov_b64_pseudo_imm_fp32_1_fp32_2_direct_subreg_sub0_f32_use487 ; GCN: liveins: $vgpr0488 ; GCN-NEXT: {{ $}}489 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0490 ; GCN-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, 1073741824, 0, 0, implicit $mode, implicit $exec491 ; GCN-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]492 ; GCN-NEXT: S_ENDPGM 0493 %0:vgpr_32 = COPY $vgpr0494 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4575657222482165760, implicit $exec495 %2:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 1, %1.sub0, 0, 0, implicit $mode, implicit $exec496 $vgpr0 = COPY %2497 S_ENDPGM 0498 499...500 501---502name: v_mov_b64_pseudo_imm_fp32_1_fp32_2_direct_subreg_sub1_f32_use503tracksRegLiveness: true504body: |505 bb.0:506 liveins: $vgpr0507 ; GCN-LABEL: name: v_mov_b64_pseudo_imm_fp32_1_fp32_2_direct_subreg_sub1_f32_use508 ; GCN: liveins: $vgpr0509 ; GCN-NEXT: {{ $}}510 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0511 ; GCN-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, 1065353216, 0, 0, implicit $mode, implicit $exec512 ; GCN-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]513 ; GCN-NEXT: S_ENDPGM 0514 %0:vgpr_32 = COPY $vgpr0515 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4575657222482165760, implicit $exec516 %2:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 1, %1.sub1, 0, 0, implicit $mode, implicit $exec517 $vgpr0 = COPY %2518 S_ENDPGM 0519 520...521