brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.1 KiB · 60d8210 Raw
430 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=tahiti -run-pass post-RA-hazard-rec  %s -o - | FileCheck %s -check-prefixes=GCN,SICI2# RUN: llc -mtriple=amdgcn -mcpu=hawaii -run-pass post-RA-hazard-rec  %s -o - | FileCheck %s -check-prefixes=GCN,CIVI,SICI3# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass post-RA-hazard-rec  %s -o - | FileCheck %s -check-prefixes=GCN,CIVI,VI4# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass post-RA-hazard-rec  %s -o - | FileCheck %s -check-prefixes=GCN,CIVI,VI,GFX95 6--- |7  define amdgpu_kernel void @div_fmas() { ret void }8  define amdgpu_kernel void @s_getreg() { ret void }9  define amdgpu_kernel void @s_setreg() { ret void }10  define amdgpu_kernel void @vmem_gt_8dw_store() { ret void }11  define amdgpu_kernel void @readwrite_lane() { ret void }12  define amdgpu_kernel void @rfe() { ret void }13  define amdgpu_kernel void @s_movrel() { ret void }14  define amdgpu_kernel void @v_interp() { ret void }15  define amdgpu_kernel void @dpp() { ret void }16...17---18# GCN-LABEL: name: div_fmas19 20# GCN-LABEL: bb.0:21# GCN: S_MOV_B6422# GCN-NOT: S_NOP23# GCN: V_DIV_FMAS24 25# GCN-LABEL: bb.1:26# GCN: V_CMP_EQ_I3227# GCN: S_NOP 328# GCN: V_DIV_FMAS_F3229 30# GCN-LABEL: bb.2:31# GCN: V_CMP_EQ_I3232# GCN: S_NOP 333# GCN: V_DIV_FMAS_F3234 35# GCN-LABEL: bb.3:36# GCN: V_DIV_SCALE_F3237# GCN: S_NOP 338# GCN: V_DIV_FMAS_F3239name: div_fmas40 41body: |42  bb.0:43    $vcc = S_MOV_B64 044    $vgpr0 = V_DIV_FMAS_F32_e64 0, $vgpr1, 0, $vgpr2, 0, $vgpr3, 0, 0, implicit $mode, implicit $vcc, implicit $exec45    S_BRANCH %bb.146 47  bb.1:48    implicit $vcc = V_CMP_EQ_I32_e32 $vgpr1, $vgpr2, implicit $exec49    $vgpr0 = V_DIV_FMAS_F32_e64 0, $vgpr1, 0, $vgpr2, 0, $vgpr3, 0, 0, implicit $mode, implicit $vcc, implicit $exec50    S_BRANCH %bb.251 52  bb.2:53    $vcc = V_CMP_EQ_I32_e64 $vgpr1, $vgpr2, implicit $exec54    $vgpr0 = V_DIV_FMAS_F32_e64 0, $vgpr1, 0, $vgpr2, 0, $vgpr3, 0, 0, implicit $mode, implicit $vcc, implicit $exec55    S_BRANCH %bb.356 57  bb.3:58    $vgpr4, $vcc = V_DIV_SCALE_F32_e64 0, $vgpr1, 0, $vgpr1, 0, $vgpr3, 0, 0, implicit $mode, implicit $exec59    $vgpr0 = V_DIV_FMAS_F32_e64 0, $vgpr1, 0, $vgpr2, 0, $vgpr3, 0, 0, implicit $mode, implicit $vcc, implicit $exec60    S_ENDPGM 061 62...63 64...65---66# GCN-LABEL: name: s_getreg67 68# GCN-LABEL: bb.0:69# GCN: S_SETREG70# GCN: S_NOP 171# GCN: S_GETREG72 73# GCN-LABEL: bb.1:74# GCN: S_SETREG_IMM3275# GCN: S_NOP 176# GCN: S_GETREG77 78# GCN-LABEL: bb.2:79# GCN: S_SETREG80# GCN: S_NOP 081# GCN: S_GETREG82 83# GCN-LABEL: bb.3:84# GCN: S_SETREG85# GCN-NEXT: S_GETREG86 87name: s_getreg88 89body: |90  bb.0:91    S_SETREG_B32 $sgpr0, 1, implicit-def $mode, implicit $mode92    $sgpr1 = S_GETREG_B32 1, implicit-def $mode, implicit $mode93    S_BRANCH %bb.194 95  bb.1:96    S_SETREG_IMM32_B32 0, 1, implicit-def $mode, implicit $mode97    $sgpr1 = S_GETREG_B32 1, implicit-def $mode, implicit $mode98    S_BRANCH %bb.299 100  bb.2:101    S_SETREG_B32 $sgpr0, 1, implicit-def $mode, implicit $mode102    $sgpr1 = S_MOV_B32 0103    $sgpr2 = S_GETREG_B32 1, implicit-def $mode, implicit $mode104    S_BRANCH %bb.3105 106  bb.3:107    S_SETREG_B32 $sgpr0, 0, implicit-def $mode, implicit $mode108    $sgpr1 = S_GETREG_B32 1, implicit-def $mode, implicit $mode109    S_ENDPGM 0110...111 112...113---114# GCN-LABEL: name: s_setreg115 116# GCN-LABEL: bb.0:117# GCN: S_SETREG118# SICI: S_NOP 0119# VI: S_NOP 1120# GCN: S_SETREG121 122# GCN-LABEL: bb.1:123# GCN: S_SETREG124# SICI: S_NOP 0125# VI: S_NOP 1126# GCN: S_SETREG127 128# GCN-LABEL: bb.2:129# GCN: S_SETREG130# GCN-NEXT: S_SETREG131 132name: s_setreg133 134body: |135  bb.0:136    S_SETREG_B32 $sgpr0, 1, implicit-def $mode, implicit $mode137    S_SETREG_B32 $sgpr1, 1, implicit-def $mode, implicit $mode138    S_BRANCH %bb.1139 140  bb.1:141    S_SETREG_B32 $sgpr0, 64, implicit-def $mode, implicit $mode142    S_SETREG_B32 $sgpr1, 128, implicit-def $mode, implicit $mode143    S_BRANCH %bb.2144 145  bb.2:146    S_SETREG_B32 $sgpr0, 1, implicit-def $mode, implicit $mode147    S_SETREG_B32 $sgpr1, 0, implicit-def $mode, implicit $mode148    S_ENDPGM 0149...150 151...152---153# GCN-LABEL: name: vmem_gt_8dw_store154 155# GCN-LABEL: bb.0:156# GCN: BUFFER_STORE_DWORD_OFFSET157# GCN-NEXT: V_MOV_B32158# GCN: BUFFER_STORE_DWORDX3_OFFSET159# CIVI: S_NOP160# GCN-NEXT: V_MOV_B32161# GCN: BUFFER_STORE_DWORDX4_OFFSET162# GCN-NEXT: V_MOV_B32163# GCN: BUFFER_STORE_DWORDX4_OFFSET164# CIVI: S_NOP165# GCN-NEXT: V_MOV_B32166# GCN: BUFFER_STORE_FORMAT_XYZ_OFFSET167# CIVI: S_NOP168# GCN-NEXT: V_MOV_B32169# GCN: BUFFER_STORE_FORMAT_XYZW_OFFSET170# CIVI: S_NOP171# GCN-NEXT: V_MOV_B32172 173# GCN-LABEL: bb.1:174# GCN: FLAT_STORE_DWORDX2175# GCN-NEXT: V_MOV_B32176# GCN: FLAT_STORE_DWORDX3177# CIVI: S_NOP178# GCN-NEXT: V_MOV_B32179# GCN: FLAT_STORE_DWORDX4180# CIVI: S_NOP181# GCN-NEXT: V_MOV_B32182# GCN: FLAT_ATOMIC_CMPSWAP_X2183# CIVI: S_NOP184# GCN-NEXT: V_MOV_B32185# GCN: FLAT_ATOMIC_FCMPSWAP_X2186# CIVI: S_NOP187# GCN: V_MOV_B32188 189name: vmem_gt_8dw_store190 191body: |192  bb.0:193    BUFFER_STORE_DWORD_OFFSET $vgpr3, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec194    $vgpr3 = V_MOV_B32_e32 0, implicit $exec195    BUFFER_STORE_DWORDX3_OFFSET $vgpr2_vgpr3_vgpr4, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec196    $vgpr3 = V_MOV_B32_e32 0, implicit $exec197    BUFFER_STORE_DWORDX4_OFFSET $vgpr2_vgpr3_vgpr4_vgpr5, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec198    $vgpr3 = V_MOV_B32_e32 0, implicit $exec199    BUFFER_STORE_DWORDX4_OFFSET $vgpr2_vgpr3_vgpr4_vgpr5, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec200    $vgpr3 = V_MOV_B32_e32 0, implicit $exec201    BUFFER_STORE_FORMAT_XYZ_OFFSET $vgpr2_vgpr3_vgpr4, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec202    $vgpr3 = V_MOV_B32_e32 0, implicit $exec203    BUFFER_STORE_FORMAT_XYZW_OFFSET $vgpr2_vgpr3_vgpr4_vgpr5, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec204    $vgpr3 = V_MOV_B32_e32 0, implicit $exec205    BUFFER_ATOMIC_CMPSWAP_X2_OFFSET $vgpr2_vgpr3_vgpr4_vgpr5, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, implicit $exec206    $vgpr3 = V_MOV_B32_e32 0, implicit $exec207    S_BRANCH %bb.1208 209  bb.1:210    FLAT_STORE_DWORDX2 $vgpr0_vgpr1, $vgpr2_vgpr3, 0, 0, implicit $exec, implicit $flat_scr211    $vgpr3 = V_MOV_B32_e32 0, implicit $exec212    FLAT_STORE_DWORDX3 $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4, 0, 0, implicit $exec, implicit $flat_scr213    $vgpr3 = V_MOV_B32_e32 0, implicit $exec214    FLAT_STORE_DWORDX4 $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5, 0, 0, implicit $exec, implicit $flat_scr215    $vgpr3 = V_MOV_B32_e32 0, implicit $exec216    FLAT_ATOMIC_CMPSWAP_X2 $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5, 0, 0, implicit $exec, implicit $flat_scr217    $vgpr3 = V_MOV_B32_e32 0, implicit $exec218    FLAT_ATOMIC_FCMPSWAP_X2 $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5, 0, 0, implicit $exec, implicit $flat_scr219    $vgpr3 = V_MOV_B32_e32 0, implicit $exec220    S_ENDPGM 0221 222...223 224...225---226 227# GCN-LABEL: name: readwrite_lane228 229# GCN-LABEL: bb.0:230# GCN: V_ADD_CO_U32231# GCN: S_NOP 3232# GCN: V_READLANE_B32233 234# GCN-LABEL: bb.1:235# GCN: V_ADD_CO_U32236# GCN: S_NOP 3237# GCN: V_WRITELANE_B32238 239# GCN-LABEL: bb.2:240# GCN: V_ADD_CO_U32241# GCN: S_NOP 3242# GCN: V_READLANE_B32243 244# GCN-LABEL: bb.3:245# GCN: V_ADD_CO_U32246# GCN: S_NOP 3247# GCN: V_WRITELANE_B32248 249name: readwrite_lane250 251body: |252  bb.0:253    $vgpr0,$sgpr0_sgpr1 = V_ADD_CO_U32_e64 $vgpr1, $vgpr2, implicit $vcc, 0, implicit $exec254    $sgpr4 = V_READLANE_B32 $vgpr4, $sgpr0255    S_BRANCH %bb.1256 257  bb.1:258    $vgpr0,$sgpr0_sgpr1 = V_ADD_CO_U32_e64 $vgpr1, $vgpr2, implicit $vcc, 0, implicit $exec259    $vgpr4 = V_WRITELANE_B32 $sgpr0, $sgpr0, $vgpr4260    S_BRANCH %bb.2261 262  bb.2:263    $vgpr0,implicit $vcc = V_ADD_CO_U32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec264    $sgpr4 = V_READLANE_B32 $vgpr4, $vcc_lo265    S_BRANCH %bb.3266 267  bb.3:268    $m0 = S_MOV_B32 $sgpr4269    $vgpr0,implicit $vcc = V_ADD_CO_U32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec270    $vgpr4 = V_WRITELANE_B32 $m0, $vcc_lo, $vgpr4271    S_ENDPGM 0272 273...274 275...276---277 278# GCN-LABEL: name: rfe279 280# GCN-LABEL: bb.0:281# GCN: S_SETREG282# VI: S_NOP283# GCN-NEXT: S_RFE_B64284 285# GCN-LABEL: bb.1:286# GCN: S_SETREG287# GCN-NEXT: S_RFE_B64288 289name: rfe290 291body: |292  bb.0:293    S_SETREG_B32 $sgpr0, 3, implicit-def $mode, implicit $mode294    S_RFE_B64 $sgpr2_sgpr3295    S_BRANCH %bb.1296 297  bb.1:298    S_SETREG_B32 $sgpr0, 0, implicit-def $mode, implicit $mode299    S_RFE_B64 $sgpr2_sgpr3300    S_ENDPGM 0301 302...303 304...305---306 307# GCN-LABEL: name: s_movrel308 309# GCN-LABEL: bb.0:310# GCN: S_MOV_B32311# GFX9: S_NOP312# GCN-NEXT: S_MOVRELS_B32313 314# GCN-LABEL: bb.1:315# GCN: S_MOV_B32316# GFX9: S_NOP317# GCN-NEXT: S_MOVRELS_B64318 319# GCN-LABEL: bb.2:320# GCN: S_MOV_B32321# GFX9: S_NOP322# GCN-NEXT: S_MOVRELD_B32323 324# GCN-LABEL: bb.3:325# GCN: S_MOV_B32326# GFX9: S_NOP327# GCN-NEXT: S_MOVRELD_B64328 329name: s_movrel330 331body: |332  bb.0:333    $m0 = S_MOV_B32 0334    $sgpr0 = S_MOVRELS_B32 $sgpr0, implicit $m0335    S_BRANCH %bb.1336 337  bb.1:338    $m0 = S_MOV_B32 0339    $sgpr0_sgpr1 = S_MOVRELS_B64 $sgpr0_sgpr1, implicit $m0340    S_BRANCH %bb.2341 342  bb.2:343    $m0 = S_MOV_B32 0344    S_MOVRELD_B32 $sgpr0, $sgpr0, implicit $m0345    S_BRANCH %bb.3346 347  bb.3:348    $m0 = S_MOV_B32 0349    S_MOVRELD_B64 $sgpr0_sgpr1, $sgpr0_sgpr1, implicit $m0350    S_ENDPGM 0351...352 353...354---355 356# GCN-LABEL: name: v_interp357 358# GCN-LABEL: bb.0:359# GCN: S_MOV_B32360# GFX9-NEXT: S_NOP361# GCN-NEXT: V_INTERP_P1_F32362 363# GCN-LABEL: bb.1:364# GCN: S_MOV_B32365# GFX9-NEXT: S_NOP366# GCN-NEXT: V_INTERP_P2_F32367 368# GCN-LABEL: bb.2:369# GCN: S_MOV_B32370# GFX9-NEXT: S_NOP371# GCN-NEXT: V_INTERP_P1_F32_16bank372 373# GCN-LABEL: bb.3:374# GCN: S_MOV_B32375# GFX9-NEXT: S_NOP376# GCN-NEXT: V_INTERP_MOV_F32377 378name: v_interp379 380body: |381  bb.0:382    $m0 = S_MOV_B32 0383    $vgpr0 = V_INTERP_P1_F32 $vgpr0, 0, 0, implicit $mode, implicit $m0, implicit $exec384    S_BRANCH %bb.1385 386  bb.1:387    $m0 = S_MOV_B32 0388    $vgpr0 = V_INTERP_P2_F32 $vgpr0, $vgpr1, 0, 0, implicit $mode, implicit $m0, implicit $exec389    S_BRANCH %bb.2390 391  bb.2:392    $m0 = S_MOV_B32 0393    $vgpr0 = V_INTERP_P1_F32_16bank $vgpr0, 0, 0, implicit $mode, implicit $m0, implicit $exec394    S_BRANCH %bb.3395 396  bb.3:397    $m0 = S_MOV_B32 0398    $vgpr0 = V_INTERP_MOV_F32 0, 0, 0, implicit $mode, implicit $m0, implicit $exec399    S_ENDPGM 0400...401 402...403---404 405# GCN-LABEL: name: dpp406 407# VI-LABEL: bb.0:408# VI: V_MOV_B32_e32409# VI-NEXT: S_NOP 1410# VI-NEXT: V_MOV_B32_dpp411 412# VI-LABEL: bb.1:413# VI: V_CMPX_EQ_I32_e32414# VI-NEXT: S_NOP 4415# VI-NEXT: V_MOV_B32_dpp416 417name: dpp418 419body: |420  bb.0:421    $vgpr0 = V_MOV_B32_e32 0, implicit $exec422    $vgpr1 = V_MOV_B32_dpp $vgpr1, $vgpr0, 0, 15, 15, 0, implicit $exec423    S_BRANCH %bb.1424 425  bb.1:426    implicit $exec, implicit $vcc = V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit $exec427    $vgpr3 = V_MOV_B32_dpp $vgpr3, $vgpr0, 0, 15, 15, 0, implicit $exec428    S_ENDPGM 0429...430