[llvm] bcf723b - AMDGPU: Stop adding stack passed wide arguments to call conv handler

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 8 14:09:40 PST 2021


Author: Matt Arsenault
Date: 2021-02-08T17:09:28-05:00
New Revision: bcf723b2fd6d92e7dd0d7cf4a645a2b1cb974966

URL: https://github.com/llvm/llvm-project/commit/bcf723b2fd6d92e7dd0d7cf4a645a2b1cb974966
DIFF: https://github.com/llvm/llvm-project/commit/bcf723b2fd6d92e7dd0d7cf4a645a2b1cb974966.diff

LOG: AMDGPU: Stop adding stack passed wide arguments to call conv handler

The generated calling convention code shouldn't see these types since
we split large types into 32-bit chunks before the calling convention
code is triggered.

GlobalISel ends up directly calls the generated CC code before
checking for the register count breakdown. Arguably this difference is
a bug, but this was dead code for the DAG anyway.

Added: 
    

Modified: 
    llvm/lib/Target/AMDGPU/AMDGPUCallingConv.td

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AMDGPU/AMDGPUCallingConv.td b/llvm/lib/Target/AMDGPU/AMDGPUCallingConv.td
index 250c42776297..02944154924e 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUCallingConv.td
+++ b/llvm/lib/Target/AMDGPU/AMDGPUCallingConv.td
@@ -34,13 +34,7 @@ def CC_SI_Gfx : CallingConv<[
     VGPR24, VGPR25, VGPR26, VGPR27, VGPR28, VGPR29, VGPR30, VGPR31
   ]>>>,
 
-  CCIfType<[i32, f32, v2i16, v2f16, i16, f16, i1], CCAssignToStack<4, 4>>,
-  CCIfType<[i64, f64, v2i32, v2f32], CCAssignToStack<8, 4>>,
-  CCIfType<[v3i32, v3f32], CCAssignToStack<12, 4>>,
-  CCIfType<[v4i32, v4f32, v2i64, v2f64], CCAssignToStack<16, 4>>,
-  CCIfType<[v5i32, v5f32], CCAssignToStack<20, 4>>,
-  CCIfType<[v8i32, v8f32], CCAssignToStack<32, 4>>,
-  CCIfType<[v16i32, v16f32], CCAssignToStack<64, 4>>
+  CCIfType<[i32, f32, v2i16, v2f16, i16, f16, i1], CCAssignToStack<4, 4>>
 ]>;
 
 def RetCC_SI_Gfx : CallingConv<[
@@ -75,13 +69,7 @@ def RetCC_SI_Gfx : CallingConv<[
     VGPR128, VGPR129, VGPR130, VGPR131, VGPR132, VGPR133, VGPR134, VGPR135
   ]>>>,
 
-  CCIfType<[i32, f32, v2i16, v2f16, i16, f16, i1], CCAssignToStack<4, 4>>,
-  CCIfType<[i64, f64, v2i32, v2f32], CCAssignToStack<8, 4>>,
-  CCIfType<[v3i32, v3f32], CCAssignToStack<12, 4>>,
-  CCIfType<[v4i32, v4f32, v2i64, v2f64], CCAssignToStack<16, 4>>,
-  CCIfType<[v5i32, v5f32], CCAssignToStack<20, 4>>,
-  CCIfType<[v8i32, v8f32], CCAssignToStack<32, 4>>,
-  CCIfType<[v16i32, v16f32], CCAssignToStack<64, 4>>
+  CCIfType<[i32, f32, v2i16, v2f16, i16, f16, i1], CCAssignToStack<4, 4>>
 ]>;
 
 def CC_SI_SHADER : CallingConv<[
@@ -205,13 +193,7 @@ def CC_AMDGPU_Func : CallingConv<[
     VGPR8, VGPR9, VGPR10, VGPR11, VGPR12, VGPR13, VGPR14, VGPR15,
     VGPR16, VGPR17, VGPR18, VGPR19, VGPR20, VGPR21, VGPR22, VGPR23,
     VGPR24, VGPR25, VGPR26, VGPR27, VGPR28, VGPR29, VGPR30, VGPR31]>>,
-  CCIfType<[i32, f32, v2i16, v2f16, i16, f16, i1], CCAssignToStack<4, 4>>,
-  CCIfType<[i64, f64, v2i32, v2f32], CCAssignToStack<8, 4>>,
-  CCIfType<[v3i32, v3f32], CCAssignToStack<12, 4>>,
-  CCIfType<[v4i32, v4f32, v2i64, v2f64], CCAssignToStack<16, 4>>,
-  CCIfType<[v5i32, v5f32], CCAssignToStack<20, 4>>,
-  CCIfType<[v8i32, v8f32], CCAssignToStack<32, 4>>,
-  CCIfType<[v16i32, v16f32], CCAssignToStack<64, 4>>
+  CCIfType<[i32, f32, v2i16, v2f16, i16, f16, i1], CCAssignToStack<4, 4>>
 ]>;
 
 // Calling convention for leaf functions


        


More information about the llvm-commits mailing list