[llvm] d98e44b - [AMDGPU][DAGISel] Be more flexible about what calls are allowed
Diana Picus via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 27 00:49:44 PDT 2023
Author: Diana Picus
Date: 2023-06-27T09:49:38+02:00
New Revision: d98e44b34364f3e039c766adec470c5be517f1b4
URL: https://github.com/llvm/llvm-project/commit/d98e44b34364f3e039c766adec470c5be517f1b4
DIFF: https://github.com/llvm/llvm-project/commit/d98e44b34364f3e039c766adec470c5be517f1b4.diff
LOG: [AMDGPU][DAGISel] Be more flexible about what calls are allowed
Remove DAGISel checks on calling conventions. GlobalISel doesn't have
these checks either and we prefer it that way (see D152794).
Add a simple test like the one introduced in D117479 for GlobalISel.
Differential Revision: https://reviews.llvm.org/D153535
Added:
llvm/test/CodeGen/AMDGPU/call-c-function.ll
Modified:
llvm/lib/Target/AMDGPU/SIISelLowering.cpp
llvm/test/CodeGen/AMDGPU/unsupported-calls.ll
Removed:
################################################################################
diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
index c6a1523ea3eff..05ec9be96c162 100644
--- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
@@ -3198,21 +3198,6 @@ SDValue SITargetLowering::LowerCall(CallLoweringInfo &CLI,
"unsupported required tail call to function ");
}
- if (AMDGPU::isShader(CallConv)) {
- // Note the issue is with the CC of the called function, not of the call
- // itself.
- return lowerUnhandledCall(CLI, InVals,
- "unsupported call to a shader function ");
- }
-
- if (AMDGPU::isShader(MF.getFunction().getCallingConv()) &&
- CallConv != CallingConv::AMDGPU_Gfx) {
- // Only allow calls with specific calling conventions.
- return lowerUnhandledCall(CLI, InVals,
- "unsupported calling convention for call from "
- "graphics shader of function ");
- }
-
if (IsTailCall) {
IsTailCall = isEligibleForTailCallOptimization(
Callee, CallConv, IsVarArg, Outs, OutVals, Ins, DAG);
diff --git a/llvm/test/CodeGen/AMDGPU/call-c-function.ll b/llvm/test/CodeGen/AMDGPU/call-c-function.ll
new file mode 100644
index 0000000000000..ba52577902f29
--- /dev/null
+++ b/llvm/test/CodeGen/AMDGPU/call-c-function.ll
@@ -0,0 +1,22 @@
+; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
+; RUN: llc -global-isel=0 -stop-after=finalize-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -verify-machineinstrs -o - %s | FileCheck -enable-var-scope %s
+
+; Test that we don't explode on calls from shaders to functions with the C calling convention.
+
+define amdgpu_ps void @amdgpu_ps_call_default_cc() {
+ ; CHECK-LABEL: name: amdgpu_ps_call_default_cc
+ ; CHECK: bb.0.main_body:
+ ; CHECK-NEXT: S_ENDPGM 0
+main_body:
+ call void null()
+ ret void
+}
+
+define amdgpu_gfx void @amdgpu_gfx_call_default_cc() {
+ ; CHECK-LABEL: name: amdgpu_gfx_call_default_cc
+ ; CHECK: bb.0.main_body:
+ ; CHECK-NEXT: SI_RETURN
+main_body:
+ call void null()
+ ret void
+}
diff --git a/llvm/test/CodeGen/AMDGPU/unsupported-calls.ll b/llvm/test/CodeGen/AMDGPU/unsupported-calls.ll
index 3a752f4a8d721..81b53252f45e8 100644
--- a/llvm/test/CodeGen/AMDGPU/unsupported-calls.ll
+++ b/llvm/test/CodeGen/AMDGPU/unsupported-calls.ll
@@ -62,7 +62,6 @@ define i32 @test_tail_call_bitcast_extern_variadic(<4 x float> %arg0, <4 x float
ret i32 %call
}
-; GCN: :0:0: in function test_c_call_from_shader i32 (): unsupported calling convention for call from graphics shader of function defined_function
; R600: in function test_c_call{{.*}}: unsupported call to function defined_function
define amdgpu_ps i32 @test_c_call_from_shader() {
%call = call i32 @defined_function(i32 0)
More information about the llvm-commits
mailing list