[clang] [llvm] [RISCV] Add subtarget features for profiles (PR #84877)
Pengcheng Wang via cfe-commits
cfe-commits at lists.llvm.org
Fri Apr 26 02:29:04 PDT 2024
https://github.com/wangpc-pp updated https://github.com/llvm/llvm-project/pull/84877
>From ec68548a470d6d9032a900a725e95b92691657b2 Mon Sep 17 00:00:00 2001
From: Wang Pengcheng <wangpengcheng.pp at bytedance.com>
Date: Tue, 12 Mar 2024 14:28:09 +0800
Subject: [PATCH 1/3] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20in?=
=?UTF-8?q?itial=20version?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Created using spr 1.3.4
---
clang/test/Driver/riscv-cpus.c | 319 ++++++++++++++++++++++
clang/test/Misc/target-invalid-cpu-note.c | 8 +-
llvm/lib/Target/RISCV/RISCVProcessors.td | 224 ++++++++++++++-
3 files changed, 539 insertions(+), 12 deletions(-)
diff --git a/clang/test/Driver/riscv-cpus.c b/clang/test/Driver/riscv-cpus.c
index ff2bd6f7c8ba34..a285f0f9c41f54 100644
--- a/clang/test/Driver/riscv-cpus.c
+++ b/clang/test/Driver/riscv-cpus.c
@@ -302,3 +302,322 @@
// RUN: not %clang --target=riscv32 -### -c %s 2>&1 -mcpu=generic-rv32 -march=rv64i | FileCheck -check-prefix=MISMATCH-ARCH %s
// MISMATCH-ARCH: cpu 'generic-rv32' does not support rv64
+
+// Check profile CPUs
+
+// RUN: %clang -target riscv32 -### -c %s 2>&1 -mcpu=generic-rvi20u32 | FileCheck -check-prefix=MCPU-GENERIC-RVI20U32 %s
+// MCPU-GENERIC-RVI20U32: "-target-cpu" "generic-rvi20u32"
+// MCPU-GENERIC-RVI20U32-SAME: "-target-feature" "-a"
+// MCPU-GENERIC-RVI20U32-SAME: "-target-feature" "-c"
+// MCPU-GENERIC-RVI20U32-SAME: "-target-feature" "-d"
+// MCPU-GENERIC-RVI20U32-SAME: "-target-feature" "-f"
+// MCPU-GENERIC-RVI20U32-SAME: "-target-feature" "-m"
+// MCPU-GENERIC-RVI20U32-SAME: "-target-abi" "ilp32"
+
+// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=generic-rvi20u64 | FileCheck -check-prefix=MCPU-GENERIC-RVI20U64 %s
+// MCPU-GENERIC-RVI20U64: "-target-cpu" "generic-rvi20u64"
+// MCPU-GENERIC-RVI20U64: "-target-feature" "-a"
+// MCPU-GENERIC-RVI20U64: "-target-feature" "-c"
+// MCPU-GENERIC-RVI20U64: "-target-feature" "-d"
+// MCPU-GENERIC-RVI20U64: "-target-feature" "-f"
+// MCPU-GENERIC-RVI20U64: "-target-feature" "-m"
+// MCPU-GENERIC-RVI20U64-SAME: "-target-abi" "lp64"
+
+// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=generic-rva20u64 | FileCheck -check-prefix=MCPU-GENERIC-RVA20U64 %s
+// MCPU-GENERIC-RVA20U64: "-target-cpu" "generic-rva20u64"
+// MCPU-GENERIC-RVA20U64: "-target-feature" "+m"
+// MCPU-GENERIC-RVA20U64: "-target-feature" "+a"
+// MCPU-GENERIC-RVA20U64: "-target-feature" "+f"
+// MCPU-GENERIC-RVA20U64: "-target-feature" "+d"
+// MCPU-GENERIC-RVA20U64: "-target-feature" "+c"
+// MCPU-GENERIC-RVA20U64: "-target-feature" "+ziccamoa"
+// MCPU-GENERIC-RVA20U64: "-target-feature" "+ziccif"
+// MCPU-GENERIC-RVA20U64: "-target-feature" "+zicclsm"
+// MCPU-GENERIC-RVA20U64: "-target-feature" "+ziccrse"
+// MCPU-GENERIC-RVA20U64: "-target-feature" "+zicntr"
+// MCPU-GENERIC-RVA20U64: "-target-feature" "+zicsr"
+// MCPU-GENERIC-RVA20U64: "-target-feature" "+za128rs"
+// MCPU-GENERIC-RVA20U64-SAME: "-target-abi" "lp64d"
+
+// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=generic-rva20s64 | FileCheck -check-prefix=MCPU-GENERIC-RVA20S64 %s
+// MCPU-GENERIC-RVA20S64: "-target-cpu" "generic-rva20s64"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+m"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+a"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+f"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+d"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+c"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+ziccamoa"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+ziccif"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+zicclsm"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+ziccrse"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+zicntr"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+zicsr"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+zifencei"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+za128rs"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+ssccptr"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+sstvala"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+sstvecd"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+svade"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+svbare"
+// MCPU-GENERIC-RVA20S64-SAME: "-target-abi" "lp64d"
+
+// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=generic-rva22u64 | FileCheck -check-prefix=MCPU-GENERIC-RVA22U64 %s
+// MCPU-GENERIC-RVA22U64: "-target-cpu" "generic-rva22u64"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+m"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+a"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+f"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+d"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+c"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zic64b"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zicbom"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zicbop"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zicboz"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+ziccamoa"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+ziccif"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zicclsm"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+ziccrse"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zicntr"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zicsr"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zihintpause"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zihpm"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+za64rs"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zfhmin"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zba"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zbb"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zbs"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zkt"
+// MCPU-GENERIC-RVA22U64-SAME: "-target-abi" "lp64d"
+
+// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=generic-rva22s64 | FileCheck -check-prefix=MCPU-GENERIC-RVA22S64 %s
+// MCPU-GENERIC-RVA22S64: "-target-cpu" "generic-rva22s64"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+m"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+a"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+f"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+d"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+c"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zic64b"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zicbom"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zicbop"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zicboz"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+ziccamoa"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+ziccif"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zicclsm"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+ziccrse"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zicntr"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zicsr"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zifencei"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zihintpause"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zihpm"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+za64rs"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zfhmin"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zba"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zbb"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zbs"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zkt"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+ssccptr"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+sscounterenw"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+sstvala"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+sstvecd"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+svade"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+svbare"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+svinval"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+svpbmt"
+// MCPU-GENERIC-RVA22S64-SAME: "-target-abi" "lp64d"
+
+// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=generic-rva23u64 -menable-experimental-extensions \
+// RUN: | FileCheck -check-prefix=MCPU-GENERIC-RVA23U64 %s
+// MCPU-GENERIC-RVA23U64: "-target-cpu" "generic-rva23u64"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+m"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+a"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+f"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+d"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+c"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+v"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zic64b"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zicbom"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zicbop"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zicboz"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+ziccamoa"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+ziccif"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zicclsm"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+ziccrse"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zicntr"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zicond"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zicsr"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zihintntl"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zihintpause"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zihpm"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+experimental-zimop"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+za64rs"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zawrs"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zfa"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zfhmin"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zcb"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+experimental-zcmop"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zba"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zbb"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zbs"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zkt"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zvbb"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zvfhmin"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zvkt"
+// MCPU-GENERIC-RVA23U64-SAME: "-target-abi" "lp64d"
+
+// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=generic-rva23s64 -menable-experimental-extensions \
+// RUN: | FileCheck -check-prefix=MCPU-GENERIC-RVA23S64 %s
+// MCPU-GENERIC-RVA23S64: "-target-cpu" "generic-rva23s64"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+m"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+a"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+f"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+d"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+c"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+v"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+h"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zic64b"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zicbom"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zicbop"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zicboz"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+ziccamoa"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+ziccif"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zicclsm"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+ziccrse"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zicntr"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zicond"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zicsr"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zifencei"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zihintntl"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zihintpause"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zihpm"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+experimental-zimop"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+za64rs"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zawrs"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zfa"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zfhmin"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zcb"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+experimental-zcmop"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zba"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zbb"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zbs"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zkt"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zvbb"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zvfhmin"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zvkt"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+shcounterenw"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+shgatpa"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+shtvala"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+shvsatpa"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+shvstvala"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+shvstvecd"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+ssccptr"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+sscofpmf"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+sscounterenw"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+experimental-ssnpm"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+ssstateen"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+sstc"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+sstvala"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+sstvecd"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+ssu64xl"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+svade"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+svbare"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+svinval"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+svnapot"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+svpbmt"
+// MCPU-GENERIC-RVA23S64-SAME: "-target-abi" "lp64d"
+
+// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=generic-rvb23u64 -menable-experimental-extensions \
+// RUN: | FileCheck -check-prefix=MCPU-GENERIC-RVB23U64 %s
+// MCPU-GENERIC-RVB23U64: "-target-cpu" "generic-rvb23u64"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+m"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+a"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+f"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+d"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+c"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zic64b"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zicbom"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zicbop"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zicboz"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+ziccamoa"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+ziccif"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zicclsm"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+ziccrse"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zicntr"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zicond"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zicsr"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zihintntl"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zihintpause"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zihpm"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+experimental-zimop"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+za64rs"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zawrs"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zfa"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zcb"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+experimental-zcmop"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zba"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zbb"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zbs"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zkt"
+// MCPU-GENERIC-RVB23U64-SAME: "-target-abi" "lp64d"
+
+// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=generic-rvb23s64 -menable-experimental-extensions \
+// RUN: | FileCheck -check-prefix=MCPU-GENERIC-RVB23S64 %s
+// MCPU-GENERIC-RVB23S64: "-target-cpu" "generic-rvb23s64"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+m"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+a"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+f"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+d"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+c"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zic64b"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zicbom"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zicbop"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zicboz"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+ziccamoa"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+ziccif"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zicclsm"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+ziccrse"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zicntr"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zicond"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zicsr"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zifencei"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zihintntl"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zihintpause"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zihpm"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+experimental-zimop"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+za64rs"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zawrs"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zfa"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zcb"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+experimental-zcmop"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zba"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zbb"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zbs"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zkt"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+ssccptr"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+sscofpmf"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+sscounterenw"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+sstc"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+sstvala"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+sstvecd"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+ssu64xl"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+svade"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+svbare"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+svinval"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+svnapot"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+svpbmt"
+// MCPU-GENERIC-RVB23S64-SAME: "-target-abi" "lp64d"
+
+// RUN: %clang -target riscv32 -### -c %s 2>&1 -mcpu=generic-rvm23u32 -menable-experimental-extensions \
+// RUN: | FileCheck -check-prefix=MCPU-GENERIC-RVM23U32 %s
+// MCPU-GENERIC-RVM23U32: "-target-cpu" "generic-rvm23u32"
+// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+m"
+// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+zicbop"
+// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+zicond"
+// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+zicsr"
+// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+zihintntl"
+// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+zihintpause"
+// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+experimental-zimop"
+// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+zce"
+// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+experimental-zcmop"
+// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+zba"
+// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+zbb"
+// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+zbs"
+// MCPU-GENERIC-RVM23U32-SAME: "-target-abi" "ilp32"
diff --git a/clang/test/Misc/target-invalid-cpu-note.c b/clang/test/Misc/target-invalid-cpu-note.c
index b65a8fb057ee53..41347f9ed7aa14 100644
--- a/clang/test/Misc/target-invalid-cpu-note.c
+++ b/clang/test/Misc/target-invalid-cpu-note.c
@@ -81,16 +81,16 @@
// RUN: not %clang_cc1 -triple riscv32 -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix RISCV32
// RISCV32: error: unknown target CPU 'not-a-cpu'
-// RISCV32-NEXT: note: valid target CPU values are: generic-rv32, rocket-rv32, sifive-e20, sifive-e21, sifive-e24, sifive-e31, sifive-e34, sifive-e76, syntacore-scr1-base, syntacore-scr1-max{{$}}
+// RISCV32-NEXT: note: valid target CPU values are: generic-rv32, generic-rvi20u32, generic-rvm23u32, rocket-rv32, sifive-e20, sifive-e21, sifive-e24, sifive-e31, sifive-e34, sifive-e76, syntacore-scr1-base, syntacore-scr1-max{{$}}
// RUN: not %clang_cc1 -triple riscv64 -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix RISCV64
// RISCV64: error: unknown target CPU 'not-a-cpu'
-// RISCV64-NEXT: note: valid target CPU values are: generic-rv64, rocket-rv64, sifive-p450, sifive-p670, sifive-s21, sifive-s51, sifive-s54, sifive-s76, sifive-u54, sifive-u74, sifive-x280, veyron-v1, xiangshan-nanhu{{$}}
+// RISCV64-NEXT: note: valid target CPU values are: generic-rv64, generic-rva20s64, generic-rva20u64, generic-rva22s64, generic-rva22u64, generic-rva23s64, generic-rva23u64, generic-rvb23s64, generic-rvb23u64, generic-rvi20u64, rocket-rv64, sifive-p450, sifive-p670, sifive-s21, sifive-s51, sifive-s54, sifive-s76, sifive-u54, sifive-u74, sifive-x280, veyron-v1, xiangshan-nanhu{{$}}
// RUN: not %clang_cc1 -triple riscv32 -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE-RISCV32
// TUNE-RISCV32: error: unknown target CPU 'not-a-cpu'
-// TUNE-RISCV32-NEXT: note: valid target CPU values are: generic-rv32, rocket-rv32, sifive-e20, sifive-e21, sifive-e24, sifive-e31, sifive-e34, sifive-e76, syntacore-scr1-base, syntacore-scr1-max, generic, rocket, sifive-7-series{{$}}
+// TUNE-RISCV32-NEXT: note: valid target CPU values are: generic-rv32, generic-rvi20u32, generic-rvm23u32, rocket-rv32, sifive-e20, sifive-e21, sifive-e24, sifive-e31, sifive-e34, sifive-e76, syntacore-scr1-base, syntacore-scr1-max, generic, rocket, sifive-7-series{{$}}
// RUN: not %clang_cc1 -triple riscv64 -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE-RISCV64
// TUNE-RISCV64: error: unknown target CPU 'not-a-cpu'
-// TUNE-RISCV64-NEXT: note: valid target CPU values are: generic-rv64, rocket-rv64, sifive-p450, sifive-p670, sifive-s21, sifive-s51, sifive-s54, sifive-s76, sifive-u54, sifive-u74, sifive-x280, veyron-v1, xiangshan-nanhu, generic, rocket, sifive-7-series{{$}}
+// TUNE-RISCV64-NEXT: note: valid target CPU values are: generic-rv64, generic-rva20s64, generic-rva20u64, generic-rva22s64, generic-rva22u64, generic-rva23s64, generic-rva23u64, generic-rvb23s64, generic-rvb23u64, generic-rvi20u64, rocket-rv64, sifive-p450, sifive-p670, sifive-s21, sifive-s51, sifive-s54, sifive-s76, sifive-u54, sifive-u74, sifive-x280, veyron-v1, xiangshan-nanhu, generic, rocket, sifive-7-series{{$}}
diff --git a/llvm/lib/Target/RISCV/RISCVProcessors.td b/llvm/lib/Target/RISCV/RISCVProcessors.td
index 8c75df41f5e395..9c0ca06de0a5a8 100644
--- a/llvm/lib/Target/RISCV/RISCVProcessors.td
+++ b/llvm/lib/Target/RISCV/RISCVProcessors.td
@@ -10,6 +10,179 @@
// RISC-V processors supported.
//===----------------------------------------------------------------------===//
+defvar RVA20U64Features = [Feature64Bit,
+ FeatureStdExtM,
+ FeatureStdExtA,
+ FeatureStdExtF,
+ FeatureStdExtD,
+ FeatureStdExtC,
+ FeatureStdExtZicntr,
+ FeatureStdExtZiccif,
+ FeatureStdExtZiccrse,
+ FeatureStdExtZiccamoa,
+ FeatureStdExtZa128rs,
+ FeatureStdExtZicclsm];
+
+defvar RVA20S64Features = !listconcat(RVA20U64Features,
+ [FeatureStdExtZifencei,
+ FeatureStdExtSvbare,
+ FeatureStdExtSvade,
+ FeatureStdExtSsccptr,
+ FeatureStdExtSstvecd,
+ FeatureStdExtSstvala]);
+
+defvar RVA22U64Features = [Feature64Bit,
+ FeatureStdExtM,
+ FeatureStdExtA,
+ FeatureStdExtF,
+ FeatureStdExtD,
+ FeatureStdExtC,
+ FeatureStdExtZicntr,
+ FeatureStdExtZiccif,
+ FeatureStdExtZiccrse,
+ FeatureStdExtZiccamoa,
+ FeatureStdExtZicclsm,
+ FeatureStdExtZa64rs,
+ FeatureStdExtZihpm,
+ FeatureStdExtZihintpause,
+ FeatureStdExtZba,
+ FeatureStdExtZbb,
+ FeatureStdExtZbs,
+ FeatureStdExtZic64b,
+ FeatureStdExtZicbom,
+ FeatureStdExtZicbop,
+ FeatureStdExtZicboz,
+ FeatureStdExtZfhmin,
+ FeatureStdExtZkt];
+
+defvar RVA22S64Features = !listconcat(RVA22U64Features,
+ [FeatureStdExtZifencei,
+ FeatureStdExtSvbare,
+ FeatureStdExtSvade,
+ FeatureStdExtSsccptr,
+ FeatureStdExtSstvecd,
+ FeatureStdExtSstvala,
+ FeatureStdExtSscounterenw,
+ FeatureStdExtSvpbmt,
+ FeatureStdExtSvinval]);
+
+defvar RVA23U64Features = [Feature64Bit,
+ FeatureStdExtM,
+ FeatureStdExtA,
+ FeatureStdExtF,
+ FeatureStdExtD,
+ FeatureStdExtC,
+ FeatureStdExtZicntr,
+ FeatureStdExtZihpm,
+ FeatureStdExtZiccif,
+ FeatureStdExtZiccrse,
+ FeatureStdExtZiccamoa,
+ FeatureStdExtZicclsm,
+ FeatureStdExtZa64rs,
+ FeatureStdExtZihintpause,
+ FeatureStdExtZba,
+ FeatureStdExtZbb,
+ FeatureStdExtZbs,
+ FeatureStdExtZic64b,
+ FeatureStdExtZicbom,
+ FeatureStdExtZicbop,
+ FeatureStdExtZicboz,
+ FeatureStdExtZfhmin,
+ FeatureStdExtZkt,
+ FeatureStdExtV,
+ FeatureStdExtZvfhmin,
+ FeatureStdExtZvbb,
+ FeatureStdExtZvkt,
+ FeatureStdExtZihintntl,
+ FeatureStdExtZicond,
+ FeatureStdExtZimop,
+ FeatureStdExtZcmop,
+ FeatureStdExtZcb,
+ FeatureStdExtZfa,
+ FeatureStdExtZawrs];
+
+defvar RVA23S64Features = !listconcat(RVA23U64Features,
+ [FeatureStdExtZifencei,
+ FeatureStdExtSvbare,
+ FeatureStdExtSvade,
+ FeatureStdExtSsccptr,
+ FeatureStdExtSstvecd,
+ FeatureStdExtSstvala,
+ FeatureStdExtSscounterenw,
+ FeatureStdExtSvpbmt,
+ FeatureStdExtSvinval,
+ FeatureStdExtSvnapot,
+ FeatureStdExtSstc,
+ FeatureStdExtSscofpmf,
+ FeatureStdExtSsnpm,
+ FeatureStdExtSsu64xl,
+ FeatureStdExtH,
+ FeatureStdExtSsstateen,
+ FeatureStdExtShcounterenw,
+ FeatureStdExtShvstvala,
+ FeatureStdExtShtvala,
+ FeatureStdExtShvstvecd,
+ FeatureStdExtShvsatpa,
+ FeatureStdExtShgatpa]);
+
+defvar RVB23U64Features = [Feature64Bit,
+ FeatureStdExtM,
+ FeatureStdExtA,
+ FeatureStdExtF,
+ FeatureStdExtD,
+ FeatureStdExtC,
+ FeatureStdExtZicntr,
+ FeatureStdExtZihpm,
+ FeatureStdExtZiccif,
+ FeatureStdExtZiccrse,
+ FeatureStdExtZiccamoa,
+ FeatureStdExtZicclsm,
+ FeatureStdExtZa64rs,
+ FeatureStdExtZihintpause,
+ FeatureStdExtZba,
+ FeatureStdExtZbb,
+ FeatureStdExtZbs,
+ FeatureStdExtZic64b,
+ FeatureStdExtZicbom,
+ FeatureStdExtZicbop,
+ FeatureStdExtZicboz,
+ FeatureStdExtZkt,
+ FeatureStdExtZihintntl,
+ FeatureStdExtZicond,
+ FeatureStdExtZimop,
+ FeatureStdExtZcmop,
+ FeatureStdExtZcb,
+ FeatureStdExtZfa,
+ FeatureStdExtZawrs];
+
+defvar RVB23S64Features = !listconcat(RVB23U64Features,
+ [FeatureStdExtZifencei,
+ FeatureStdExtSvnapot,
+ FeatureStdExtSvbare,
+ FeatureStdExtSvade,
+ FeatureStdExtSsccptr,
+ FeatureStdExtSstvecd,
+ FeatureStdExtSstvala,
+ FeatureStdExtSscounterenw,
+ FeatureStdExtSvpbmt,
+ FeatureStdExtSvinval,
+ FeatureStdExtSstc,
+ FeatureStdExtSscofpmf,
+ FeatureStdExtSsu64xl]);
+
+defvar RVM23U32Features = [Feature32Bit,
+ FeatureStdExtM,
+ FeatureStdExtZba,
+ FeatureStdExtZbb,
+ FeatureStdExtZbs,
+ FeatureStdExtZicond,
+ FeatureStdExtZihintpause,
+ FeatureStdExtZihintntl,
+ FeatureStdExtZce,
+ FeatureStdExtZicbop,
+ FeatureStdExtZimop,
+ FeatureStdExtZcmop];
+
class RISCVTuneInfo {
bits<8> PrefFunctionAlignment = 1;
bits<8> PrefLoopAlignment = 1;
@@ -54,14 +227,49 @@ class RISCVTuneProcessorModel<string n,
list<SubtargetFeature> f = []>
: ProcessorModel<n, m, f,tunef>;
-def GENERIC_RV32 : RISCVProcessorModel<"generic-rv32",
- NoSchedModel,
- [Feature32Bit]>,
- GenericTuneInfo;
-def GENERIC_RV64 : RISCVProcessorModel<"generic-rv64",
- NoSchedModel,
- [Feature64Bit]>,
- GenericTuneInfo;
+class RISCVGenericProcessorModel<string n, list<SubtargetFeature> f>
+ : RISCVProcessorModel<n, NoSchedModel, f>,
+ GenericTuneInfo;
+
+def GENERIC_RV32 : RISCVGenericProcessorModel<"generic-rv32",
+ [Feature32Bit]>;
+
+def GENERIC_RV64 : RISCVGenericProcessorModel<"generic-rv64",
+ [Feature64Bit]>;
+
+def GENERIC_RVI20U32 : RISCVGenericProcessorModel<"generic-rvi20u32",
+ [Feature32Bit]>;
+
+def GENERIC_RVI20U64 : RISCVGenericProcessorModel<"generic-rvi20u64",
+ [Feature64Bit]>;
+
+def GENERIC_RVA20U64 : RISCVGenericProcessorModel<"generic-rva20u64",
+ RVA20U64Features>;
+
+def GENERIC_RVA20S64 : RISCVGenericProcessorModel<"generic-rva20s64",
+ RVA20S64Features>;
+
+def GENERIC_RVA22U64 : RISCVGenericProcessorModel<"generic-rva22u64",
+ RVA22U64Features>;
+
+def GENERIC_RVA22S64 : RISCVGenericProcessorModel<"generic-rva22s64",
+ RVA22S64Features>;
+
+def GENERIC_RVA23U64 : RISCVGenericProcessorModel<"generic-rva23u64",
+ RVA23U64Features>;
+
+def GENERIC_RVA23S64 : RISCVGenericProcessorModel<"generic-rva23s64",
+ RVA23S64Features>;
+
+def GENERIC_RVB23U64 : RISCVGenericProcessorModel<"generic-rvb23u64",
+ RVB23U64Features>;
+
+def GENERIC_RVB23S64 : RISCVGenericProcessorModel<"generic-rvb23s64",
+ RVB23S64Features>;
+
+def GENERIC_RVM23U32 : RISCVGenericProcessorModel<"generic-rvm23u32",
+ RVM23U32Features>;
+
// Support generic for compatibility with other targets. The triple will be used
// to change to the appropriate rv32/rv64 version.
def : ProcessorModel<"generic", NoSchedModel, []>, GenericTuneInfo;
>From dc37018363c1dd00e269fccec1322e707add0218 Mon Sep 17 00:00:00 2001
From: Wang Pengcheng <wangpengcheng.pp at bytedance.com>
Date: Mon, 25 Mar 2024 11:43:29 +0800
Subject: [PATCH 2/3] Remove genenic prefix
Created using spr 1.3.4
---
clang/test/Driver/riscv-cpus.c | 632 +++++++++++-----------
clang/test/Misc/target-invalid-cpu-note.c | 8 +-
llvm/lib/Target/RISCV/RISCVProcessors.td | 22 +-
3 files changed, 331 insertions(+), 331 deletions(-)
diff --git a/clang/test/Driver/riscv-cpus.c b/clang/test/Driver/riscv-cpus.c
index a285f0f9c41f54..f65307f0ae50ae 100644
--- a/clang/test/Driver/riscv-cpus.c
+++ b/clang/test/Driver/riscv-cpus.c
@@ -305,319 +305,319 @@
// Check profile CPUs
-// RUN: %clang -target riscv32 -### -c %s 2>&1 -mcpu=generic-rvi20u32 | FileCheck -check-prefix=MCPU-GENERIC-RVI20U32 %s
-// MCPU-GENERIC-RVI20U32: "-target-cpu" "generic-rvi20u32"
-// MCPU-GENERIC-RVI20U32-SAME: "-target-feature" "-a"
-// MCPU-GENERIC-RVI20U32-SAME: "-target-feature" "-c"
-// MCPU-GENERIC-RVI20U32-SAME: "-target-feature" "-d"
-// MCPU-GENERIC-RVI20U32-SAME: "-target-feature" "-f"
-// MCPU-GENERIC-RVI20U32-SAME: "-target-feature" "-m"
-// MCPU-GENERIC-RVI20U32-SAME: "-target-abi" "ilp32"
-
-// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=generic-rvi20u64 | FileCheck -check-prefix=MCPU-GENERIC-RVI20U64 %s
-// MCPU-GENERIC-RVI20U64: "-target-cpu" "generic-rvi20u64"
-// MCPU-GENERIC-RVI20U64: "-target-feature" "-a"
-// MCPU-GENERIC-RVI20U64: "-target-feature" "-c"
-// MCPU-GENERIC-RVI20U64: "-target-feature" "-d"
-// MCPU-GENERIC-RVI20U64: "-target-feature" "-f"
-// MCPU-GENERIC-RVI20U64: "-target-feature" "-m"
-// MCPU-GENERIC-RVI20U64-SAME: "-target-abi" "lp64"
-
-// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=generic-rva20u64 | FileCheck -check-prefix=MCPU-GENERIC-RVA20U64 %s
-// MCPU-GENERIC-RVA20U64: "-target-cpu" "generic-rva20u64"
-// MCPU-GENERIC-RVA20U64: "-target-feature" "+m"
-// MCPU-GENERIC-RVA20U64: "-target-feature" "+a"
-// MCPU-GENERIC-RVA20U64: "-target-feature" "+f"
-// MCPU-GENERIC-RVA20U64: "-target-feature" "+d"
-// MCPU-GENERIC-RVA20U64: "-target-feature" "+c"
-// MCPU-GENERIC-RVA20U64: "-target-feature" "+ziccamoa"
-// MCPU-GENERIC-RVA20U64: "-target-feature" "+ziccif"
-// MCPU-GENERIC-RVA20U64: "-target-feature" "+zicclsm"
-// MCPU-GENERIC-RVA20U64: "-target-feature" "+ziccrse"
-// MCPU-GENERIC-RVA20U64: "-target-feature" "+zicntr"
-// MCPU-GENERIC-RVA20U64: "-target-feature" "+zicsr"
-// MCPU-GENERIC-RVA20U64: "-target-feature" "+za128rs"
-// MCPU-GENERIC-RVA20U64-SAME: "-target-abi" "lp64d"
-
-// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=generic-rva20s64 | FileCheck -check-prefix=MCPU-GENERIC-RVA20S64 %s
-// MCPU-GENERIC-RVA20S64: "-target-cpu" "generic-rva20s64"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+m"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+a"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+f"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+d"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+c"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+ziccamoa"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+ziccif"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+zicclsm"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+ziccrse"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+zicntr"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+zicsr"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+zifencei"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+za128rs"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+ssccptr"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+sstvala"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+sstvecd"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+svade"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-feature" "+svbare"
-// MCPU-GENERIC-RVA20S64-SAME: "-target-abi" "lp64d"
-
-// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=generic-rva22u64 | FileCheck -check-prefix=MCPU-GENERIC-RVA22U64 %s
-// MCPU-GENERIC-RVA22U64: "-target-cpu" "generic-rva22u64"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+m"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+a"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+f"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+d"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+c"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zic64b"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zicbom"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zicbop"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zicboz"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+ziccamoa"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+ziccif"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zicclsm"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+ziccrse"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zicntr"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zicsr"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zihintpause"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zihpm"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+za64rs"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zfhmin"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zba"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zbb"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zbs"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-feature" "+zkt"
-// MCPU-GENERIC-RVA22U64-SAME: "-target-abi" "lp64d"
-
-// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=generic-rva22s64 | FileCheck -check-prefix=MCPU-GENERIC-RVA22S64 %s
-// MCPU-GENERIC-RVA22S64: "-target-cpu" "generic-rva22s64"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+m"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+a"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+f"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+d"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+c"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zic64b"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zicbom"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zicbop"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zicboz"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+ziccamoa"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+ziccif"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zicclsm"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+ziccrse"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zicntr"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zicsr"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zifencei"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zihintpause"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zihpm"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+za64rs"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zfhmin"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zba"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zbb"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zbs"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+zkt"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+ssccptr"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+sscounterenw"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+sstvala"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+sstvecd"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+svade"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+svbare"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+svinval"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-feature" "+svpbmt"
-// MCPU-GENERIC-RVA22S64-SAME: "-target-abi" "lp64d"
-
-// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=generic-rva23u64 -menable-experimental-extensions \
-// RUN: | FileCheck -check-prefix=MCPU-GENERIC-RVA23U64 %s
-// MCPU-GENERIC-RVA23U64: "-target-cpu" "generic-rva23u64"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+m"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+a"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+f"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+d"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+c"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+v"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zic64b"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zicbom"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zicbop"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zicboz"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+ziccamoa"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+ziccif"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zicclsm"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+ziccrse"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zicntr"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zicond"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zicsr"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zihintntl"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zihintpause"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zihpm"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+experimental-zimop"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+za64rs"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zawrs"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zfa"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zfhmin"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zcb"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+experimental-zcmop"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zba"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zbb"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zbs"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zkt"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zvbb"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zvfhmin"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-feature" "+zvkt"
-// MCPU-GENERIC-RVA23U64-SAME: "-target-abi" "lp64d"
-
-// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=generic-rva23s64 -menable-experimental-extensions \
-// RUN: | FileCheck -check-prefix=MCPU-GENERIC-RVA23S64 %s
-// MCPU-GENERIC-RVA23S64: "-target-cpu" "generic-rva23s64"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+m"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+a"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+f"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+d"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+c"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+v"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+h"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zic64b"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zicbom"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zicbop"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zicboz"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+ziccamoa"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+ziccif"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zicclsm"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+ziccrse"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zicntr"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zicond"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zicsr"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zifencei"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zihintntl"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zihintpause"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zihpm"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+experimental-zimop"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+za64rs"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zawrs"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zfa"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zfhmin"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zcb"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+experimental-zcmop"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zba"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zbb"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zbs"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zkt"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zvbb"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zvfhmin"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+zvkt"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+shcounterenw"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+shgatpa"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+shtvala"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+shvsatpa"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+shvstvala"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+shvstvecd"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+ssccptr"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+sscofpmf"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+sscounterenw"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+experimental-ssnpm"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+ssstateen"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+sstc"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+sstvala"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+sstvecd"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+ssu64xl"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+svade"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+svbare"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+svinval"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+svnapot"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-feature" "+svpbmt"
-// MCPU-GENERIC-RVA23S64-SAME: "-target-abi" "lp64d"
-
-// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=generic-rvb23u64 -menable-experimental-extensions \
-// RUN: | FileCheck -check-prefix=MCPU-GENERIC-RVB23U64 %s
-// MCPU-GENERIC-RVB23U64: "-target-cpu" "generic-rvb23u64"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+m"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+a"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+f"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+d"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+c"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zic64b"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zicbom"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zicbop"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zicboz"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+ziccamoa"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+ziccif"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zicclsm"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+ziccrse"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zicntr"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zicond"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zicsr"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zihintntl"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zihintpause"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zihpm"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+experimental-zimop"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+za64rs"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zawrs"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zfa"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zcb"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+experimental-zcmop"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zba"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zbb"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zbs"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-feature" "+zkt"
-// MCPU-GENERIC-RVB23U64-SAME: "-target-abi" "lp64d"
-
-// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=generic-rvb23s64 -menable-experimental-extensions \
-// RUN: | FileCheck -check-prefix=MCPU-GENERIC-RVB23S64 %s
-// MCPU-GENERIC-RVB23S64: "-target-cpu" "generic-rvb23s64"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+m"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+a"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+f"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+d"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+c"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zic64b"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zicbom"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zicbop"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zicboz"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+ziccamoa"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+ziccif"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zicclsm"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+ziccrse"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zicntr"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zicond"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zicsr"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zifencei"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zihintntl"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zihintpause"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zihpm"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+experimental-zimop"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+za64rs"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zawrs"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zfa"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zcb"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+experimental-zcmop"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zba"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zbb"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zbs"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+zkt"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+ssccptr"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+sscofpmf"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+sscounterenw"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+sstc"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+sstvala"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+sstvecd"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+ssu64xl"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+svade"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+svbare"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+svinval"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+svnapot"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-feature" "+svpbmt"
-// MCPU-GENERIC-RVB23S64-SAME: "-target-abi" "lp64d"
-
-// RUN: %clang -target riscv32 -### -c %s 2>&1 -mcpu=generic-rvm23u32 -menable-experimental-extensions \
-// RUN: | FileCheck -check-prefix=MCPU-GENERIC-RVM23U32 %s
-// MCPU-GENERIC-RVM23U32: "-target-cpu" "generic-rvm23u32"
-// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+m"
-// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+zicbop"
-// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+zicond"
-// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+zicsr"
-// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+zihintntl"
-// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+zihintpause"
-// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+experimental-zimop"
-// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+zce"
-// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+experimental-zcmop"
-// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+zba"
-// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+zbb"
-// MCPU-GENERIC-RVM23U32-SAME: "-target-feature" "+zbs"
-// MCPU-GENERIC-RVM23U32-SAME: "-target-abi" "ilp32"
+// RUN: %clang -target riscv32 -### -c %s 2>&1 -mcpu=rvi20u32 | FileCheck -check-prefix=MCPU-RVI20U32 %s
+// MCPU-RVI20U32: "-target-cpu" "rvi20u32"
+// MCPU-RVI20U32-SAME: "-target-feature" "-a"
+// MCPU-RVI20U32-SAME: "-target-feature" "-c"
+// MCPU-RVI20U32-SAME: "-target-feature" "-d"
+// MCPU-RVI20U32-SAME: "-target-feature" "-f"
+// MCPU-RVI20U32-SAME: "-target-feature" "-m"
+// MCPU-RVI20U32-SAME: "-target-abi" "ilp32"
+
+// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=rvi20u64 | FileCheck -check-prefix=MCPU-RVI20U64 %s
+// MCPU-RVI20U64: "-target-cpu" "rvi20u64"
+// MCPU-RVI20U64: "-target-feature" "-a"
+// MCPU-RVI20U64: "-target-feature" "-c"
+// MCPU-RVI20U64: "-target-feature" "-d"
+// MCPU-RVI20U64: "-target-feature" "-f"
+// MCPU-RVI20U64: "-target-feature" "-m"
+// MCPU-RVI20U64-SAME: "-target-abi" "lp64"
+
+// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=rva20u64 | FileCheck -check-prefix=MCPU-RVA20U64 %s
+// MCPU-RVA20U64: "-target-cpu" "rva20u64"
+// MCPU-RVA20U64: "-target-feature" "+m"
+// MCPU-RVA20U64: "-target-feature" "+a"
+// MCPU-RVA20U64: "-target-feature" "+f"
+// MCPU-RVA20U64: "-target-feature" "+d"
+// MCPU-RVA20U64: "-target-feature" "+c"
+// MCPU-RVA20U64: "-target-feature" "+ziccamoa"
+// MCPU-RVA20U64: "-target-feature" "+ziccif"
+// MCPU-RVA20U64: "-target-feature" "+zicclsm"
+// MCPU-RVA20U64: "-target-feature" "+ziccrse"
+// MCPU-RVA20U64: "-target-feature" "+zicntr"
+// MCPU-RVA20U64: "-target-feature" "+zicsr"
+// MCPU-RVA20U64: "-target-feature" "+za128rs"
+// MCPU-RVA20U64-SAME: "-target-abi" "lp64d"
+
+// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=rva20s64 | FileCheck -check-prefix=MCPU-RVA20S64 %s
+// MCPU-RVA20S64: "-target-cpu" "rva20s64"
+// MCPU-RVA20S64-SAME: "-target-feature" "+m"
+// MCPU-RVA20S64-SAME: "-target-feature" "+a"
+// MCPU-RVA20S64-SAME: "-target-feature" "+f"
+// MCPU-RVA20S64-SAME: "-target-feature" "+d"
+// MCPU-RVA20S64-SAME: "-target-feature" "+c"
+// MCPU-RVA20S64-SAME: "-target-feature" "+ziccamoa"
+// MCPU-RVA20S64-SAME: "-target-feature" "+ziccif"
+// MCPU-RVA20S64-SAME: "-target-feature" "+zicclsm"
+// MCPU-RVA20S64-SAME: "-target-feature" "+ziccrse"
+// MCPU-RVA20S64-SAME: "-target-feature" "+zicntr"
+// MCPU-RVA20S64-SAME: "-target-feature" "+zicsr"
+// MCPU-RVA20S64-SAME: "-target-feature" "+zifencei"
+// MCPU-RVA20S64-SAME: "-target-feature" "+za128rs"
+// MCPU-RVA20S64-SAME: "-target-feature" "+ssccptr"
+// MCPU-RVA20S64-SAME: "-target-feature" "+sstvala"
+// MCPU-RVA20S64-SAME: "-target-feature" "+sstvecd"
+// MCPU-RVA20S64-SAME: "-target-feature" "+svade"
+// MCPU-RVA20S64-SAME: "-target-feature" "+svbare"
+// MCPU-RVA20S64-SAME: "-target-abi" "lp64d"
+
+// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=rva22u64 | FileCheck -check-prefix=MCPU-RVA22U64 %s
+// MCPU-RVA22U64: "-target-cpu" "rva22u64"
+// MCPU-RVA22U64-SAME: "-target-feature" "+m"
+// MCPU-RVA22U64-SAME: "-target-feature" "+a"
+// MCPU-RVA22U64-SAME: "-target-feature" "+f"
+// MCPU-RVA22U64-SAME: "-target-feature" "+d"
+// MCPU-RVA22U64-SAME: "-target-feature" "+c"
+// MCPU-RVA22U64-SAME: "-target-feature" "+zic64b"
+// MCPU-RVA22U64-SAME: "-target-feature" "+zicbom"
+// MCPU-RVA22U64-SAME: "-target-feature" "+zicbop"
+// MCPU-RVA22U64-SAME: "-target-feature" "+zicboz"
+// MCPU-RVA22U64-SAME: "-target-feature" "+ziccamoa"
+// MCPU-RVA22U64-SAME: "-target-feature" "+ziccif"
+// MCPU-RVA22U64-SAME: "-target-feature" "+zicclsm"
+// MCPU-RVA22U64-SAME: "-target-feature" "+ziccrse"
+// MCPU-RVA22U64-SAME: "-target-feature" "+zicntr"
+// MCPU-RVA22U64-SAME: "-target-feature" "+zicsr"
+// MCPU-RVA22U64-SAME: "-target-feature" "+zihintpause"
+// MCPU-RVA22U64-SAME: "-target-feature" "+zihpm"
+// MCPU-RVA22U64-SAME: "-target-feature" "+za64rs"
+// MCPU-RVA22U64-SAME: "-target-feature" "+zfhmin"
+// MCPU-RVA22U64-SAME: "-target-feature" "+zba"
+// MCPU-RVA22U64-SAME: "-target-feature" "+zbb"
+// MCPU-RVA22U64-SAME: "-target-feature" "+zbs"
+// MCPU-RVA22U64-SAME: "-target-feature" "+zkt"
+// MCPU-RVA22U64-SAME: "-target-abi" "lp64d"
+
+// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=rva22s64 | FileCheck -check-prefix=MCPU-RVA22S64 %s
+// MCPU-RVA22S64: "-target-cpu" "rva22s64"
+// MCPU-RVA22S64-SAME: "-target-feature" "+m"
+// MCPU-RVA22S64-SAME: "-target-feature" "+a"
+// MCPU-RVA22S64-SAME: "-target-feature" "+f"
+// MCPU-RVA22S64-SAME: "-target-feature" "+d"
+// MCPU-RVA22S64-SAME: "-target-feature" "+c"
+// MCPU-RVA22S64-SAME: "-target-feature" "+zic64b"
+// MCPU-RVA22S64-SAME: "-target-feature" "+zicbom"
+// MCPU-RVA22S64-SAME: "-target-feature" "+zicbop"
+// MCPU-RVA22S64-SAME: "-target-feature" "+zicboz"
+// MCPU-RVA22S64-SAME: "-target-feature" "+ziccamoa"
+// MCPU-RVA22S64-SAME: "-target-feature" "+ziccif"
+// MCPU-RVA22S64-SAME: "-target-feature" "+zicclsm"
+// MCPU-RVA22S64-SAME: "-target-feature" "+ziccrse"
+// MCPU-RVA22S64-SAME: "-target-feature" "+zicntr"
+// MCPU-RVA22S64-SAME: "-target-feature" "+zicsr"
+// MCPU-RVA22S64-SAME: "-target-feature" "+zifencei"
+// MCPU-RVA22S64-SAME: "-target-feature" "+zihintpause"
+// MCPU-RVA22S64-SAME: "-target-feature" "+zihpm"
+// MCPU-RVA22S64-SAME: "-target-feature" "+za64rs"
+// MCPU-RVA22S64-SAME: "-target-feature" "+zfhmin"
+// MCPU-RVA22S64-SAME: "-target-feature" "+zba"
+// MCPU-RVA22S64-SAME: "-target-feature" "+zbb"
+// MCPU-RVA22S64-SAME: "-target-feature" "+zbs"
+// MCPU-RVA22S64-SAME: "-target-feature" "+zkt"
+// MCPU-RVA22S64-SAME: "-target-feature" "+ssccptr"
+// MCPU-RVA22S64-SAME: "-target-feature" "+sscounterenw"
+// MCPU-RVA22S64-SAME: "-target-feature" "+sstvala"
+// MCPU-RVA22S64-SAME: "-target-feature" "+sstvecd"
+// MCPU-RVA22S64-SAME: "-target-feature" "+svade"
+// MCPU-RVA22S64-SAME: "-target-feature" "+svbare"
+// MCPU-RVA22S64-SAME: "-target-feature" "+svinval"
+// MCPU-RVA22S64-SAME: "-target-feature" "+svpbmt"
+// MCPU-RVA22S64-SAME: "-target-abi" "lp64d"
+
+// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=rva23u64 -menable-experimental-extensions \
+// RUN: | FileCheck -check-prefix=MCPU-RVA23U64 %s
+// MCPU-RVA23U64: "-target-cpu" "rva23u64"
+// MCPU-RVA23U64-SAME: "-target-feature" "+m"
+// MCPU-RVA23U64-SAME: "-target-feature" "+a"
+// MCPU-RVA23U64-SAME: "-target-feature" "+f"
+// MCPU-RVA23U64-SAME: "-target-feature" "+d"
+// MCPU-RVA23U64-SAME: "-target-feature" "+c"
+// MCPU-RVA23U64-SAME: "-target-feature" "+v"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zic64b"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zicbom"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zicbop"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zicboz"
+// MCPU-RVA23U64-SAME: "-target-feature" "+ziccamoa"
+// MCPU-RVA23U64-SAME: "-target-feature" "+ziccif"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zicclsm"
+// MCPU-RVA23U64-SAME: "-target-feature" "+ziccrse"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zicntr"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zicond"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zicsr"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zihintntl"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zihintpause"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zihpm"
+// MCPU-RVA23U64-SAME: "-target-feature" "+experimental-zimop"
+// MCPU-RVA23U64-SAME: "-target-feature" "+za64rs"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zawrs"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zfa"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zfhmin"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zcb"
+// MCPU-RVA23U64-SAME: "-target-feature" "+experimental-zcmop"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zba"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zbb"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zbs"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zkt"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zvbb"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zvfhmin"
+// MCPU-RVA23U64-SAME: "-target-feature" "+zvkt"
+// MCPU-RVA23U64-SAME: "-target-abi" "lp64d"
+
+// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=rva23s64 -menable-experimental-extensions \
+// RUN: | FileCheck -check-prefix=MCPU-RVA23S64 %s
+// MCPU-RVA23S64: "-target-cpu" "rva23s64"
+// MCPU-RVA23S64-SAME: "-target-feature" "+m"
+// MCPU-RVA23S64-SAME: "-target-feature" "+a"
+// MCPU-RVA23S64-SAME: "-target-feature" "+f"
+// MCPU-RVA23S64-SAME: "-target-feature" "+d"
+// MCPU-RVA23S64-SAME: "-target-feature" "+c"
+// MCPU-RVA23S64-SAME: "-target-feature" "+v"
+// MCPU-RVA23S64-SAME: "-target-feature" "+h"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zic64b"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zicbom"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zicbop"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zicboz"
+// MCPU-RVA23S64-SAME: "-target-feature" "+ziccamoa"
+// MCPU-RVA23S64-SAME: "-target-feature" "+ziccif"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zicclsm"
+// MCPU-RVA23S64-SAME: "-target-feature" "+ziccrse"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zicntr"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zicond"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zicsr"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zifencei"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zihintntl"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zihintpause"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zihpm"
+// MCPU-RVA23S64-SAME: "-target-feature" "+experimental-zimop"
+// MCPU-RVA23S64-SAME: "-target-feature" "+za64rs"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zawrs"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zfa"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zfhmin"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zcb"
+// MCPU-RVA23S64-SAME: "-target-feature" "+experimental-zcmop"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zba"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zbb"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zbs"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zkt"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zvbb"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zvfhmin"
+// MCPU-RVA23S64-SAME: "-target-feature" "+zvkt"
+// MCPU-RVA23S64-SAME: "-target-feature" "+shcounterenw"
+// MCPU-RVA23S64-SAME: "-target-feature" "+shgatpa"
+// MCPU-RVA23S64-SAME: "-target-feature" "+shtvala"
+// MCPU-RVA23S64-SAME: "-target-feature" "+shvsatpa"
+// MCPU-RVA23S64-SAME: "-target-feature" "+shvstvala"
+// MCPU-RVA23S64-SAME: "-target-feature" "+shvstvecd"
+// MCPU-RVA23S64-SAME: "-target-feature" "+ssccptr"
+// MCPU-RVA23S64-SAME: "-target-feature" "+sscofpmf"
+// MCPU-RVA23S64-SAME: "-target-feature" "+sscounterenw"
+// MCPU-RVA23S64-SAME: "-target-feature" "+experimental-ssnpm"
+// MCPU-RVA23S64-SAME: "-target-feature" "+ssstateen"
+// MCPU-RVA23S64-SAME: "-target-feature" "+sstc"
+// MCPU-RVA23S64-SAME: "-target-feature" "+sstvala"
+// MCPU-RVA23S64-SAME: "-target-feature" "+sstvecd"
+// MCPU-RVA23S64-SAME: "-target-feature" "+ssu64xl"
+// MCPU-RVA23S64-SAME: "-target-feature" "+svade"
+// MCPU-RVA23S64-SAME: "-target-feature" "+svbare"
+// MCPU-RVA23S64-SAME: "-target-feature" "+svinval"
+// MCPU-RVA23S64-SAME: "-target-feature" "+svnapot"
+// MCPU-RVA23S64-SAME: "-target-feature" "+svpbmt"
+// MCPU-RVA23S64-SAME: "-target-abi" "lp64d"
+
+// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=rvb23u64 -menable-experimental-extensions \
+// RUN: | FileCheck -check-prefix=MCPU-RVB23U64 %s
+// MCPU-RVB23U64: "-target-cpu" "rvb23u64"
+// MCPU-RVB23U64-SAME: "-target-feature" "+m"
+// MCPU-RVB23U64-SAME: "-target-feature" "+a"
+// MCPU-RVB23U64-SAME: "-target-feature" "+f"
+// MCPU-RVB23U64-SAME: "-target-feature" "+d"
+// MCPU-RVB23U64-SAME: "-target-feature" "+c"
+// MCPU-RVB23U64-SAME: "-target-feature" "+zic64b"
+// MCPU-RVB23U64-SAME: "-target-feature" "+zicbom"
+// MCPU-RVB23U64-SAME: "-target-feature" "+zicbop"
+// MCPU-RVB23U64-SAME: "-target-feature" "+zicboz"
+// MCPU-RVB23U64-SAME: "-target-feature" "+ziccamoa"
+// MCPU-RVB23U64-SAME: "-target-feature" "+ziccif"
+// MCPU-RVB23U64-SAME: "-target-feature" "+zicclsm"
+// MCPU-RVB23U64-SAME: "-target-feature" "+ziccrse"
+// MCPU-RVB23U64-SAME: "-target-feature" "+zicntr"
+// MCPU-RVB23U64-SAME: "-target-feature" "+zicond"
+// MCPU-RVB23U64-SAME: "-target-feature" "+zicsr"
+// MCPU-RVB23U64-SAME: "-target-feature" "+zihintntl"
+// MCPU-RVB23U64-SAME: "-target-feature" "+zihintpause"
+// MCPU-RVB23U64-SAME: "-target-feature" "+zihpm"
+// MCPU-RVB23U64-SAME: "-target-feature" "+experimental-zimop"
+// MCPU-RVB23U64-SAME: "-target-feature" "+za64rs"
+// MCPU-RVB23U64-SAME: "-target-feature" "+zawrs"
+// MCPU-RVB23U64-SAME: "-target-feature" "+zfa"
+// MCPU-RVB23U64-SAME: "-target-feature" "+zcb"
+// MCPU-RVB23U64-SAME: "-target-feature" "+experimental-zcmop"
+// MCPU-RVB23U64-SAME: "-target-feature" "+zba"
+// MCPU-RVB23U64-SAME: "-target-feature" "+zbb"
+// MCPU-RVB23U64-SAME: "-target-feature" "+zbs"
+// MCPU-RVB23U64-SAME: "-target-feature" "+zkt"
+// MCPU-RVB23U64-SAME: "-target-abi" "lp64d"
+
+// RUN: %clang -target riscv64 -### -c %s 2>&1 -mcpu=rvb23s64 -menable-experimental-extensions \
+// RUN: | FileCheck -check-prefix=MCPU-RVB23S64 %s
+// MCPU-RVB23S64: "-target-cpu" "rvb23s64"
+// MCPU-RVB23S64-SAME: "-target-feature" "+m"
+// MCPU-RVB23S64-SAME: "-target-feature" "+a"
+// MCPU-RVB23S64-SAME: "-target-feature" "+f"
+// MCPU-RVB23S64-SAME: "-target-feature" "+d"
+// MCPU-RVB23S64-SAME: "-target-feature" "+c"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zic64b"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zicbom"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zicbop"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zicboz"
+// MCPU-RVB23S64-SAME: "-target-feature" "+ziccamoa"
+// MCPU-RVB23S64-SAME: "-target-feature" "+ziccif"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zicclsm"
+// MCPU-RVB23S64-SAME: "-target-feature" "+ziccrse"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zicntr"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zicond"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zicsr"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zifencei"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zihintntl"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zihintpause"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zihpm"
+// MCPU-RVB23S64-SAME: "-target-feature" "+experimental-zimop"
+// MCPU-RVB23S64-SAME: "-target-feature" "+za64rs"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zawrs"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zfa"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zcb"
+// MCPU-RVB23S64-SAME: "-target-feature" "+experimental-zcmop"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zba"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zbb"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zbs"
+// MCPU-RVB23S64-SAME: "-target-feature" "+zkt"
+// MCPU-RVB23S64-SAME: "-target-feature" "+ssccptr"
+// MCPU-RVB23S64-SAME: "-target-feature" "+sscofpmf"
+// MCPU-RVB23S64-SAME: "-target-feature" "+sscounterenw"
+// MCPU-RVB23S64-SAME: "-target-feature" "+sstc"
+// MCPU-RVB23S64-SAME: "-target-feature" "+sstvala"
+// MCPU-RVB23S64-SAME: "-target-feature" "+sstvecd"
+// MCPU-RVB23S64-SAME: "-target-feature" "+ssu64xl"
+// MCPU-RVB23S64-SAME: "-target-feature" "+svade"
+// MCPU-RVB23S64-SAME: "-target-feature" "+svbare"
+// MCPU-RVB23S64-SAME: "-target-feature" "+svinval"
+// MCPU-RVB23S64-SAME: "-target-feature" "+svnapot"
+// MCPU-RVB23S64-SAME: "-target-feature" "+svpbmt"
+// MCPU-RVB23S64-SAME: "-target-abi" "lp64d"
+
+// RUN: %clang -target riscv32 -### -c %s 2>&1 -mcpu=rvm23u32 -menable-experimental-extensions \
+// RUN: | FileCheck -check-prefix=MCPU-RVM23U32 %s
+// MCPU-RVM23U32: "-target-cpu" "rvm23u32"
+// MCPU-RVM23U32-SAME: "-target-feature" "+m"
+// MCPU-RVM23U32-SAME: "-target-feature" "+zicbop"
+// MCPU-RVM23U32-SAME: "-target-feature" "+zicond"
+// MCPU-RVM23U32-SAME: "-target-feature" "+zicsr"
+// MCPU-RVM23U32-SAME: "-target-feature" "+zihintntl"
+// MCPU-RVM23U32-SAME: "-target-feature" "+zihintpause"
+// MCPU-RVM23U32-SAME: "-target-feature" "+experimental-zimop"
+// MCPU-RVM23U32-SAME: "-target-feature" "+zce"
+// MCPU-RVM23U32-SAME: "-target-feature" "+experimental-zcmop"
+// MCPU-RVM23U32-SAME: "-target-feature" "+zba"
+// MCPU-RVM23U32-SAME: "-target-feature" "+zbb"
+// MCPU-RVM23U32-SAME: "-target-feature" "+zbs"
+// MCPU-RVM23U32-SAME: "-target-abi" "ilp32"
diff --git a/clang/test/Misc/target-invalid-cpu-note.c b/clang/test/Misc/target-invalid-cpu-note.c
index 41347f9ed7aa14..6270a887e89280 100644
--- a/clang/test/Misc/target-invalid-cpu-note.c
+++ b/clang/test/Misc/target-invalid-cpu-note.c
@@ -81,16 +81,16 @@
// RUN: not %clang_cc1 -triple riscv32 -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix RISCV32
// RISCV32: error: unknown target CPU 'not-a-cpu'
-// RISCV32-NEXT: note: valid target CPU values are: generic-rv32, generic-rvi20u32, generic-rvm23u32, rocket-rv32, sifive-e20, sifive-e21, sifive-e24, sifive-e31, sifive-e34, sifive-e76, syntacore-scr1-base, syntacore-scr1-max{{$}}
+// RISCV32-NEXT: note: valid target CPU values are: generic-rv32, rvi20u32, rvm23u32, rocket-rv32, sifive-e20, sifive-e21, sifive-e24, sifive-e31, sifive-e34, sifive-e76, syntacore-scr1-base, syntacore-scr1-max{{$}}
// RUN: not %clang_cc1 -triple riscv64 -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix RISCV64
// RISCV64: error: unknown target CPU 'not-a-cpu'
-// RISCV64-NEXT: note: valid target CPU values are: generic-rv64, generic-rva20s64, generic-rva20u64, generic-rva22s64, generic-rva22u64, generic-rva23s64, generic-rva23u64, generic-rvb23s64, generic-rvb23u64, generic-rvi20u64, rocket-rv64, sifive-p450, sifive-p670, sifive-s21, sifive-s51, sifive-s54, sifive-s76, sifive-u54, sifive-u74, sifive-x280, veyron-v1, xiangshan-nanhu{{$}}
+// RISCV64-NEXT: note: valid target CPU values are: generic-rv64, rva20s64, rva20u64, rva22s64, rva22u64, rva23s64, rva23u64, rvb23s64, rvb23u64, rvi20u64, rocket-rv64, sifive-p450, sifive-p670, sifive-s21, sifive-s51, sifive-s54, sifive-s76, sifive-u54, sifive-u74, sifive-x280, veyron-v1, xiangshan-nanhu{{$}}
// RUN: not %clang_cc1 -triple riscv32 -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE-RISCV32
// TUNE-RISCV32: error: unknown target CPU 'not-a-cpu'
-// TUNE-RISCV32-NEXT: note: valid target CPU values are: generic-rv32, generic-rvi20u32, generic-rvm23u32, rocket-rv32, sifive-e20, sifive-e21, sifive-e24, sifive-e31, sifive-e34, sifive-e76, syntacore-scr1-base, syntacore-scr1-max, generic, rocket, sifive-7-series{{$}}
+// TUNE-RISCV32-NEXT: note: valid target CPU values are: generic-rv32, rvi20u32, rvm23u32, rocket-rv32, sifive-e20, sifive-e21, sifive-e24, sifive-e31, sifive-e34, sifive-e76, syntacore-scr1-base, syntacore-scr1-max, generic, rocket, sifive-7-series{{$}}
// RUN: not %clang_cc1 -triple riscv64 -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE-RISCV64
// TUNE-RISCV64: error: unknown target CPU 'not-a-cpu'
-// TUNE-RISCV64-NEXT: note: valid target CPU values are: generic-rv64, generic-rva20s64, generic-rva20u64, generic-rva22s64, generic-rva22u64, generic-rva23s64, generic-rva23u64, generic-rvb23s64, generic-rvb23u64, generic-rvi20u64, rocket-rv64, sifive-p450, sifive-p670, sifive-s21, sifive-s51, sifive-s54, sifive-s76, sifive-u54, sifive-u74, sifive-x280, veyron-v1, xiangshan-nanhu, generic, rocket, sifive-7-series{{$}}
+// TUNE-RISCV64-NEXT: note: valid target CPU values are: generic-rv64, rva20s64, rva20u64, rva22s64, rva22u64, rva23s64, rva23u64, rvb23s64, rvb23u64, rvi20u64, rocket-rv64, sifive-p450, sifive-p670, sifive-s21, sifive-s51, sifive-s54, sifive-s76, sifive-u54, sifive-u74, sifive-x280, veyron-v1, xiangshan-nanhu, generic, rocket, sifive-7-series{{$}}
diff --git a/llvm/lib/Target/RISCV/RISCVProcessors.td b/llvm/lib/Target/RISCV/RISCVProcessors.td
index 9c0ca06de0a5a8..135cdf63de3c04 100644
--- a/llvm/lib/Target/RISCV/RISCVProcessors.td
+++ b/llvm/lib/Target/RISCV/RISCVProcessors.td
@@ -237,37 +237,37 @@ def GENERIC_RV32 : RISCVGenericProcessorModel<"generic-rv32",
def GENERIC_RV64 : RISCVGenericProcessorModel<"generic-rv64",
[Feature64Bit]>;
-def GENERIC_RVI20U32 : RISCVGenericProcessorModel<"generic-rvi20u32",
+def GENERIC_RVI20U32 : RISCVGenericProcessorModel<"rvi20u32",
[Feature32Bit]>;
-def GENERIC_RVI20U64 : RISCVGenericProcessorModel<"generic-rvi20u64",
+def GENERIC_RVI20U64 : RISCVGenericProcessorModel<"rvi20u64",
[Feature64Bit]>;
-def GENERIC_RVA20U64 : RISCVGenericProcessorModel<"generic-rva20u64",
+def GENERIC_RVA20U64 : RISCVGenericProcessorModel<"rva20u64",
RVA20U64Features>;
-def GENERIC_RVA20S64 : RISCVGenericProcessorModel<"generic-rva20s64",
+def GENERIC_RVA20S64 : RISCVGenericProcessorModel<"rva20s64",
RVA20S64Features>;
-def GENERIC_RVA22U64 : RISCVGenericProcessorModel<"generic-rva22u64",
+def GENERIC_RVA22U64 : RISCVGenericProcessorModel<"rva22u64",
RVA22U64Features>;
-def GENERIC_RVA22S64 : RISCVGenericProcessorModel<"generic-rva22s64",
+def GENERIC_RVA22S64 : RISCVGenericProcessorModel<"rva22s64",
RVA22S64Features>;
-def GENERIC_RVA23U64 : RISCVGenericProcessorModel<"generic-rva23u64",
+def GENERIC_RVA23U64 : RISCVGenericProcessorModel<"rva23u64",
RVA23U64Features>;
-def GENERIC_RVA23S64 : RISCVGenericProcessorModel<"generic-rva23s64",
+def GENERIC_RVA23S64 : RISCVGenericProcessorModel<"rva23s64",
RVA23S64Features>;
-def GENERIC_RVB23U64 : RISCVGenericProcessorModel<"generic-rvb23u64",
+def GENERIC_RVB23U64 : RISCVGenericProcessorModel<"rvb23u64",
RVB23U64Features>;
-def GENERIC_RVB23S64 : RISCVGenericProcessorModel<"generic-rvb23s64",
+def GENERIC_RVB23S64 : RISCVGenericProcessorModel<"rvb23s64",
RVB23S64Features>;
-def GENERIC_RVM23U32 : RISCVGenericProcessorModel<"generic-rvm23u32",
+def GENERIC_RVM23U32 : RISCVGenericProcessorModel<"rvm23u32",
RVM23U32Features>;
// Support generic for compatibility with other targets. The triple will be used
>From e03f2cdcc4d9ebdc6f462495c34772f5debb2cc3 Mon Sep 17 00:00:00 2001
From: Wang Pengcheng <wangpengcheng.pp at bytedance.com>
Date: Fri, 26 Apr 2024 15:59:55 +0800
Subject: [PATCH 3/3] We should add FeatureStdExtI explicitly now
Created using spr 1.3.6-beta.1
---
llvm/lib/Target/RISCV/RISCVProfiles.td | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/llvm/lib/Target/RISCV/RISCVProfiles.td b/llvm/lib/Target/RISCV/RISCVProfiles.td
index 1ba76264172e62..7881c9157a46ff 100644
--- a/llvm/lib/Target/RISCV/RISCVProfiles.td
+++ b/llvm/lib/Target/RISCV/RISCVProfiles.td
@@ -10,6 +10,9 @@ class RISCVProfile<string name, list<SubtargetFeature> features>
: SubtargetFeature<name, "RISCVProfile", NAME,
"RISC-V " # name # " profile", features>;
+defvar RVI20U32Features = [Feature32Bit, FeatureStdExtI];
+defvar RVI20U64Features = [Feature64Bit, FeatureStdExtI];
+
defvar RVA20U64Features = [Feature64Bit,
FeatureStdExtI,
FeatureStdExtM,
@@ -188,8 +191,8 @@ defvar RVM23U32Features = [Feature32Bit,
FeatureStdExtZimop,
FeatureStdExtZcmop];
-def RVI20U32 : RISCVProfile<"rvi20u32", [Feature32Bit]>;
-def RVI20U64 : RISCVProfile<"rvi20u64", [Feature64Bit]>;
+def RVI20U32 : RISCVProfile<"rvi20u32", RVI20U32Features>;
+def RVI20U64 : RISCVProfile<"rvi20u64", RVI20U64Features>;
def RVA20U64 : RISCVProfile<"rva20u64", RVA20U64Features>;
def RVA20S64 : RISCVProfile<"rva20s64", RVA20S64Features>;
def RVA22U64 : RISCVProfile<"rva22u64", RVA22U64Features>;
More information about the cfe-commits
mailing list