199 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass=gcn-dpp-combine %s -o - | FileCheck -check-prefix=GFX12 %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -passes=gcn-dpp-combine %s -o - | FileCheck -check-prefix=GFX12 %s4 5---6name: test_cvt_f32_bf8_byte07tracksRegLiveness: true8body: |9 bb.0:10 liveins: $vgpr011 12 ; GFX12-LABEL: name: test_cvt_f32_bf8_byte013 ; GFX12: liveins: $vgpr014 ; GFX12-NEXT: {{ $}}15 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr016 ; GFX12-NEXT: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF17 ; GFX12-NEXT: [[V_CVT_F32_BF8_OP_SEL_dpp:%[0-9]+]]:vgpr_32 = V_CVT_F32_BF8_OP_SEL_dpp [[DEF]], [[COPY]], 228, 15, 15, 1, implicit $mode, implicit $exec18 ; GFX12-NEXT: $vgpr0 = COPY [[V_CVT_F32_BF8_OP_SEL_dpp]]19 ; GFX12-NEXT: SI_RETURN_TO_EPILOG $vgpr020 %0:vgpr_32 = COPY $vgpr021 %1:vgpr_32 = V_MOV_B32_dpp %0, %0, 228, 15, 15, -1, implicit $exec22 %2:vgpr_32 = V_CVT_F32_BF8_OP_SEL_e32 killed %1, implicit $mode, implicit $exec23 $vgpr0 = COPY %224 SI_RETURN_TO_EPILOG $vgpr025 26...27---28name: test_cvt_f32_bf8_byte229tracksRegLiveness: true30body: |31 bb.0:32 liveins: $vgpr033 34 ; GFX12-LABEL: name: test_cvt_f32_bf8_byte235 ; GFX12: liveins: $vgpr036 ; GFX12-NEXT: {{ $}}37 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr038 ; GFX12-NEXT: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF39 ; GFX12-NEXT: [[V_CVT_F32_BF8_OP_SEL_e64_dpp:%[0-9]+]]:vgpr_32 = V_CVT_F32_BF8_OP_SEL_e64_dpp [[DEF]], [[COPY]], 2, 228, 15, 15, 1, implicit $mode, implicit $exec40 ; GFX12-NEXT: $vgpr0 = COPY [[V_CVT_F32_BF8_OP_SEL_e64_dpp]]41 ; GFX12-NEXT: SI_RETURN_TO_EPILOG $vgpr042 %0:vgpr_32 = COPY $vgpr043 %1:vgpr_32 = V_MOV_B32_dpp %0, %0, 228, 15, 15, -1, implicit $exec44 %2:vgpr_32 = V_CVT_F32_BF8_OP_SEL_e64 killed %1, 2, implicit $mode, implicit $exec45 $vgpr0 = COPY %246 SI_RETURN_TO_EPILOG $vgpr047 48...49---50name: test_cvt_f32_fp8_byte351tracksRegLiveness: true52body: |53 bb.0:54 liveins: $vgpr055 56 ; GFX12-LABEL: name: test_cvt_f32_fp8_byte357 ; GFX12: liveins: $vgpr058 ; GFX12-NEXT: {{ $}}59 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr060 ; GFX12-NEXT: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF61 ; GFX12-NEXT: [[V_CVT_F32_FP8_OP_SEL_e64_dpp:%[0-9]+]]:vgpr_32 = V_CVT_F32_FP8_OP_SEL_e64_dpp [[DEF]], [[COPY]], 3, 228, 15, 15, 1, implicit $mode, implicit $exec62 ; GFX12-NEXT: $vgpr0 = COPY [[V_CVT_F32_FP8_OP_SEL_e64_dpp]]63 ; GFX12-NEXT: SI_RETURN_TO_EPILOG $vgpr064 %0:vgpr_32 = COPY $vgpr065 %1:vgpr_32 = V_MOV_B32_dpp %0, %0, 228, 15, 15, -1, implicit $exec66 %2:vgpr_32 = V_CVT_F32_FP8_OP_SEL_e64 killed %1, 3, implicit $mode, implicit $exec67 $vgpr0 = COPY %268 SI_RETURN_TO_EPILOG $vgpr069 70...71---72name: test_cvt_pk_bf8_f32_word073tracksRegLiveness: true74body: |75 bb.0:76 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr477 78 ; GFX12-LABEL: name: test_cvt_pk_bf8_f32_word079 ; GFX12: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr480 ; GFX12-NEXT: {{ $}}81 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr482 ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr383 ; GFX12-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr284 ; GFX12-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr185 ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr086 ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY]], %subreg.sub187 ; GFX12-NEXT: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF88 ; GFX12-NEXT: [[V_CVT_PK_BF8_F32_e64_dpp:%[0-9]+]]:vgpr_32 = V_CVT_PK_BF8_F32_e64_dpp [[DEF]], 0, [[COPY4]], 0, [[COPY3]], [[COPY2]], 0, 228, 15, 15, 1, implicit $mode, implicit $exec89 ; GFX12-NEXT: GLOBAL_STORE_DWORD [[REG_SEQUENCE]], killed [[V_CVT_PK_BF8_F32_e64_dpp]], 0, 0, implicit $exec90 ; GFX12-NEXT: S_ENDPGM 091 %4:vgpr_32 = COPY $vgpr492 %3:vgpr_32 = COPY $vgpr393 %2:vgpr_32 = COPY $vgpr294 %1:vgpr_32 = COPY $vgpr195 %0:vgpr_32 = COPY $vgpr096 %11:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %4, %subreg.sub197 %6:vgpr_32 = V_MOV_B32_dpp %0, %0, 228, 15, 15, -1, implicit $exec98 %7:vgpr_32 = V_CVT_PK_BF8_F32_e64 0, killed %6, 0, %1, %2, 0, implicit $mode, implicit $exec99 GLOBAL_STORE_DWORD %11, killed %7, 0, 0, implicit $exec100 S_ENDPGM 0101 102...103---104name: test_cvt_pk_fp8_f32_word1105tracksRegLiveness: true106body: |107 bb.0:108 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4109 110 ; GFX12-LABEL: name: test_cvt_pk_fp8_f32_word1111 ; GFX12: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4112 ; GFX12-NEXT: {{ $}}113 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr4114 ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr3115 ; GFX12-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2116 ; GFX12-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr1117 ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0118 ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY]], %subreg.sub1119 ; GFX12-NEXT: [[V_MOV_B32_dpp:%[0-9]+]]:vgpr_32 = V_MOV_B32_dpp [[COPY4]], [[COPY4]], 228, 15, 15, -1, implicit $exec120 ; GFX12-NEXT: [[V_CVT_PK_FP8_F32_e64_:%[0-9]+]]:vgpr_32 = V_CVT_PK_FP8_F32_e64 8, killed [[V_MOV_B32_dpp]], 0, [[COPY3]], [[COPY2]], 0, implicit $mode, implicit $exec121 ; GFX12-NEXT: GLOBAL_STORE_DWORD [[REG_SEQUENCE]], killed [[V_CVT_PK_FP8_F32_e64_]], 0, 0, implicit $exec122 ; GFX12-NEXT: S_ENDPGM 0123 %4:vgpr_32 = COPY $vgpr4124 %3:vgpr_32 = COPY $vgpr3125 %2:vgpr_32 = COPY $vgpr2126 %1:vgpr_32 = COPY $vgpr1127 %0:vgpr_32 = COPY $vgpr0128 %11:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %4, %subreg.sub1129 %6:vgpr_32 = V_MOV_B32_dpp %0, %0, 228, 15, 15, -1, implicit $exec130 %7:vgpr_32 = V_CVT_PK_FP8_F32_e64 8, killed %6, 0, %1, %2, 0, implicit $mode, implicit $exec131 GLOBAL_STORE_DWORD %11, killed %7, 0, 0, implicit $exec132 S_ENDPGM 0133 134...135---136name: test_cvt_sr_bf8_f32_byte0137tracksRegLiveness: true138body: |139 bb.0:140 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4141 142 ; GFX12-LABEL: name: test_cvt_sr_bf8_f32_byte0143 ; GFX12: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4144 ; GFX12-NEXT: {{ $}}145 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr4146 ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr3147 ; GFX12-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2148 ; GFX12-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr1149 ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0150 ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY]], %subreg.sub1151 ; GFX12-NEXT: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF152 ; GFX12-NEXT: [[V_CVT_SR_BF8_F32_e64_dpp:%[0-9]+]]:vgpr_32 = V_CVT_SR_BF8_F32_e64_dpp [[DEF]], 0, [[COPY4]], 0, [[COPY3]], 0, [[COPY2]], 0, 228, 15, 15, 1, implicit $mode, implicit $exec153 ; GFX12-NEXT: GLOBAL_STORE_DWORD [[REG_SEQUENCE]], killed [[V_CVT_SR_BF8_F32_e64_dpp]], 0, 0, implicit $exec154 ; GFX12-NEXT: S_ENDPGM 0155 %4:vgpr_32 = COPY $vgpr4156 %3:vgpr_32 = COPY $vgpr3157 %2:vgpr_32 = COPY $vgpr2158 %1:vgpr_32 = COPY $vgpr1159 %0:vgpr_32 = COPY $vgpr0160 %11:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %4, %subreg.sub1161 %6:vgpr_32 = V_MOV_B32_dpp %0, %0, 228, 15, 15, -1, implicit $exec162 %7:vgpr_32 = V_CVT_SR_BF8_F32_e64 0, killed %6, 0, %1, 0, %2, 0, implicit $mode, implicit $exec163 GLOBAL_STORE_DWORD %11, killed %7, 0, 0, implicit $exec164 S_ENDPGM 0165 166...167---168name: test_cvt_sr_fp8_f32_byte2169tracksRegLiveness: true170body: |171 bb.0:172 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4173 174 ; GFX12-LABEL: name: test_cvt_sr_fp8_f32_byte2175 ; GFX12: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4176 ; GFX12-NEXT: {{ $}}177 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr4178 ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr3179 ; GFX12-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2180 ; GFX12-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr1181 ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0182 ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY]], %subreg.sub1183 ; GFX12-NEXT: [[V_MOV_B32_dpp:%[0-9]+]]:vgpr_32 = V_MOV_B32_dpp [[COPY4]], [[COPY4]], 228, 15, 15, -1, implicit $exec184 ; GFX12-NEXT: [[V_CVT_SR_FP8_F32_e64_:%[0-9]+]]:vgpr_32 = V_CVT_SR_FP8_F32_e64 8, killed [[V_MOV_B32_dpp]], 0, [[COPY3]], 0, [[COPY2]], 0, implicit $mode, implicit $exec185 ; GFX12-NEXT: GLOBAL_STORE_DWORD [[REG_SEQUENCE]], killed [[V_CVT_SR_FP8_F32_e64_]], 0, 0, implicit $exec186 ; GFX12-NEXT: S_ENDPGM 0187 %4:vgpr_32 = COPY $vgpr4188 %3:vgpr_32 = COPY $vgpr3189 %2:vgpr_32 = COPY $vgpr2190 %1:vgpr_32 = COPY $vgpr1191 %0:vgpr_32 = COPY $vgpr0192 %11:vreg_64 = REG_SEQUENCE %3, %subreg.sub0, %4, %subreg.sub1193 %6:vgpr_32 = V_MOV_B32_dpp %0, %0, 228, 15, 15, -1, implicit $exec194 %7:vgpr_32 = V_CVT_SR_FP8_F32_e64 8, killed %6, 0, %1, 0, %2, 0, implicit $mode, implicit $exec195 GLOBAL_STORE_DWORD %11, killed %7, 0, 0, implicit $exec196 S_ENDPGM 0197 198...199