diff options
| author | Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com> | 2019-07-11 21:30:34 +0000 |
|---|---|---|
| committer | Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com> | 2019-07-11 21:30:34 +0000 |
| commit | 7d2019bb961f94eec476f255bb776d470ecd1b49 (patch) | |
| tree | ea7688d412ff94d75a08dad4115cd27511dbc376 /llvm/test | |
| parent | 7b4a59db1e01408cbf32c5d10688aa00692bbeec (diff) | |
| download | bcm5719-llvm-7d2019bb961f94eec476f255bb776d470ecd1b49.tar.gz bcm5719-llvm-7d2019bb961f94eec476f255bb776d470ecd1b49.zip | |
[AMDGPU] gfx908 hazard recognizer
Differential Revision: https://reviews.llvm.org/D64593
llvm-svn: 365829
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/CodeGen/AMDGPU/mai-hazards.mir | 457 |
1 files changed, 457 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/AMDGPU/mai-hazards.mir b/llvm/test/CodeGen/AMDGPU/mai-hazards.mir new file mode 100644 index 00000000000..9f49f9fd585 --- /dev/null +++ b/llvm/test/CodeGen/AMDGPU/mai-hazards.mir @@ -0,0 +1,457 @@ +# RUN: llc -march=amdgcn -mcpu=gfx908 -verify-machineinstrs -run-pass post-RA-hazard-rec %s -o - | FileCheck -check-prefix=GCN %s + +# GCN-LABEL: name: valu_write_vgpr_mfma_read +# GCN: V_MOV_B32 +# GCN: V_MOV_B32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_MFMA +name: valu_write_vgpr_mfma_read +body: | + bb.0: + $vgpr0 = V_MOV_B32_e32 1, implicit $exec + $vgpr1 = V_MOV_B32_e32 1, implicit $exec + $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32 killed $vgpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $exec +... +--- + +# GCN-LABEL: name: valu_write_vgpr_accvgpr_write_read +# GCN: V_MOV_B32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_ACCVGPR_WRITE_B32 +name: valu_write_vgpr_accvgpr_write_read +body: | + bb.0: + $vgpr0 = V_MOV_B32_e32 1, implicit $exec + $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec +... +--- + +# GCN-LABEL: name: mfma_write_agpr_mfma_read_same_agpr +# GCN: V_MFMA +# GCN-NEXT: V_MFMA +name: mfma_write_agpr_mfma_read_same_agpr +body: | + bb.0: + $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32 killed $vgpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $exec + $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32 killed $vgpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $exec +... +--- + +# GCN-LABEL: name: mfma_write_agpr_mfma_read_overlap +# GCN: V_MFMA +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_MFMA +name: mfma_write_agpr_mfma_read_overlap +body: | + bb.0: + $agpr1_agpr2_agpr3_agpr4 = V_MFMA_F32_4X4X1F32 killed $vgpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $exec + $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32 killed $vgpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $exec +... +--- + +# GCN-LABEL: name: mfma_write_agpr_mfma_read_partial +# GCN: V_MFMA +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_MFMA +name: mfma_write_agpr_mfma_read_partial +body: | + bb.0: + $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15 = V_MFMA_F32_16X16X1F32 killed $vgpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, 0, 0, 0, implicit $exec + $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32 killed $vgpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $exec +... +--- + +# GCN-LABEL: name: mfma_write_agpr_mfma_srca_read_overlap +# GCN: V_MFMA +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_MFMA +name: mfma_write_agpr_mfma_srca_read_overlap +body: | + bb.0: + $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32 killed $vgpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $exec + $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32 killed $agpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $exec +... +--- + +# GCN-LABEL: name: mfma_write_agpr_mfma_srcb_read_overlap +# GCN: V_MFMA +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_MFMA +name: mfma_write_agpr_mfma_srcb_read_overlap +body: | + bb.0: + $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32 killed $vgpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $exec + $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32 killed $vgpr1, killed $agpr0, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $exec +... +--- + +# GCN-LABEL: name: mfma_4x4_write_agpr_accvgpr_read +# GCN: V_MFMA_F32_4X4X1F32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_ACCVGPR_READ_B32 +name: mfma_4x4_write_agpr_accvgpr_read +body: | + bb.0: + $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32 killed $vgpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $exec + $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec +... +--- + +# GCN-LABEL: name: mfma_16x16_write_agpr_accvgpr_read +# GCN: V_MFMA_F32_16X16X1F32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_ACCVGPR_READ_B32 +name: mfma_16x16_write_agpr_accvgpr_read +body: | + bb.0: + $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15 = V_MFMA_F32_16X16X1F32 killed $vgpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, 0, 0, 0, implicit $exec + $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec +... +--- + +# GCN-LABEL: name: mfma_32x32_write_agpr_accvgpr_read +# GCN: V_MFMA_F32_32X32X2F32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_ACCVGPR_READ_B32 +name: mfma_32x32_write_agpr_accvgpr_read +body: | + bb.0: + $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15 = V_MFMA_F32_32X32X2F32 killed $vgpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, 0, 0, 0, implicit $exec + $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec +... +--- + +# GCN-LABEL: name: mfma_4x4_write_agpr_accvgpr_write +# GCN: V_MFMA_F32_4X4X1F32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_ACCVGPR_WRITE_B32 +name: mfma_4x4_write_agpr_accvgpr_write +body: | + bb.0: + $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32 killed $vgpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $exec + $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec +... +--- + +# GCN-LABEL: name: mfma_16x16_write_agpr_accvgpr_write +# GCN: V_MFMA_F32_16X16X1F32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_ACCVGPR_WRITE_B32 +name: mfma_16x16_write_agpr_accvgpr_write +body: | + bb.0: + $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15 = V_MFMA_F32_16X16X1F32 killed $vgpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, 0, 0, 0, implicit $exec + $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec +... +--- + +# GCN-LABEL: name: mfma_32x32_write_agpr_accvgpr_write +# GCN: V_MFMA_F32_32X32X2F32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_ACCVGPR_WRITE_B32 +name: mfma_32x32_write_agpr_accvgpr_write +body: | + bb.0: + $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15 = V_MFMA_F32_32X32X2F32 killed $vgpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, 0, 0, 0, implicit $exec + $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec +... +--- + +# GCN-LABEL: name: mfma_4x4_read_srcc_accvgpr_write +# GCN: V_MFMA_F32_4X4X1F32 +# GCN-NEXT: V_ACCVGPR_WRITE_B32 +name: mfma_4x4_read_srcc_accvgpr_write +body: | + bb.0: + $agpr4_agpr5_agpr6_agpr7 = V_MFMA_F32_4X4X1F32 killed $vgpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $exec + $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec +... +--- + +# GCN-LABEL: name: mfma_16x16_read_srcc_accvgpr_write +# GCN: V_MFMA_F32_16X16X1F32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_ACCVGPR_WRITE_B32 +name: mfma_16x16_read_srcc_accvgpr_write +body: | + bb.0: + $agpr16_agpr17_agpr18_agpr19_agpr20_agpr21_agpr22_agpr23_agpr24_agpr25_agpr26_agpr27_agpr28_agpr29_agpr30_agpr31 = V_MFMA_F32_16X16X1F32 killed $vgpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, 0, 0, 0, implicit $exec + $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec +... +--- + +# GCN-LABEL: name: mfma_32x32_read_srcc_accvgpr_write +# GCN: V_MFMA_F32_32X32X2F32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_ACCVGPR_WRITE_B32 +name: mfma_32x32_read_srcc_accvgpr_write +body: | + bb.0: + $agpr16_agpr17_agpr18_agpr19_agpr20_agpr21_agpr22_agpr23_agpr24_agpr25_agpr26_agpr27_agpr28_agpr29_agpr30_agpr31 = V_MFMA_F32_32X32X2F32 killed $vgpr1, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, 0, 0, 0, implicit $exec + $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec +... +--- + +# GCN-LABEL: name: accvgpr_read_write_vgpr_valu_read +# GCN: V_ACCVGPR_READ_B32 +# GCN-NEXT: V_ADD_F32 +name: accvgpr_read_write_vgpr_valu_read +body: | + bb.0: + $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr4, implicit $exec + $vgpr1 = V_ADD_F32_e32 0, killed $vgpr0, implicit $exec +... +--- + +# GCN-LABEL: name: accvgpr_read_write_vgpr_mfma_read +# GCN: V_ACCVGPR_READ_B32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_MFMA +name: accvgpr_read_write_vgpr_mfma_read +body: | + bb.0: + $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr4, implicit $exec + $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32 killed $vgpr0, killed $vgpr0, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $exec +... +--- + +# GCN-LABEL: name: accvgpr_read_write_vgpr_accvgpr_write_read +# GCN: V_ACCVGPR_READ_B32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_ACCVGPR_WRITE_B32 +name: accvgpr_read_write_vgpr_accvgpr_write_read +body: | + bb.0: + $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr1, implicit $exec + $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec +... +--- + +# GCN-LABEL: name: accvgpr_write_agpr_mfma_read_srcc +# GCN: V_ACCVGPR_WRITE_B32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_MFMA +name: accvgpr_write_agpr_mfma_read_srcc +body: | + bb.0: + $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec + $agpr4_agpr5_agpr6_agpr7 = V_MFMA_F32_4X4X1F32 killed $vgpr1, killed $vgpr2, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $exec +... +--- + +# GCN-LABEL: name: accvgpr_write_agpr_mfma_read_srca +# GCN: V_ACCVGPR_WRITE_B32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_MFMA +name: accvgpr_write_agpr_mfma_read_srca +body: | + bb.0: + $agpr8 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec + $agpr4_agpr5_agpr6_agpr7 = V_MFMA_F32_4X4X1F32 killed $agpr8, killed $vgpr1, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $exec +... +--- + +# GCN-LABEL: name: accvgpr_write_agpr_mfma_read_srcb +# GCN: V_ACCVGPR_WRITE_B32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_MFMA +name: accvgpr_write_agpr_mfma_read_srcb +body: | + bb.0: + $agpr8 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec + $agpr4_agpr5_agpr6_agpr7 = V_MFMA_F32_4X4X1F32 killed $vgpr1, killed $agpr8, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $exec +... +--- + +# GCN-LABEL: name: accvgpr_write_agpr_accvgpr_read +# GCN: V_ACCVGPR_WRITE_B32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_ACCVGPR_READ_B32 +name: accvgpr_write_agpr_accvgpr_read +body: | + bb.0: + $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec + $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec +... +--- + +# GCN-LABEL: name: vcmpx_write_exec_mfma +# GCN: V_CMPX_EQ_I32_e32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_MFMA +name: vcmpx_write_exec_mfma +body: | + bb.0: + implicit $exec, implicit $vcc = V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit $exec + $agpr4_agpr5_agpr6_agpr7 = V_MFMA_F32_4X4X1F32 killed $agpr8, killed $vgpr1, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $exec +... +--- + +# GCN-LABEL: name: vcmpx_write_exec_accvgpr_write +# GCN: V_CMPX_EQ_I32_e32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: V_ACCVGPR_WRITE_B32 +name: vcmpx_write_exec_accvgpr_write +body: | + bb.0: + implicit $exec, implicit $vcc = V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit $exec + $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec +... +--- + +# GCN-LABEL: name: accvgpr_read_write_vgpr_load +# GCN: V_ACCVGPR_READ_B32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: FLAT_LOAD_DWORD +name: accvgpr_read_write_vgpr_load +body: | + bb.0: + $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec + $vgpr3 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, 0, 0, implicit $exec, implicit $flat_scr +... +--- + +# GCN-LABEL: name: accvgpr_read_write_vgpr_store +# GCN: V_ACCVGPR_READ_B32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: DS_WRITE_B32 +name: accvgpr_read_write_vgpr_store +body: | + bb.0: + $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec + DS_WRITE_B32 $vgpr0, $vgpr1, 0, 0, implicit $m0, implicit $exec +... +--- + +# GCN-LABEL: name: valu_write_vgpr_accvgpr_read_load_no_dependency +# GCN: V_MOV_B32 +# GCN-NEXT: V_ACCVGPR_READ_B32 +# GCN-NEXT: FLAT_LOAD_DWORD +name: valu_write_vgpr_accvgpr_read_load_no_dependency +body: | + bb.0: + $vgpr0 = V_MOV_B32_e32 1, implicit $exec + $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec + $vgpr4 = FLAT_LOAD_DWORD $vgpr2_vgpr3, 0, 0, 0, 0, implicit $exec, implicit $flat_scr +... +--- + +# GCN-LABEL: name: valu_write_vgpr_accvgpr_read_load_1_and_3_depend +# GCN: V_MOV_B32 +# GCN-NEXT: V_ACCVGPR_READ_B32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: FLAT_LOAD_DWORD +name: valu_write_vgpr_accvgpr_read_load_1_and_3_depend +body: | + bb.0: + $vgpr0 = V_MOV_B32_e32 1, implicit $exec + $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec + $vgpr4 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, 0, 0, implicit $exec, implicit $flat_scr +... +--- + +# GCN-LABEL: name: valu_write_vgpr_accvgpr_read_load_2_and_3_depend +# GCN: V_MOV_B32 +# GCN-NEXT: V_ACCVGPR_READ_B32 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: S_NOP 0 +# GCN-NEXT: FLAT_LOAD_DWORD +name: valu_write_vgpr_accvgpr_read_load_2_and_3_depend +body: | + bb.0: + $vgpr0 = V_MOV_B32_e32 1, implicit $exec + $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec + $vgpr4 = FLAT_LOAD_DWORD $vgpr2_vgpr3, 0, 0, 0, 0, implicit $exec, implicit $flat_scr +... +--- |

