From 1a9e13e36a5e0521d7f2e61ecb64ee562e053839 Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Sun, 7 Feb 2021 12:12:09 -0500 Subject: [PATCH] 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. --- lib/Target/AMDGPU/AMDGPUCallingConv.td | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/lib/Target/AMDGPU/AMDGPUCallingConv.td b/lib/Target/AMDGPU/AMDGPUCallingConv.td index 250c4277629..02944154924 100644 --- a/lib/Target/AMDGPU/AMDGPUCallingConv.td +++ b/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