471 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=si-peephole-sdwa -verify-machineinstrs -o - %s | FileCheck -check-prefix=VI -check-prefix=GFX89 -check-prefix=GCN %s2# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=si-peephole-sdwa -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX9 -check-prefix=GFX89 -check-prefix=GCN %s3 4# GFX89-LABEL: {{^}}name: vop1_instructions5 6# GFX89: %{{[0-9]+}}:vgpr_32 = V_MOV_B32_sdwa 0, %{{[0-9]+}}, 0, 5, 0, 5, implicit $exec7# GFX89: %{{[0-9]+}}:vgpr_32 = V_FRACT_F32_sdwa 0, %{{[0-9]+}}, 0, 0, 5, 0, 6, implicit $mode, implicit $exec8# GFX89: %{{[0-9]+}}:vgpr_32 = V_SIN_F32_sdwa 0, %{{[0-9]+}}, 0, 0, 5, 0, 5, implicit $mode, implicit $exec9# GFX89: %{{[0-9]+}}:vgpr_32 = V_CVT_U32_F32_sdwa 0, %{{[0-9]+}}, 0, 5, 0, 5, implicit $mode, implicit $exec10# GFX89: %{{[0-9]+}}:vgpr_32 = V_CVT_F32_I32_sdwa 0, %{{[0-9]+}}, 0, 0, 5, 0, 6, implicit $mode, implicit $exec11 12 13# GFX89: %{{[0-9]+}}:vgpr_32 = V_MOV_B32_sdwa 0, %{{[0-9]+}}, 0, 6, 0, 5, implicit $exec14# GFX89: %{{[0-9]+}}:vgpr_32 = V_FRACT_F32_sdwa 0, %{{[0-9]+}}, 0, 0, 5, 0, 6, implicit $mode, implicit $exec15# GFX89: %{{[0-9]+}}:vgpr_32 = V_SIN_F32_sdwa 0, %{{[0-9]+}}, 0, 0, 5, 0, 5, implicit $mode, implicit $exec16# GFX89: %{{[0-9]+}}:vgpr_32 = V_CVT_U32_F32_sdwa 0, %{{[0-9]+}}, 0, 5, 0, 5, implicit $mode, implicit $exec17# GFX89: %{{[0-9]+}}:vgpr_32 = V_CVT_F32_I32_sdwa 0, %{{[0-9]+}}, 0, 0, 5, 0, 6, implicit $mode, implicit $exec18 19 20# VI: %{{[0-9]+}}:vgpr_32 = V_FRACT_F32_sdwa 1, %{{[0-9]+}}, 0, 0, 5, 0, 5, implicit $mode, implicit $exec21# VI: %{{[0-9]+}}:vgpr_32 = V_SIN_F32_sdwa 0, %{{[0-9]+}}, 1, 0, 5, 0, 5, implicit $mode, implicit $exec22# VI: %{{[0-9]+}}:vgpr_32 = V_CVT_U32_F32_sdwa 1, %{{[0-9]+}}, 0, 5, 0, 5, implicit $mode, implicit $exec23# VI: %{{[0-9]+}}:vgpr_32 = V_CVT_F32_I32_e64 %{{[0-9]+}}, 0, 1, implicit $mode, implicit $exec24 25# GFX9: %{{[0-9]+}}:vgpr_32 = V_FRACT_F32_sdwa 1, %{{[0-9]+}}, 0, 0, 5, 0, 5, implicit $mode, implicit $exec26# GFX9: %{{[0-9]+}}:vgpr_32 = V_SIN_F32_sdwa 0, %{{[0-9]+}}, 1, 0, 5, 0, 5, implicit $mode, implicit $exec27# GFX9: %{{[0-9]+}}:vgpr_32 = V_CVT_U32_F32_sdwa 1, %{{[0-9]+}}, 0, 5, 0, 5, implicit $mode, implicit $exec28# GFX9: %{{[0-9]+}}:vgpr_32 = V_CVT_F32_I32_sdwa 0, %{{[0-9]+}}, 0, 1, 5, 0, 5, implicit $mode, implicit $exec29 30 31---32name: vop1_instructions33tracksRegLiveness: true34registers:35 - { id: 0, class: vreg_64 }36 - { id: 1, class: vreg_64 }37 - { id: 2, class: sreg_64 }38 - { id: 3, class: vgpr_32 }39 - { id: 4, class: sreg_32_xm0 }40 - { id: 5, class: sreg_32_xm0 }41 - { id: 6, class: sreg_32_xm0 }42 - { id: 7, class: sreg_32_xm0 }43 - { id: 8, class: sreg_32 }44 - { id: 9, class: vgpr_32 }45 - { id: 10, class: vgpr_32 }46 - { id: 11, class: vgpr_32 }47 - { id: 12, class: vgpr_32 }48 - { id: 13, class: vgpr_32 }49 - { id: 14, class: vgpr_32 }50 - { id: 15, class: vgpr_32 }51 - { id: 16, class: vgpr_32 }52 - { id: 17, class: vgpr_32 }53 - { id: 18, class: vgpr_32 }54 - { id: 19, class: vgpr_32 }55 - { id: 20, class: vgpr_32 }56 - { id: 21, class: vgpr_32 }57 - { id: 22, class: vgpr_32 }58 - { id: 23, class: vgpr_32 }59 - { id: 24, class: vgpr_32 }60 - { id: 25, class: vgpr_32 }61 - { id: 26, class: vgpr_32 }62 - { id: 27, class: vgpr_32 }63 - { id: 28, class: vgpr_32 }64 - { id: 29, class: vgpr_32 }65 - { id: 30, class: vgpr_32 }66 - { id: 31, class: vgpr_32 }67 - { id: 32, class: vgpr_32 }68 - { id: 33, class: vgpr_32 }69 - { id: 34, class: vgpr_32 }70 - { id: 35, class: vgpr_32 }71 - { id: 36, class: vgpr_32 }72 - { id: 37, class: vgpr_32 }73 - { id: 38, class: vgpr_32 }74 - { id: 39, class: vgpr_32 }75 - { id: 40, class: vgpr_32 }76 - { id: 41, class: vgpr_32 }77 - { id: 42, class: vgpr_32 }78 - { id: 43, class: vgpr_32 }79 - { id: 44, class: vgpr_32 }80 - { id: 45, class: vgpr_32 }81 - { id: 46, class: vgpr_32 }82 - { id: 47, class: vgpr_32 }83 - { id: 48, class: vgpr_32 }84 - { id: 100, class: vgpr_32 }85body: |86 bb.0:87 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $sgpr30_sgpr3188 89 %2 = COPY $sgpr30_sgpr3190 %1 = COPY $vgpr2_vgpr391 %0 = COPY $vgpr0_vgpr192 %3 = FLAT_LOAD_DWORD %1, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32))93 94 %5 = S_MOV_B32 6553595 %6 = S_MOV_B32 6553596 97 %10 = V_LSHRREV_B32_e64 16, %3, implicit $exec98 %11 = V_MOV_B32_e32 %10, implicit $exec99 %12 = V_LSHLREV_B32_e64 16, %11, implicit $exec100 %14 = V_FRACT_F32_e32 123, implicit $mode, implicit $exec101 %15 = V_LSHLREV_B32_e64 16, %14, implicit $exec102 %16 = V_LSHRREV_B32_e64 16, %15, implicit $exec103 %17 = V_SIN_F32_e32 %16, implicit $mode, implicit $exec104 %18 = V_LSHLREV_B32_e64 16, %17, implicit $exec105 %19 = V_LSHRREV_B32_e64 16, %18, implicit $exec106 %20 = V_CVT_U32_F32_e32 %19, implicit $mode, implicit $exec107 %21 = V_LSHLREV_B32_e64 16, %20, implicit $exec108 %23 = V_CVT_F32_I32_e32 123, implicit $mode, implicit $exec109 %24 = V_LSHLREV_B32_e64 16, %23, implicit $exec110 111 %25 = V_LSHRREV_B32_e64 16, %3, implicit $exec112 %26 = V_MOV_B32_e64 %25, implicit $exec113 %26 = V_LSHLREV_B32_e64 16, %26, implicit $exec114 %27 = V_FRACT_F32_e64 0, %6, 0, 0, implicit $mode, implicit $exec115 %28 = V_LSHLREV_B32_e64 16, %27, implicit $exec116 %29 = V_LSHRREV_B32_e64 16, %28, implicit $exec117 %30 = V_SIN_F32_e64 0, %29, 0, 0, implicit $mode, implicit $exec118 %31 = V_LSHLREV_B32_e64 16, %30, implicit $exec119 %32 = V_LSHRREV_B32_e64 16, %31, implicit $exec120 %33 = V_CVT_U32_F32_e64 0, %32, 0, 0, implicit $mode, implicit $exec121 %34 = V_LSHLREV_B32_e64 16, %33, implicit $exec122 %35 = V_CVT_F32_I32_e64 %6, 0, 0, implicit $mode, implicit $exec123 %36 = V_LSHLREV_B32_e64 16, %35, implicit $exec124 125 126 %37 = V_LSHRREV_B32_e64 16, %36, implicit $exec127 %38 = V_FRACT_F32_e64 1, %37, 0, 0, implicit $mode, implicit $exec128 %39 = V_LSHLREV_B32_e64 16, %38, implicit $exec129 %40 = V_LSHRREV_B32_e64 16, %39, implicit $exec130 %41 = V_SIN_F32_e64 0, %40, 1, 0, implicit $mode, implicit $exec131 %42 = V_LSHLREV_B32_e64 16, %41, implicit $exec132 %43 = V_LSHRREV_B32_e64 16, %42, implicit $exec133 %44 = V_CVT_U32_F32_e64 1, %43, 0, 0, implicit $mode, implicit $exec134 %45 = V_LSHLREV_B32_e64 16, %44, implicit $exec135 %46 = V_LSHRREV_B32_e64 16, %45, implicit $exec136 %47 = V_CVT_F32_I32_e64 %46, 0, 1, implicit $mode, implicit $exec137 %48 = V_LSHLREV_B32_e64 16, %47, implicit $exec138 139 140 %100 = V_MOV_B32_e32 %48, implicit $exec141 142 FLAT_STORE_DWORD %0, %100, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32))143 $sgpr30_sgpr31 = COPY %2144 S_SETPC_B64_return $sgpr30_sgpr31145 146...147---148# GCN-LABEL: {{^}}name: vop2_instructions149 150 151# VI: %{{[0-9]+}}:vgpr_32 = V_AND_B32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 5, 0, 6, 5, implicit $exec152# VI: %{{[0-9]+}}:vgpr_32 = V_ADD_F32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 0, 5, 0, 5, 1, implicit $mode, implicit $exec153# VI: %{{[0-9]+}}:vgpr_32 = V_SUB_F16_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 0, 6, 0, 5, 1, implicit $mode, implicit $exec154# VI: %{{[0-9]+}}:vgpr_32 = V_MAC_F32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, %{{[0-9]+}}, 0, 0, 6, 0, 6, 1, implicit $mode, implicit $exec155# VI: %{{[0-9]+}}:vgpr_32 = V_MAC_F16_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, %{{[0-9]+}}, 0, 0, 6, 0, 5, 1, implicit $mode, implicit $exec156 157# GFX9: %{{[0-9]+}}:vgpr_32 = V_AND_B32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 5, 0, 6, 5, implicit $exec158# GFX9: %{{[0-9]+}}:vgpr_32 = V_ADD_F32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 0, 5, 0, 5, 1, implicit $mode, implicit $exec159# GFX9: %{{[0-9]+}}:vgpr_32 = V_SUB_F16_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 0, 6, 0, 5, 1, implicit $mode, implicit $exec160# GFX9: %{{[0-9]+}}:vgpr_32 = V_MAC_F32_e32 %{{[0-9]+}}, %{{[0-9]+}}, %{{[0-9]+}}, implicit $mode, implicit $exec161# GFX9: %{{[0-9]+}}:vgpr_32 = V_MAC_F16_e32 %{{[0-9]+}}, %{{[0-9]+}}, %{{[0-9]+}}, implicit $mode, implicit $exec162 163 164# VI: %{{[0-9]+}}:vgpr_32 = V_AND_B32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 5, 0, 6, 5, implicit $exec165# VI: %{{[0-9]+}}:vgpr_32 = V_ADD_F32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 0, 5, 0, 5, 1, implicit $mode, implicit $exec166# VI: %{{[0-9]+}}:vgpr_32 = V_SUB_F16_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 0, 5, 0, 6, 1, implicit $mode, implicit $exec167# VI: %{{[0-9]+}}:vgpr_32 = V_MAC_F32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, %{{[0-9]+}}, 0, 0, 6, 0, 6, 1, implicit $mode, implicit $exec168# VI: %{{[0-9]+}}:vgpr_32 = V_MAC_F16_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, %{{[0-9]+}}, 0, 0, 6, 0, 5, 1, implicit $mode, implicit $exec169 170# GFX9: %{{[0-9]+}}:vgpr_32 = V_AND_B32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 5, 0, 6, 5, implicit $exec171# GFX9: %{{[0-9]+}}:vgpr_32 = V_ADD_F32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 0, 5, 0, 5, 1, implicit $mode, implicit $exec172# GFX9: %{{[0-9]+}}:vgpr_32 = V_SUB_F16_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 0, 5, 0, 6, 1, implicit $mode, implicit $exec173# GFX9: %{{[0-9]+}}:vgpr_32 = V_MAC_F32_e64 0, 23, 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 0, implicit $mode, implicit $exec174# GFX9: %{{[0-9]+}}:vgpr_32 = V_MAC_F16_e64 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 0, implicit $mode, implicit $exec175 176 177# VI: %{{[0-9]+}}:vgpr_32 = V_ADD_F32_sdwa 0, %{{[0-9]+}}, 1, %{{[0-9]+}}, 0, 0, 5, 0, 5, 1, implicit $mode, implicit $exec178# VI: %{{[0-9]+}}:vgpr_32 = V_SUB_F16_sdwa 1, %{{[0-9]+}}, 1, %{{[0-9]+}}, 0, 0, 5, 0, 6, 1, implicit $mode, implicit $exec179# VI: %{{[0-9]+}}:vgpr_32 = V_MAC_F32_sdwa 1, %{{[0-9]+}}, 1, %{{[0-9]+}}, %{{[0-9]+}}, 1, 0, 6, 0, 6, 1, implicit $mode, implicit $exec180# VI: %{{[0-9]+}}:vgpr_32 = V_MAC_F16_e64 1, %{{[0-9]+}}, 1, %{{[0-9]+}}, 1, %{{[0-9]+}}, 0, 2, implicit $mode, implicit $exec181 182# GFX9: %{{[0-9]+}}:vgpr_32 = V_ADD_F32_sdwa 0, %{{[0-9]+}}, 1, %{{[0-9]+}}, 0, 0, 5, 0, 5, 1, implicit $mode, implicit $exec183# GFX9: %{{[0-9]+}}:vgpr_32 = V_SUB_F16_sdwa 1, %{{[0-9]+}}, 1, %{{[0-9]+}}, 0, 0, 5, 0, 6, 1, implicit $mode, implicit $exec184# GFX9: %{{[0-9]+}}:vgpr_32 = V_MAC_F32_e64 1, 23, 1, %{{[0-9]+}}, 1, %{{[0-9]+}}, 1, 0, implicit $mode, implicit $exec185# GFX9: %{{[0-9]+}}:vgpr_32 = V_MAC_F16_e64 1, %{{[0-9]+}}, 1, %{{[0-9]+}}, 1, %{{[0-9]+}}, 0, 2, implicit $mode, implicit $exec186 187name: vop2_instructions188tracksRegLiveness: true189registers:190 - { id: 0, class: vreg_64 }191 - { id: 1, class: vreg_64 }192 - { id: 2, class: sreg_64 }193 - { id: 3, class: vgpr_32 }194 - { id: 4, class: sreg_32_xm0 }195 - { id: 5, class: sreg_32_xm0 }196 - { id: 6, class: sreg_32_xm0 }197 - { id: 7, class: sreg_32_xm0 }198 - { id: 8, class: sreg_32 }199 - { id: 9, class: vgpr_32 }200 - { id: 10, class: vgpr_32 }201 - { id: 11, class: vgpr_32 }202 - { id: 12, class: vgpr_32 }203 - { id: 13, class: vgpr_32 }204 - { id: 14, class: vgpr_32 }205 - { id: 15, class: vgpr_32 }206 - { id: 16, class: vgpr_32 }207 - { id: 17, class: vgpr_32 }208 - { id: 18, class: vgpr_32 }209 - { id: 19, class: vgpr_32 }210 - { id: 20, class: vgpr_32 }211 - { id: 21, class: vgpr_32 }212 - { id: 22, class: vgpr_32 }213 - { id: 23, class: vgpr_32 }214 - { id: 24, class: vgpr_32 }215 - { id: 25, class: vgpr_32 }216 - { id: 26, class: vgpr_32 }217 - { id: 27, class: vgpr_32 }218 - { id: 28, class: vgpr_32 }219 - { id: 29, class: vgpr_32 }220 - { id: 30, class: vgpr_32 }221 - { id: 31, class: vgpr_32 }222 - { id: 32, class: vgpr_32 }223 - { id: 33, class: vgpr_32 }224 - { id: 34, class: vgpr_32 }225 - { id: 35, class: vgpr_32 }226 - { id: 36, class: vgpr_32 }227 - { id: 37, class: vgpr_32 }228 - { id: 38, class: vgpr_32 }229 - { id: 39, class: vgpr_32 }230 - { id: 40, class: vgpr_32 }231 - { id: 41, class: vgpr_32 }232 - { id: 42, class: vgpr_32 }233 - { id: 43, class: vgpr_32 }234 - { id: 44, class: vgpr_32 }235 - { id: 45, class: vgpr_32 }236 - { id: 46, class: vgpr_32 }237 - { id: 47, class: vgpr_32 }238 - { id: 48, class: vgpr_32 }239 - { id: 49, class: vgpr_32 }240 - { id: 50, class: vgpr_32 }241 - { id: 51, class: vgpr_32 }242 - { id: 52, class: vgpr_32 }243 - { id: 53, class: vgpr_32 }244 - { id: 54, class: vgpr_32 }245 - { id: 55, class: vgpr_32 }246 - { id: 56, class: vgpr_32 }247 - { id: 57, class: vgpr_32 }248 - { id: 58, class: vgpr_32 }249 - { id: 59, class: vgpr_32 }250 - { id: 60, class: vgpr_32 }251 - { id: 100, class: vgpr_32 }252body: |253 bb.0:254 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $sgpr30_sgpr31255 256 %2 = COPY $sgpr30_sgpr31257 %1 = COPY $vgpr2_vgpr3258 %0 = COPY $vgpr0_vgpr1259 %3 = FLAT_LOAD_DWORD %1, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32))260 261 %5 = S_MOV_B32 65535262 %6 = S_MOV_B32 65535263 264 %11 = V_LSHRREV_B32_e64 16, %3, implicit $exec265 %12 = V_AND_B32_e32 %6, %11, implicit $exec266 %13 = V_LSHLREV_B32_e64 16, %12, implicit $exec267 %14 = V_LSHRREV_B32_e64 16, %13, implicit $exec268 %15 = V_BFE_U32_e64 %13, 8, 8, implicit $exec269 %16 = V_ADD_F32_e32 %14, %15, implicit $mode, implicit $exec270 %17 = V_LSHLREV_B32_e64 16, %16, implicit $exec271 %18 = V_LSHRREV_B32_e64 16, %17, implicit $exec272 %19 = V_BFE_U32_e64 %17, 8, 8, implicit $exec273 %20 = V_SUB_F16_e32 %18, %19, implicit $mode, implicit $exec274 %21 = V_LSHLREV_B32_e64 16, %20, implicit $exec275 %22 = V_BFE_U32_e64 %20, 8, 8, implicit $exec276 %23 = V_MAC_F32_e32 %21, %22, %22, implicit $mode, implicit $exec277 %24 = V_LSHLREV_B32_e64 16, %23, implicit $exec278 %25 = V_LSHRREV_B32_e64 16, %24, implicit $exec279 %26 = V_BFE_U32_e64 %24, 8, 8, implicit $exec280 %27 = V_MAC_F16_e32 %25, %26, %26, implicit $mode, implicit $exec281 %28 = V_LSHLREV_B32_e64 16, %27, implicit $exec282 283 %29 = V_LSHRREV_B32_e64 16, %28, implicit $exec284 %30 = V_AND_B32_e64 23, %29, implicit $exec285 %31 = V_LSHLREV_B32_e64 16, %30, implicit $exec286 %32 = V_LSHRREV_B32_e64 16, %31, implicit $exec287 %33 = V_BFE_U32_e64 %31, 8, 8, implicit $exec288 %34 = V_ADD_F32_e64 0, %32, 0, %33, 0, 0, implicit $mode, implicit $exec289 %35 = V_LSHLREV_B32_e64 16, %34, implicit $exec290 %37 = V_BFE_U32_e64 %35, 8, 8, implicit $exec291 %38 = V_SUB_F16_e64 0, 23, 0, %37, 0, 0, implicit $mode, implicit $exec292 %39 = V_LSHLREV_B32_e64 16, %38, implicit $exec293 %40 = V_BFE_U32_e64 %39, 8, 8, implicit $exec294 %41 = V_MAC_F32_e64 0, 23, 0, %40, 0, %40, 0, 0, implicit $mode, implicit $exec295 %42 = V_LSHLREV_B32_e64 16, %41, implicit $exec296 %43 = V_LSHRREV_B32_e64 16, %42, implicit $exec297 %44 = V_BFE_U32_e64 %42, 8, 8, implicit $exec298 %45 = V_MAC_F16_e64 0, %43, 0, %44, 0, %44, 0, 0, implicit $mode, implicit $exec299 %46 = V_LSHLREV_B32_e64 16, %45, implicit $exec300 301 %47 = V_LSHRREV_B32_e64 16, %46, implicit $exec302 %48 = V_BFE_U32_e64 %46, 8, 8, implicit $exec303 %49 = V_ADD_F32_e64 0, %47, 1, %48, 0, 0, implicit $mode, implicit $exec304 %50 = V_LSHLREV_B32_e64 16, %49, implicit $exec305 %51 = V_BFE_U32_e64 %50, 8, 8, implicit $exec306 %52 = V_SUB_F16_e64 1, 23, 1, %51, 0, 0, implicit $mode, implicit $exec307 %53 = V_LSHLREV_B32_e64 16, %52, implicit $exec308 %54 = V_BFE_U32_e64 %53, 8, 8, implicit $exec309 %55 = V_MAC_F32_e64 1, 23, 1, %54, 1, %54, 1, 0, implicit $mode, implicit $exec310 %56 = V_LSHLREV_B32_e64 16, %55, implicit $exec311 %57 = V_LSHRREV_B32_e64 16, %56, implicit $exec312 %58 = V_BFE_U32_e64 %56, 8, 8, implicit $exec313 %59 = V_MAC_F16_e64 1, %57, 1, %58, 1, %58, 0, 2, implicit $mode, implicit $exec314 %60 = V_LSHLREV_B32_e64 16, %59, implicit $exec315 316 %100 = V_MOV_B32_e32 %60, implicit $exec317 318 FLAT_STORE_DWORD %0, %100, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32))319 $sgpr30_sgpr31 = COPY %2320 S_SETPC_B64_return $sgpr30_sgpr31321 322...323---324 325# GCN-LABEL: {{^}}name: vopc_instructions326 327# GFX89: %{{[0-9]+}}:vgpr_32 = V_MOV_B32_e32 123, implicit $exec328# GFX89: $vcc = V_CMP_EQ_F32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 6, 4, implicit $mode, implicit $exec329# GFX89: $vcc = V_CMPX_GT_F32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 6, 4, implicit-def $exec, implicit $mode, implicit $exec330# GFX89: $vcc = V_CMP_LT_I32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 6, 4, implicit $exec331# GFX89: $vcc = V_CMPX_EQ_I32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 6, 4, implicit-def $exec, implicit $exec332 333 334# VI: $vcc = V_CMP_EQ_F32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 6, 4, implicit $mode, implicit $exec335# VI: %{{[0-9]+}}:sreg_64 = V_CMPX_GT_F32_e64 0, 23, 0, killed %{{[0-9]+}}, 0, implicit-def $exec, implicit $mode, implicit $exec336# VI: $vcc = V_CMP_LT_I32_sdwa 0, %{{[0-9]+}}, 0, %3, 0, 6, 4, implicit $exec337# VI: %{{[0-9]+}}:sreg_64 = V_CMPX_EQ_I32_e64 23, killed %{{[0-9]+}}, implicit-def $exec, implicit $exec338 339# GFX9: $vcc = V_CMP_EQ_F32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 6, 4, implicit $mode, implicit $exec340# GFX9: %{{[0-9]+}}:vgpr_32 = V_MOV_B32_e32 23, implicit $exec341# GFX9: %{{[0-9]+}}:sreg_64 = V_CMPX_GT_F32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 6, 4, implicit-def $exec, implicit $mode, implicit $exec342# GFX9: $vcc = V_CMP_LT_I32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 6, 4, implicit $exec343# GFX9: %{{[0-9]+}}:vgpr_32 = V_MOV_B32_e32 23, implicit $exec344# GFX9: %{{[0-9]+}}:sreg_64 = V_CMPX_EQ_I32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 6, 4, implicit-def $exec, implicit $exec345 346 347# VI: $vcc = V_CMP_EQ_F32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 1, 6, 4, implicit $mode, implicit $exec348# VI: $vcc = V_CMPX_GT_F32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 6, 4, implicit-def $exec, implicit $mode, implicit $exec349# VI: $vcc = V_CMP_EQ_F32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 1, 6, 4, implicit $mode, implicit $exec350# VI: $vcc = V_CMPX_GT_F32_sdwa 1, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 6, 4, implicit-def $exec, implicit $mode, implicit $exec351# VI: $vcc = V_CMPX_GT_F32_sdwa 0, %{{[0-9]+}}, 1, %{{[0-9]+}}, 0, 6, 4, implicit-def $exec, implicit $mode, implicit $exec352# VI: $vcc = V_CMPX_GT_F32_sdwa 1, %{{[0-9]+}}, 1, %{{[0-9]+}}, 0, 6, 4, implicit-def $exec, implicit $mode, implicit $exec353# VI: $vcc = V_CMPX_GT_F32_sdwa 1, %{{[0-9]+}}, 1, %{{[0-9]+}}, 1, 6, 4, implicit-def $exec, implicit $mode, implicit $exec354 355# GFX9: $vcc = V_CMP_EQ_F32_e64 0, %{{[0-9]+}}, 0, killed %{{[0-9]+}}, 1, implicit $mode, implicit $exec356# GFX9: $vcc = V_CMPX_GT_F32_sdwa 0, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 6, 4, implicit-def $exec, implicit $mode, implicit $exec357# GFX9: $vcc = V_CMP_EQ_F32_e64 0, %{{[0-9]+}}, 0, killed %{{[0-9]+}}, 1, implicit $mode, implicit $exec358# GFX9: $vcc = V_CMPX_GT_F32_sdwa 1, %{{[0-9]+}}, 0, %{{[0-9]+}}, 0, 6, 4, implicit-def $exec, implicit $mode, implicit $exec359# GFX9: $vcc = V_CMPX_GT_F32_sdwa 0, %{{[0-9]+}}, 1, %{{[0-9]+}}, 0, 6, 4, implicit-def $exec, implicit $mode, implicit $exec360# GFX9: $vcc = V_CMPX_GT_F32_sdwa 1, %{{[0-9]+}}, 1, %{{[0-9]+}}, 0, 6, 4, implicit-def $exec, implicit $mode, implicit $exec361# GFX9: $vcc = V_CMPX_GT_F32_e64 1, 23, 1, killed %{{[0-9]+}}, 1, implicit-def $exec, implicit $mode, implicit $exec362 363 364name: vopc_instructions365tracksRegLiveness: true366registers:367 - { id: 0, class: vreg_64 }368 - { id: 1, class: vreg_64 }369 - { id: 2, class: sreg_64 }370 - { id: 3, class: vgpr_32 }371 - { id: 4, class: sreg_32_xm0 }372 - { id: 5, class: sreg_32_xm0 }373 - { id: 6, class: sreg_32_xm0 }374 - { id: 7, class: sreg_32_xm0 }375 - { id: 8, class: sreg_32 }376 - { id: 9, class: vgpr_32 }377 - { id: 10, class: vgpr_32 }378 - { id: 11, class: vgpr_32 }379 - { id: 12, class: vgpr_32 }380 - { id: 13, class: vgpr_32 }381 - { id: 14, class: vgpr_32 }382 - { id: 15, class: vgpr_32 }383 - { id: 16, class: vgpr_32 }384 - { id: 17, class: vgpr_32 }385 - { id: 18, class: sreg_64 }386 - { id: 19, class: sreg_64 }387 - { id: 20, class: vgpr_32 }388 - { id: 21, class: vgpr_32 }389 - { id: 22, class: vgpr_32 }390 - { id: 23, class: vgpr_32 }391 - { id: 24, class: vgpr_32 }392 - { id: 25, class: vgpr_32 }393 - { id: 26, class: vgpr_32 }394 - { id: 27, class: vgpr_32 }395 - { id: 100, class: vgpr_32 }396body: |397 bb.0:398 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $sgpr30_sgpr31399 400 %2 = COPY $sgpr30_sgpr31401 %1 = COPY $vgpr2_vgpr3402 %0 = COPY $vgpr0_vgpr1403 %3 = FLAT_LOAD_DWORD %1, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32))404 405 %5 = S_MOV_B32 65535406 %6 = S_MOV_B32 65535407 408 %10 = V_AND_B32_e64 %5, %3, implicit $exec409 V_CMP_EQ_F32_e32 123, killed %10, implicit-def $vcc, implicit $mode, implicit $exec410 %11 = V_AND_B32_e64 %5, %3, implicit $exec411 V_CMPX_GT_F32_e32 123, killed %11, implicit-def $vcc, implicit $mode, implicit-def $exec, implicit $exec412 %12 = V_AND_B32_e64 %5, %3, implicit $exec413 V_CMP_LT_I32_e32 123, killed %12, implicit-def $vcc, implicit $exec414 %13 = V_AND_B32_e64 %5, %3, implicit $exec415 V_CMPX_EQ_I32_e32 123, killed %13, implicit-def $vcc, implicit-def $exec, implicit $exec416 417 %14 = V_AND_B32_e64 %5, %3, implicit $exec418 $vcc = V_CMP_EQ_F32_e64 0, %6, 0, killed %14, 0, implicit $mode, implicit $exec419 %15 = V_AND_B32_e64 %5, %3, implicit $exec420 %18 = V_CMPX_GT_F32_e64 0, 23, 0, killed %15, 0, implicit-def $exec, implicit $mode, implicit $exec421 %16 = V_AND_B32_e64 %5, %3, implicit $exec422 $vcc = V_CMP_LT_I32_e64 %6, killed %16, implicit $exec423 %17 = V_AND_B32_e64 %5, %3, implicit $exec424 %19 = V_CMPX_EQ_I32_e64 23, killed %17, implicit-def $exec, implicit $exec425 426 %20 = V_AND_B32_e64 %5, %3, implicit $exec427 $vcc = V_CMP_EQ_F32_e64 0, %6, 0, killed %20, 1, implicit $mode, implicit $exec428 %21 = V_AND_B32_e64 %5, %3, implicit $exec429 $vcc = V_CMPX_GT_F32_e64 0, 23, 0, killed %21, 0, implicit-def $exec, implicit $mode, implicit $exec430 %23 = V_AND_B32_e64 %5, %3, implicit $exec431 $vcc = V_CMP_EQ_F32_e64 0, %6, 0, killed %23, 1, implicit $mode, implicit $exec432 %24 = V_AND_B32_e64 %5, %3, implicit $exec433 $vcc = V_CMPX_GT_F32_e64 1, 23, 0, killed %24, 0, implicit-def $exec, implicit $mode, implicit $exec434 %25 = V_AND_B32_e64 %5, %3, implicit $exec435 $vcc = V_CMPX_GT_F32_e64 0, 23, 1, killed %25, 0, implicit-def $exec, implicit $mode, implicit $exec436 %26 = V_AND_B32_e64 %5, %3, implicit $exec437 $vcc = V_CMPX_GT_F32_e64 1, 23, 1, killed %26, 0, implicit-def $exec, implicit $mode, implicit $exec438 %27 = V_AND_B32_e64 %5, %3, implicit $exec439 $vcc = V_CMPX_GT_F32_e64 1, 23, 1, killed %27, 1, implicit-def $exec, implicit $mode, implicit $exec440 441 442 %100 = V_MOV_B32_e32 $vcc_lo, implicit $exec443 444 FLAT_STORE_DWORD %0, %100, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32))445 $sgpr30_sgpr31 = COPY %2446 S_SETPC_B64_return $sgpr30_sgpr31447...448 449# GCN-LABEL: name: preserve_flags450# GCN: = nnan nofpexcept V_ADD_F32_sdwa 0, %4, 0, %4, 0, 0, 6, 0, 5, 1, implicit $mode, implicit $exec451 452---453name: preserve_flags454tracksRegLiveness: true455 456body: |457 bb.0:458 liveins: $vgpr0459 460 %0:vgpr_32 = COPY $vgpr0461 %1:sreg_32 = S_MOV_B32 65535462 %2:vgpr_32 = V_LSHRREV_B32_e64 16, %0, implicit $exec463 %3:vgpr_32 = V_AND_B32_e32 %1, %2, implicit $exec464 %4:vgpr_32 = V_LSHLREV_B32_e64 16, %3, implicit $exec465 %5:vgpr_32 = V_LSHRREV_B32_e64 16, %4, implicit $exec466 %6:vgpr_32 = V_BFE_U32_e64 %4, 8, 8, implicit $exec467 %7:vgpr_32 = nnan nofpexcept V_ADD_F32_e32 %5, %6, implicit $mode, implicit $exec468 S_ENDPGM 0, implicit %7469 470...471