Skip to content

Commit 6e36046

Browse files
committed
[RISCV] Use v8-v23 as argument registers to conform to the proposal.
The maximum LMUL is 8. We need 16 vector registers for two LMUL-8 arguments. The modification follows the proposal of psABI in riscv-non-isa/riscv-elf-psabi-doc#171 Differential Revision: https://reviews.llvm.org/D95134
1 parent 04af1ca commit 6e36046

File tree

461 files changed

+105891
-71513
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

461 files changed

+105891
-71513
lines changed

llvm/lib/Target/RISCV/RISCVISelLowering.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2565,14 +2565,15 @@ static const MCPhysReg ArgFPR64s[] = {
25652565
};
25662566
// This is an interim calling convention and it may be changed in the future.
25672567
static const MCPhysReg ArgVRs[] = {
2568-
RISCV::V16, RISCV::V17, RISCV::V18, RISCV::V19, RISCV::V20,
2569-
RISCV::V21, RISCV::V22, RISCV::V23
2570-
};
2571-
static const MCPhysReg ArgVRM2s[] = {
2572-
RISCV::V16M2, RISCV::V18M2, RISCV::V20M2, RISCV::V22M2
2573-
};
2574-
static const MCPhysReg ArgVRM4s[] = {RISCV::V16M4, RISCV::V20M4};
2575-
static const MCPhysReg ArgVRM8s[] = {RISCV::V16M8};
2568+
RISCV::V8, RISCV::V9, RISCV::V10, RISCV::V11, RISCV::V12, RISCV::V13,
2569+
RISCV::V14, RISCV::V15, RISCV::V16, RISCV::V17, RISCV::V18, RISCV::V19,
2570+
RISCV::V20, RISCV::V21, RISCV::V22, RISCV::V23};
2571+
static const MCPhysReg ArgVRM2s[] = {RISCV::V8M2, RISCV::V10M2, RISCV::V12M2,
2572+
RISCV::V14M2, RISCV::V16M2, RISCV::V18M2,
2573+
RISCV::V20M2, RISCV::V22M2};
2574+
static const MCPhysReg ArgVRM4s[] = {RISCV::V8M4, RISCV::V12M4, RISCV::V16M4,
2575+
RISCV::V20M4};
2576+
static const MCPhysReg ArgVRM8s[] = {RISCV::V8M8, RISCV::V16M8};
25762577

25772578
// Pass a 2*XLEN argument that has been split into two XLEN values through
25782579
// registers or the stack as necessary.

llvm/test/CodeGen/RISCV/rvv/mask-exts-truncs-rv32.ll

Lines changed: 66 additions & 66 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/mask-exts-truncs-rv64.ll

