Skip to content

Commit 6cafebe

Browse files
authored
[RISCV][GISel] Remove support for s32 G_VAARG on RV64. (#102533)
Part of making s32 not legal for RV64. Unfortunately, generic widening/narrowing is not implement for this operation so I had to remove all tests. I don't think clang uses G_VAARG on RISC-V so this shouldn't be a big deal in practice.
1 parent 099bf20 commit 6cafebe

File tree

3 files changed

+136
-183
lines changed

3 files changed

+136
-183
lines changed

llvm/lib/Target/RISCV/GISel/RISCVLegalizerInfo.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -503,9 +503,9 @@ RISCVLegalizerInfo::RISCVLegalizerInfo(const RISCVSubtarget &ST)
503503
// as the destination.
504504
getActionDefinitionsBuilder(G_VAARG)
505505
// TODO: Implement narrowScalar and widenScalar for G_VAARG for types
506-
// outside the [s32, sXLen] range.
507-
.clampScalar(0, s32, sXLen)
508-
.lowerForCartesianProduct({s32, sXLen, p0}, {p0});
506+
// other than sXLen.
507+
.clampScalar(0, sXLen, sXLen)
508+
.lowerForCartesianProduct({sXLen, p0}, {p0});
509509

510510
getActionDefinitionsBuilder(G_VSCALE)
511511
.clampScalar(0, sXLen, sXLen)

llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-vaarg-rv64.mir

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,6 @@
44
# On RISC-V, the MinStackArgumentAlignment is 1 and the ABI Alignment for p0 is
55
# greater than 1, so we will always generate code to adjust for this alignment.
66

7-
---
8-
name: va_arg_i32
9-
legalized: false
10-
tracksRegLiveness: true
11-
fixedStack:
12-
- { id: 0, type: default, offset: 0, size: 8, alignment: 16,
13-
isImmutable: true, isAliased: false }
14-
stack:
15-
- { id: 0, type: default, offset: 0, size: 8, alignment: 8 }
16-
machineFunctionInfo:
17-
varArgsFrameIndex: -1
18-
varArgsSaveSize: 0
19-
body: |
20-
bb.1:
21-
; CHECK-LABEL: name: va_arg_i32
22-
; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0
23-
; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (load (p0))
24-
; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 3
25-
; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[LOAD]], [[C]](s64)
26-
; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -4
27-
; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p0) = G_PTRMASK [[PTR_ADD]], [[C1]](s64)
28-
; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 4
29-
; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTRMASK]], [[C2]](s64)
30-
; CHECK-NEXT: G_STORE [[PTR_ADD1]](p0), [[FRAME_INDEX]](p0) :: (store (p0))
31-
; CHECK-NEXT: PseudoRET
32-
%0:_(p0) = G_FRAME_INDEX %stack.0
33-
%1:_(s32) = G_VAARG %0(p0), 4
34-
PseudoRET
35-
...
367
---
378
name: va_arg_i64
389
legalized: false

0 commit comments

Comments
 (0)