[llvm] 86b55ed - [AMDGPU] Mark s_getreg as having side effects instead of reading memory
Jay Foad via llvm-commits
llvm-commits at lists.llvm.org
Thu May 19 13:26:24 PDT 2022
Author: Jay Foad
Date: 2022-05-19T21:25:46+01:00
New Revision: 86b55edab6879f9e4c80a374629f548c6351e2c0
URL: https://github.com/llvm/llvm-project/commit/86b55edab6879f9e4c80a374629f548c6351e2c0
DIFF: https://github.com/llvm/llvm-project/commit/86b55edab6879f9e4c80a374629f548c6351e2c0.diff
LOG: [AMDGPU] Mark s_getreg as having side effects instead of reading memory
s_getreg does not interact with anything else that is modelled as a
memory access either in IR or MachineIR.
Differential Revision: https://reviews.llvm.org/D125968
Added:
Modified:
llvm/include/llvm/IR/IntrinsicsAMDGPU.td
llvm/lib/Target/AMDGPU/SOPInstructions.td
Removed:
################################################################################
diff --git a/llvm/include/llvm/IR/IntrinsicsAMDGPU.td b/llvm/include/llvm/IR/IntrinsicsAMDGPU.td
index f5ccdeaefb36d..2777bffad0e2d 100644
--- a/llvm/include/llvm/IR/IntrinsicsAMDGPU.td
+++ b/llvm/include/llvm/IR/IntrinsicsAMDGPU.td
@@ -1379,11 +1379,11 @@ def int_amdgcn_s_setprio :
Intrinsic<[], [llvm_i16_ty], [ImmArg<ArgIndex<0>>, IntrNoMem,
IntrHasSideEffects, IntrWillReturn]>;
+// This is IntrHasSideEffects so it can be used to read cycle counters.
def int_amdgcn_s_getreg :
GCCBuiltin<"__builtin_amdgcn_s_getreg">,
Intrinsic<[llvm_i32_ty], [llvm_i32_ty],
- [IntrInaccessibleMemOnly, IntrReadMem, IntrSpeculatable,
- IntrWillReturn, ImmArg<ArgIndex<0>>]
+ [IntrNoMem, IntrHasSideEffects, IntrWillReturn, ImmArg<ArgIndex<0>>]
>;
// Note this can be used to set FP environment properties that are
diff --git a/llvm/lib/Target/AMDGPU/SOPInstructions.td b/llvm/lib/Target/AMDGPU/SOPInstructions.td
index 565dc665f56fc..62eaad5641252 100644
--- a/llvm/lib/Target/AMDGPU/SOPInstructions.td
+++ b/llvm/lib/Target/AMDGPU/SOPInstructions.td
@@ -873,9 +873,7 @@ def S_CBRANCH_I_FORK : SOPK_Pseudo <
"$sdst, $simm16"
>;
-let mayLoad = 1 in {
-// s_getreg_b32 should use hasSideEffects = 1 for tablegen to allow
-// its use in the readcyclecounter selection.
+// This is hasSideEffects to allow its use in readcyclecounter selection.
// FIXME: Need to truncate immediate to 16-bits.
def S_GETREG_B32 : SOPK_Pseudo <
"s_getreg_b32",
@@ -885,7 +883,6 @@ def S_GETREG_B32 : SOPK_Pseudo <
let SOPKZext = 1;
let hasSideEffects = 1;
}
-} // End mayLoad = 1
let Defs = [MODE], Uses = [MODE] in {
More information about the llvm-commits
mailing list