Lines changed: 66 additions & 66 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/saddo-sdnode.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ define <vscale x 2 x i32> @saddo_nvx2i32(<vscale x 2 x i32> %x, <vscale x 2 x i3
77
; CHECK-LABEL: saddo_nvx2i32:
88
; CHECK: # %bb.0:
99
; CHECK-NEXT: vsetvli a0, zero, e32,m1,ta,mu
10-
; CHECK-NEXT: vmslt.vx v25, v17, zero
11-
; CHECK-NEXT: vadd.vv v26, v16, v17
12-
; CHECK-NEXT: vmslt.vv v27, v26, v16
10+
; CHECK-NEXT: vmslt.vx v25, v9, zero
11+
; CHECK-NEXT: vadd.vv v26, v8, v9
12+
; CHECK-NEXT: vmslt.vv v27, v26, v8
1313
; CHECK-NEXT: vsetvli a0, zero, e8,mf4,ta,mu
1414
; CHECK-NEXT: vmxor.mm v0, v25, v27
1515
; CHECK-NEXT: vsetvli a0, zero, e32,m1,ta,mu
16-
; CHECK-NEXT: vmerge.vim v16, v26, 0, v0
16+
; CHECK-NEXT: vmerge.vim v8, v26, 0, v0
1717
; CHECK-NEXT: ret
1818
%a = call { <vscale x 2 x i32>, <vscale x 2 x i1> } @llvm.sadd.with.overflow.nxv2i32(<vscale x 2 x i32> %x, <vscale x 2 x i32> %y)
1919
%b = extractvalue { <vscale x 2 x i32>, <vscale x 2 x i1> } %a, 0

llvm/test/CodeGen/RISCV/rvv/setcc-fp-rv32.ll

Lines changed: 276 additions & 304 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/setcc-fp-rv64.ll

Lines changed: 276 additions & 304 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/setcc-integer-rv32.ll

Lines changed: 315 additions & 325 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/setcc-integer-rv64.ll

Lines changed: 267 additions & 277 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vaadd-rv32.ll

Lines changed: 367 additions & 216 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vaadd-rv64.ll

Lines changed: 449 additions & 264 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vaaddu-rv32.ll

Lines changed: 367 additions & 216 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vaaddu-rv64.ll

Lines changed: 449 additions & 264 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vadc-rv32.ll

Lines changed: 271 additions & 162 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vadc-rv64.ll

Lines changed: 331 additions & 198 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vadd-rv32.ll

Lines changed: 547 additions & 324 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vadd-rv64.ll

Lines changed: 669 additions & 396 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vadd-sdnode-rv32.ll

Lines changed: 74 additions & 74 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vadd-sdnode-rv64.ll

Lines changed: 66 additions & 66 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vamoadd-rv32.ll

Lines changed: 66 additions & 78 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vamoadd-rv64.ll

Lines changed: 156 additions & 188 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vamoand-rv32.ll

Lines changed: 66 additions & 78 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vamoand-rv64.ll

Lines changed: 156 additions & 188 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vamomax-rv32.ll

Lines changed: 66 additions & 78 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vamomax-rv64.ll

Lines changed: 156 additions & 188 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vamomaxu-rv32.ll

Lines changed: 66 additions & 78 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vamomaxu-rv64.ll

Lines changed: 156 additions & 188 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vamomin-rv32.ll

Lines changed: 66 additions & 78 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vamomin-rv64.ll

Lines changed: 156 additions & 188 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vamominu-rv32.ll

Lines changed: 66 additions & 78 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vamominu-rv64.ll

Lines changed: 156 additions & 188 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vamoor-rv32.ll

Lines changed: 66 additions & 78 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vamoor-rv64.ll

Lines changed: 156 additions & 188 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vamoswap-rv32.ll

Lines changed: 186 additions & 222 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vamoswap-rv64.ll

Lines changed: 312 additions & 376 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vamoxor-rv32.ll

Lines changed: 66 additions & 78 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vamoxor-rv64.ll

Lines changed: 156 additions & 188 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vand-rv32.ll

Lines changed: 547 additions & 324 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vand-rv64.ll

Lines changed: 669 additions & 396 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vand-sdnode-rv32.ll

Lines changed: 121 additions & 125 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vand-sdnode-rv64.ll

Lines changed: 114 additions & 118 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vasub-rv32.ll

Lines changed: 367 additions & 216 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vasub-rv64.ll

Lines changed: 449 additions & 264 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vasubu-rv32.ll

Lines changed: 367 additions & 216 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vasubu-rv64.ll

Lines changed: 449 additions & 264 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vcompress-rv32.ll

Lines changed: 41 additions & 53 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vcompress-rv64.ll

Lines changed: 46 additions & 60 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vdiv-rv32.ll

Lines changed: 367 additions & 216 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vdiv-rv64.ll

Lines changed: 449 additions & 264 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vdiv-sdnode-rv32.ll

Lines changed: 78 additions & 82 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vdiv-sdnode-rv64.ll

Lines changed: 70 additions & 74 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vdivu-rv32.ll

Lines changed: 367 additions & 216 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vdivu-rv64.ll

Lines changed: 449 additions & 264 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vdivu-sdnode-rv32.ll

Lines changed: 78 additions & 82 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/RISCV/rvv/vdivu-sdnode-rv64.ll

Lines changed: 70 additions & 74 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)