[PATCH] D96226: AMDGPU: Stop adding stack passed wide arguments to call conv handler

Matt Arsenault via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Feb 7 13:09:34 PST 2021


arsenm created this revision.
arsenm added reviewers: rampitec, Flakebi, madhur13490.
Herald added subscribers: kerbowa, hiraditya, t-tye, tpr, dstuttard, yaxunl, nhaehnle, jvesely, kzhuravl.
arsenm requested review of this revision.
Herald added a subscriber: wdng.
Herald added a project: LLVM.

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.


https://reviews.llvm.org/D96226

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


Index: llvm/lib/Target/AMDGPU/AMDGPUCallingConv.td
===================================================================
--- llvm/lib/Target/AMDGPU/AMDGPUCallingConv.td
+++ llvm/lib/Target/AMDGPU/AMDGPUCallingConv.td
@@ -34,13 +34,7 @@
     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 @@
     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 @@
     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


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D96226.322003.patch
Type: text/x-patch
Size: 2258 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210207/f8908f3b/attachment.bin>


More information about the llvm-commits mailing list