Index: lib/Target/AMDGPU/SIInsertWaits.cpp =================================================================== --- lib/Target/AMDGPU/SIInsertWaits.cpp +++ lib/Target/AMDGPU/SIInsertWaits.cpp @@ -404,7 +404,7 @@ } } - if (ST->hasSoftClauses()) { + if (ST->hasSoftClauses() && ST->isXNACKEnabled()) { if (TII->isSMRD(*I)) LastOpcodeType = SMEM; else if (Increment.Named.VM) { Index: test/CodeGen/AMDGPU/break-vmem-soft-clauses.mir =================================================================== --- test/CodeGen/AMDGPU/break-vmem-soft-clauses.mir +++ test/CodeGen/AMDGPU/break-vmem-soft-clauses.mir @@ -1,4 +1,5 @@ -# RUN: llc -march=amdgcn -mcpu=fiji -verify-machineinstrs -run-pass si-insert-waits %s -o - | FileCheck -check-prefix=GCN -check-prefix=VI %s +# RUN: llc -march=amdgcn -mcpu=carrizo -verify-machineinstrs -run-pass si-insert-waits %s -o - | FileCheck -check-prefix=GCN -check-prefix=XNACK %s +# RUN: llc -march=amdgcn -mcpu=fiji -verify-machineinstrs -run-pass si-insert-waits %s -o - | FileCheck -check-prefix=GCN -check-prefix=NOXNACK %s --- | define void @trivial_clause_load_flat4_x1() { @@ -274,7 +275,7 @@ # GCN-LABEL: name: break_clause_simple_load_flat4_lo_ptr # GCN: %vgpr0 = FLAT_LOAD_DWORD %vgpr2_vgpr3 -# GCN-NEXT: S_NOP 0 +# XNACK-NEXT: S_NOP 0 # GCN-NEXT: %vgpr2 = FLAT_LOAD_DWORD %vgpr4_vgpr5 name: break_clause_simple_load_flat4_lo_ptr @@ -288,7 +289,7 @@ # GCN-LABEL: name: break_clause_simple_load_flat4_hi_ptr # GCN: %vgpr0 = FLAT_LOAD_DWORD %vgpr2_vgpr3 -# GCN-NEXT: S_NOP 0 +# XNACK-NEXT: S_NOP 0 # GCN-NEXT: %vgpr3 = FLAT_LOAD_DWORD %vgpr4_vgpr5 name: break_clause_simple_load_flat4_hi_ptr @@ -302,7 +303,7 @@ # GCN-LABEL: name: break_clause_simple_load_flat8_ptr # GCN: %vgpr0_vgpr1 = FLAT_LOAD_DWORDX2 %vgpr2_vgpr3, 0, 0, 0, implicit %exec, implicit %flat_scr -# GCN-NEXT: S_NOP 0 +# XNACK-NEXT: S_NOP 0 # GCN-NEXT: %vgpr2_vgpr3 = FLAT_LOAD_DWORDX2 %vgpr4_vgpr5, 0, 0, 0, implicit %exec, implicit %flat_scr name: break_clause_simple_load_flat8_ptr @@ -316,7 +317,7 @@ # GCN-LABEL: name: break_clause_simple_load_flat16_ptr # GCN: %vgpr0_vgpr1 = FLAT_LOAD_DWORDX2 %vgpr2_vgpr3 -# GCN-NEXT: S_NOP 0 +# XNACK-NEXT: S_NOP 0 # GCN-NEXT: %vgpr2_vgpr3_vgpr4_vgpr5 = FLAT_LOAD_DWORDX4 %vgpr6_vgpr7 name: break_clause_simple_load_flat16_ptr @@ -478,7 +479,7 @@ # GCN-LABEL: name: break_clause_simple_load_mubuf_offen_ptr # GCN: bb.0: # GCN-NEXT: %vgpr1 = BUFFER_LOAD_DWORD_OFFEN %vgpr2, %sgpr0_sgpr1_sgpr2_sgpr3, %sgpr4 -# GCN-NEXT: S_NOP 0 +# XNACK-NEXT: S_NOP 0 # GCN-NEXT: %vgpr2 = BUFFER_LOAD_DWORD_OFFEN %vgpr3, %sgpr0_sgpr1_sgpr2_sgpr3, %sgpr4 name: break_clause_simple_load_mubuf_offen_ptr @@ -513,7 +514,7 @@ # GCN-LABEL: name: break_clause_flat_load_mubuf_load # GCN: bb.0: # GCN-NEXT: %vgpr0 = FLAT_LOAD_DWORD %vgpr2_vgpr3, 0, 0, 0, implicit %exec, implicit %flat_scr -# GCN-NEXT: S_NOP 0 +# XNACK-NEXT: S_NOP 0 # GCN-NEXT: %vgpr2 = BUFFER_LOAD_DWORD_OFFEN %vgpr1, %sgpr0_sgpr1_sgpr2_sgpr3, %sgpr4, 0, 0, 0, 0, implicit %exec # GCN-NEXT: S_ENDPGM name: break_clause_flat_load_mubuf_load @@ -529,7 +530,7 @@ # GCN-LABEL: name: break_clause_mubuf_load_flat_load # GCN: bb.0: # GCN-NEXT: %vgpr0 = BUFFER_LOAD_DWORD_OFFEN %vgpr1, %sgpr0_sgpr1_sgpr2_sgpr3, %sgpr4 -# GCN-NEXT: S_NOP 0 +# XNACK-NEXT: S_NOP 0 # GCN-NEXT: %vgpr1 = FLAT_LOAD_DWORD %vgpr2_vgpr3 # GCN-NEXT: S_ENDPGM name: break_clause_mubuf_load_flat_load @@ -546,7 +547,7 @@ # GCN-LABEL: name: break_clause_atomic_rtn_into_ptr_flat4 # GCN: bb.0: # GCN-NEXT: %vgpr2 = FLAT_LOAD_DWORD %vgpr4_vgpr5 -# GCN-NEXT: S_NOP 0 +# XNACK-NEXT: S_NOP 0 # GCN-NEXT: %vgpr4 = FLAT_ATOMIC_ADD_RTN %vgpr5_vgpr6, %vgpr7 # GCN-NEXT: S_ENDPGM name: break_clause_atomic_rtn_into_ptr_flat4 @@ -577,7 +578,7 @@ # GCN-LABEL: name: break_clause_atomic_rtn_into_ptr_mubuf4 # GCN: bb.0: # GCN-NEXT: %vgpr1 = BUFFER_LOAD_DWORD_OFFEN %vgpr2, %sgpr0_sgpr1_sgpr2_sgpr3, %sgpr4 -# GCN-NEXT: S_NOP 0 +# XNACK-NEXT: S_NOP 0 # GCN-NEXT: %vgpr2 = BUFFER_ATOMIC_ADD_RTN_OFFEN %vgpr2, %vgpr5, %sgpr0_sgpr1_sgpr2_sgpr3, %sgpr4 # GCN-NEXT: S_ENDPGM name: break_clause_atomic_rtn_into_ptr_mubuf4 @@ -593,7 +594,7 @@ # GCN-LABEL: name: break_clause_atomic_nortn_ptr_load_mubuf4 # GCN: bb.0: # GCN-NEXT: BUFFER_ATOMIC_ADD_OFFEN %vgpr0, %vgpr1, %sgpr0_sgpr1_sgpr2_sgpr3, %sgpr4 -# GCN-NEXT: S_NOP 0 +# XNACK-NEXT: S_NOP 0 # GCN-NEXT: %vgpr1 = BUFFER_LOAD_DWORD_OFFEN %vgpr2, %sgpr0_sgpr1_sgpr2_sgpr3, %sgpr4 # GCN-NEXT: S_ENDPGM name: break_clause_atomic_nortn_ptr_load_mubuf4