[llvm] [AMDGPU] Improve codegen for s_barrier_init (PR #111866)
Jay Foad via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 10 09:26:53 PDT 2024
https://github.com/jayfoad created https://github.com/llvm/llvm-project/pull/111866
None
>From 112a05c22579fb6e437142987625d3490ddd18c4 Mon Sep 17 00:00:00 2001
From: Jay Foad <jay.foad at amd.com>
Date: Thu, 10 Oct 2024 17:26:04 +0100
Subject: [PATCH] [AMDGPU] Improve codegen for s_barrier_init
---
llvm/lib/Target/AMDGPU/SIISelLowering.cpp | 4 +---
llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.barrier.wait.ll | 4 +---
2 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
index bbdc006b9afcf0..3d8e03521e2b90 100644
--- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
@@ -10031,9 +10031,7 @@ SDValue SITargetLowering::LowerINTRINSIC_VOID(SDValue Op,
// If reference to barrier id is not an inline constant then it must be
// referenced with M0[4:0]. Perform an OR with the member count to
// include it in M0.
- M0Val = SDValue(DAG.getMachineNode(AMDGPU::S_OR_B32, DL, MVT::i32,
- Op.getOperand(2), M0Val),
- 0);
+ M0Val = DAG.getNode(ISD::OR, DL, MVT::i32, Op.getOperand(2), M0Val);
}
Ops.push_back(copyToM0(DAG, Chain, DL, M0Val).getValue(0));
} else if (IsInlinableBarID) {
diff --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.barrier.wait.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.barrier.wait.ll
index 4fb28b392c9ea9..1e13b40afb8be8 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.barrier.wait.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.barrier.wait.ll
@@ -737,11 +737,9 @@ define void @test5_s_barrier_init_m0(i32 %arg1 ,i32 %arg2) {
; GFX12-SDAG-NEXT: s_wait_samplecnt 0x0
; GFX12-SDAG-NEXT: s_wait_bvhcnt 0x0
; GFX12-SDAG-NEXT: s_wait_kmcnt 0x0
-; GFX12-SDAG-NEXT: v_lshlrev_b32_e32 v1, 16, v1
+; GFX12-SDAG-NEXT: v_lshl_or_b32 v0, v1, 16, v0
; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX12-SDAG-NEXT: v_or_b32_e32 v0, v0, v1
; GFX12-SDAG-NEXT: v_readfirstlane_b32 s0, v0
-; GFX12-SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1)
; GFX12-SDAG-NEXT: s_mov_b32 m0, s0
; GFX12-SDAG-NEXT: s_barrier_init m0
; GFX12-SDAG-NEXT: s_wait_alu 0xfffe
More information about the llvm-commits
mailing list