[RISCV][llvm] Support Smpmpmt version 0.6 (#166322)
spec: https://github.com/riscv/riscv-isa-manual/blob/smpmpmt/src/smpmpmt.adoc Co-Authored-by: Jesse Huang <jesse.huang@sifive.com>
This commit is contained in:
parent
d10a85167a
commit
f6138015ef
@ -227,6 +227,7 @@
|
||||
// CHECK-NEXT: zvfofp8min 0.2 'Zvfofp8min' (Vector OFP8 Converts)
|
||||
// CHECK-NEXT: zvkgs 0.7 'Zvkgs' (Vector-Scalar GCM instructions for Cryptography)
|
||||
// CHECK-NEXT: zvqdotq 0.0 'Zvqdotq' (Vector quad widening 4D Dot Product)
|
||||
// CHECK-NEXT: smpmpmt 0.6 'Smpmpmt' (PMP-based Memory Types Extension)
|
||||
// CHECK-NEXT: svukte 0.3 'Svukte' (Address-Independent Latency of User-Mode Faults to Supervisor Addresses)
|
||||
// CHECK-NEXT: xqccmp 0.3 'Xqccmp' (Qualcomm 16-bit Push/Pop and Double Moves)
|
||||
// CHECK-NEXT: xqcia 0.7 'Xqcia' (Qualcomm uC Arithmetic Extension)
|
||||
|
||||
@ -40,6 +40,7 @@
|
||||
// CHECK-NOT: __riscv_smepmp {{.*$}}
|
||||
// CHECK-NOT: __riscv_smmpm{{.*$}}
|
||||
// CHECK-NOT: __riscv_smnpm{{.*$}}
|
||||
// CHECK-NOT: __riscv_smpmpmt {{.*$}}
|
||||
// CHECK-NOT: __riscv_smrnmi {{.*$}}
|
||||
// CHECK-NOT: __riscv_smstateen {{.*$}}
|
||||
// CHECK-NOT: __riscv_ssaia {{.*$}}
|
||||
@ -1333,6 +1334,14 @@
|
||||
// RUN: -o - | FileCheck --check-prefix=CHECK-SMEPMP-EXT %s
|
||||
// CHECK-SMEPMP-EXT: __riscv_smepmp 1000000{{$}}
|
||||
|
||||
// RUN: %clang --target=riscv32 -menable-experimental-extensions \
|
||||
// RUN: -march=rv32ismpmpmt0p6 -x c -E -dM %s \
|
||||
// RUN: -o - | FileCheck --check-prefix=CHECK-SMPMPMT %s
|
||||
// RUN: %clang --target=riscv64 -menable-experimental-extensions \
|
||||
// RUN: -march=rv64ismpmpmt0p6 -x c -E -dM %s \
|
||||
// RUN: -o - | FileCheck --check-prefix=CHECK-SMPMPMT %s
|
||||
// CHECK-SMPMPMT: __riscv_smpmpmt 6000{{$}}
|
||||
|
||||
// RUN: %clang --target=riscv32 \
|
||||
// RUN: -march=rv32ismrnmi1p0 -E -dM %s \
|
||||
// RUN: -o - | FileCheck --check-prefix=CHECK-SMRNMI-EXT %s
|
||||
|
||||
@ -351,6 +351,9 @@ The primary goal of experimental support is to assist in the process of ratifica
|
||||
``experimental-zvqdotq``
|
||||
LLVM implements the `0.0.1 draft specification <https://github.com/riscv/riscv-dot-product/releases/tag/v0.0.1>`__.
|
||||
|
||||
``experimental-smpmpmt``
|
||||
LLVM implements the `0.6 draft specification <https://github.com/riscv/riscv-isa-manual/blob/smpmpmt/src/smpmpmt.adoc>`__.
|
||||
|
||||
To use an experimental extension from `clang`, you must add `-menable-experimental-extensions` to the command line, and specify the exact version of the experimental extension you are using. To use an experimental extension with LLVM's internal developer tools (e.g. `llc`, `llvm-objdump`, `llvm-mc`), you must prefix the extension name with `experimental-`. Note that you don't need to specify the version with internal tools, and shouldn't include the `experimental-` prefix with `clang`.
|
||||
|
||||
Vendor Extensions
|
||||
|
||||
@ -956,6 +956,9 @@ def FeatureStdExtSsdbltrp
|
||||
def FeatureStdExtSmepmp
|
||||
: RISCVExtension<1, 0, "Enhanced Physical Memory Protection">;
|
||||
|
||||
def FeatureStdExtSmpmpmt
|
||||
: RISCVExperimentalExtension<0, 6, "PMP-based Memory Types Extension">;
|
||||
|
||||
def FeatureStdExtSmrnmi
|
||||
: RISCVExtension<1, 0, "Resumable Non-Maskable Interrupts">;
|
||||
def HasStdExtSmrnmi : Predicate<"Subtarget->hasStdExtSmrnmi()">,
|
||||
|
||||
@ -125,6 +125,7 @@
|
||||
; RUN: llc -mtriple=riscv32 -mattr=+smcdeleg %s -o - | FileCheck --check-prefixes=CHECK,RV32SMCDELEG %s
|
||||
; RUN: llc -mtriple=riscv32 -mattr=+smcntrpmf %s -o - | FileCheck --check-prefixes=CHECK,RV32SMCNTRPMF %s
|
||||
; RUN: llc -mtriple=riscv32 -mattr=+smepmp %s -o - | FileCheck --check-prefixes=CHECK,RV32SMEPMP %s
|
||||
; RUN: llc -mtriple=riscv32 -mattr=+experimental-smpmpmt %s -o - | FileCheck --check-prefixes=CHECK,RV32SMPMPMT %s
|
||||
; RUN: llc -mtriple=riscv32 -mattr=+smrnmi %s -o - | FileCheck --check-prefixes=CHECK,RV32SMRNMI %s
|
||||
; RUN: llc -mtriple=riscv32 -mattr=+zfbfmin %s -o - | FileCheck --check-prefixes=CHECK,RV32ZFBFMIN %s
|
||||
; RUN: llc -mtriple=riscv32 -mattr=+experimental-zvfbfa %s -o - | FileCheck --check-prefixes=CHECK,RV32ZVFBFA %s
|
||||
@ -275,6 +276,7 @@
|
||||
; RUN: llc -mtriple=riscv64 -mattr=+smcdeleg %s -o - | FileCheck --check-prefixes=CHECK,RV64SMCDELEG %s
|
||||
; RUN: llc -mtriple=riscv64 -mattr=+smcntrpmf %s -o - | FileCheck --check-prefixes=CHECK,RV64SMCNTRPMF %s
|
||||
; RUN: llc -mtriple=riscv64 -mattr=+smepmp %s -o - | FileCheck --check-prefixes=CHECK,RV64SMEPMP %s
|
||||
; RUN: llc -mtriple=riscv64 -mattr=+experimental-smpmpmt %s -o - | FileCheck --check-prefixes=CHECK,RV64SMPMPMT %s
|
||||
; RUN: llc -mtriple=riscv64 -mattr=+smrnmi %s -o - | FileCheck --check-prefixes=CHECK,RV64SMRNMI %s
|
||||
; RUN: llc -mtriple=riscv64 -mattr=+zfbfmin %s -o - | FileCheck --check-prefixes=CHECK,RV64ZFBFMIN %s
|
||||
; RUN: llc -mtriple=riscv64 -mattr=+experimental-zvfbfa %s -o - | FileCheck --check-prefixes=CHECK,RV64ZVFBFA %s
|
||||
@ -439,6 +441,7 @@
|
||||
; RV32SMCDELEG: .attribute 5, "rv32i2p1_smcdeleg1p0"
|
||||
; RV32SMCNTRPMF: .attribute 5, "rv32i2p1_smcntrpmf1p0"
|
||||
; RV32SMEPMP: .attribute 5, "rv32i2p1_smepmp1p0"
|
||||
; RV32SMPMPMT: .attribute 5, "rv32i2p1_smpmpmt0p6"
|
||||
; RV32SMRNMI: .attribute 5, "rv32i2p1_smrnmi1p0"
|
||||
; RV32ZFBFMIN: .attribute 5, "rv32i2p1_f2p2_zicsr2p0_zfbfmin1p0"
|
||||
; RV32ZVFBFA: .attribute 5, "rv32i2p1_f2p2_zicsr2p0_zfbfmin1p0_zve32f1p0_zve32x1p0_zvfbfa0p1_zvl32b1p0"
|
||||
@ -587,6 +590,7 @@
|
||||
; RV64SMCDELEG: .attribute 5, "rv64i2p1_smcdeleg1p0"
|
||||
; RV64SMCNTRPMF: .attribute 5, "rv64i2p1_smcntrpmf1p0"
|
||||
; RV64SMEPMP: .attribute 5, "rv64i2p1_smepmp1p0"
|
||||
; RV64SMPMPMT: .attribute 5, "rv64i2p1_smpmpmt0p6"
|
||||
; RV64SMRNMI: .attribute 5, "rv64i2p1_smrnmi1p0"
|
||||
; RV64ZFBFMIN: .attribute 5, "rv64i2p1_f2p2_zicsr2p0_zfbfmin1p0"
|
||||
; RV64ZVFBFA: .attribute 5, "rv64i2p1_f2p2_zicsr2p0_zfbfmin1p0_zve32f1p0_zve32x1p0_zvfbfa0p1_zvl32b1p0"
|
||||
|
||||
@ -27,6 +27,7 @@
|
||||
; CHECK-NEXT: experimental - Experimental intrinsics.
|
||||
; CHECK-NEXT: experimental-p - 'P' ('Base P' (Packed SIMD)).
|
||||
; CHECK-NEXT: experimental-rvm23u32 - RISC-V experimental-rvm23u32 profile.
|
||||
; CHECK-NEXT: experimental-smpmpmt - 'Smpmpmt' (PMP-based Memory Types Extension).
|
||||
; CHECK-NEXT: experimental-svukte - 'Svukte' (Address-Independent Latency of User-Mode Faults to Supervisor Addresses).
|
||||
; CHECK-NEXT: experimental-xqccmp - 'Xqccmp' (Qualcomm 16-bit Push/Pop and Double Moves).
|
||||
; CHECK-NEXT: experimental-xqcia - 'Xqcia' (Qualcomm uC Arithmetic Extension).
|
||||
|
||||
@ -348,6 +348,9 @@
|
||||
.attribute arch, "rv32i_smepmp1p0"
|
||||
# CHECK: attribute 5, "rv32i2p1_smepmp1p0"
|
||||
|
||||
.attribute arch, "rv32i_smpmpmt0p6"
|
||||
# CHECK: attribute 5, "rv32i2p1_smpmpmt0p6"
|
||||
|
||||
.attribute arch, "rv32i_smrnmi1p0"
|
||||
# CHECK: attribute 5, "rv32i2p1_smrnmi1p0"
|
||||
|
||||
|
||||
@ -1204,6 +1204,7 @@ Experimental extensions
|
||||
zvfofp8min 0.2
|
||||
zvkgs 0.7
|
||||
zvqdotq 0.0
|
||||
smpmpmt 0.6
|
||||
svukte 0.3
|
||||
xqccmp 0.3
|
||||
xqcia 0.7
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user