Skip to content

Commit 93f8a74

Browse files
lukel97tclin914
authored andcommitted
[RISCV] Add support for new unprivileged extensions defined in profiles spec (llvm#77458)
This adds minimal support for 7 new unprivileged extensions that were defined as a part of the RISC-V Profiles specification here: https://github.com/riscv/riscv-profiles/blob/main/profiles.adoc#7-new-isa-extensions * Ziccif: Main memory supports instruction fetch with atomicity requirement * Ziccrse: Main memory supports forward progress on LR/SC sequences * Ziccamoa: Main memory supports all atomics in A * Zicclsm: Main memory supports misaligned loads/stores * Za64rs: Reservation set size of 64 bytes * Za128rs: Reservation set size of 128 bytes * Zic64b: Cache block size isf 64 bytes As stated in the specification, these extensions don't add any new features but describe existing features. So this patch only adds parsing and subtarget features.
1 parent 1eef497 commit 93f8a74

File tree

7 files changed

+146
-0
lines changed

7 files changed

+146
-0
lines changed

clang/test/Preprocessor/riscv-target-features.c

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
// CHECK-NOT: __riscv_b {{.*$}}
2222
// CHECK-NOT: __riscv_bitmanip {{.*$}}
2323
// CHECK-NOT: __riscv_zihintntl {{.*$}}
24+
// CHECK-NOT: __riscv_za128rs {{.*$}}
25+
// CHECK-NOT: __riscv_za64rs {{.*$}}
2426
// CHECK-NOT: __riscv_zba {{.*$}}
2527
// CHECK-NOT: __riscv_zbb {{.*$}}
2628
// CHECK-NOT: __riscv_zbc {{.*$}}
@@ -55,6 +57,11 @@
5557
// CHECK-NOT: __riscv_zcmp {{.*$}}
5658
// CHECK-NOT: __riscv_zcmt {{.*$}}
5759
// CHECK-NOT: __riscv_h {{.*$}}
60+
// CHECK-NOT: __riscv_zic64b {{.*$}}
61+
// CHECK-NOT: __riscv_ziccamoa {{.*$}}
62+
// CHECK-NOT: __riscv_ziccif {{.*$}}
63+
// CHECK-NOT: __riscv_zicclsm {{.*$}}
64+
// CHECK-NOT: __riscv_ziccrse {{.*$}}
5865
// CHECK-NOT: __riscv_zvbb {{.*$}}
5966
// CHECK-NOT: __riscv_zvbc {{.*$}}
6067
// CHECK-NOT: __riscv_zvkg {{.*$}}
@@ -276,6 +283,22 @@
276283
// CHECK-V-EXT: __riscv_v 1000000{{$}}
277284
// CHECK-V-EXT: __riscv_vector 1
278285

286+
// RUN: %clang --target=riscv32-unknown-linux-gnu \
287+
// RUN: -march=rv32iza128rs -x c -E -dM %s \
288+
// RUN: -o - | FileCheck --check-prefix=CHECK-ZA128RS-EXT %s
289+
// RUN: %clang --target=riscv64-unknown-linux-gnu \
290+
// RUN: -march=rv64iza128rs -x c -E -dM %s \
291+
// RUN: -o - | FileCheck --check-prefix=CHECK-ZA128RS-EXT %s
292+
// CHECK-ZA128RS-EXT: __riscv_za128rs 1000000{{$}}
293+
294+
// RUN: %clang --target=riscv32-unknown-linux-gnu \
295+
// RUN: -march=rv32iza64rs -x c -E -dM %s \
296+
// RUN: -o - | FileCheck --check-prefix=CHECK-ZA64RS-EXT %s
297+
// RUN: %clang --target=riscv64-unknown-linux-gnu \
298+
// RUN: -march=rv64iza64rs -x c -E -dM %s \
299+
// RUN: -o - | FileCheck --check-prefix=CHECK-ZA64RS-EXT %s
300+
// CHECK-ZA64RS-EXT: __riscv_za64rs 1000000{{$}}
301+
279302
// RUN: %clang -target riscv32-unknown-linux-gnu \
280303
// RUN: -march=rv32izfhmin1p0 -x c -E -dM %s \
281304
// RUN: -o - | FileCheck --check-prefix=CHECK-ZFHMIN-EXT %s
@@ -484,6 +507,14 @@
484507
// RUN: | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZKS %s
485508
// CHECK-COMBINE-INTO-ZKS: __riscv_zks 1
486509

510+
// RUN: %clang --target=riscv32-unknown-linux-gnu \
511+
// RUN: -march=rv32izic64b -x c -E -dM %s \
512+
// RUN: -o - | FileCheck --check-prefix=CHECK-ZIC64B-EXT %s
513+
// RUN: %clang --target=riscv64-unknown-linux-gnu \
514+
// RUN: -march=rv64izic64b -x c -E -dM %s \
515+
// RUN: -o - | FileCheck --check-prefix=CHECK-ZIC64B-EXT %s
516+
// CHECK-ZIC64B-EXT: __riscv_zic64b 1000000{{$}}
517+
487518
// RUN: %clang -target riscv32 -march=rv32izicbom -x c -E -dM %s \
488519
// RUN: -o - | FileCheck --check-prefix=CHECK-ZICBOM-EXT %s
489520
// RUN: %clang -target riscv64 -march=rv64izicbom -x c -E -dM %s \
@@ -502,6 +533,38 @@
502533
// RUN: -o - | FileCheck --check-prefix=CHECK-ZICBOP-EXT %s
503534
// CHECK-ZICBOP-EXT: __riscv_zicbop 1000000{{$}}
504535

536+
// RUN: %clang --target=riscv32-unknown-linux-gnu \
537+
// RUN: -march=rv32iziccamoa -x c -E -dM %s \
538+
// RUN: -o - | FileCheck --check-prefix=CHECK-ZICCAMOA-EXT %s
539+
// RUN: %clang --target=riscv64-unknown-linux-gnu \
540+
// RUN: -march=rv64iziccamoa -x c -E -dM %s \
541+
// RUN: -o - | FileCheck --check-prefix=CHECK-ZICCAMOA-EXT %s
542+
// CHECK-ZICCAMOA-EXT: __riscv_ziccamoa 1000000{{$}}
543+
544+
// RUN: %clang --target=riscv32-unknown-linux-gnu \
545+
// RUN: -march=rv32iziccif -x c -E -dM %s \
546+
// RUN: -o - | FileCheck --check-prefix=CHECK-ZICCIF-EXT %s
547+
// RUN: %clang --target=riscv64-unknown-linux-gnu \
548+
// RUN: -march=rv64iziccif -x c -E -dM %s \
549+
// RUN: -o - | FileCheck --check-prefix=CHECK-ZICCIF-EXT %s
550+
// CHECK-ZICCIF-EXT: __riscv_ziccif 1000000{{$}}
551+
552+
// RUN: %clang --target=riscv32-unknown-linux-gnu \
553+
// RUN: -march=rv32izicclsm -x c -E -dM %s \
554+
// RUN: -o - | FileCheck --check-prefix=CHECK-ZICCLSM-EXT %s
555+
// RUN: %clang --target=riscv64-unknown-linux-gnu \
556+
// RUN: -march=rv64izicclsm -x c -E -dM %s \
557+
// RUN: -o - | FileCheck --check-prefix=CHECK-ZICCLSM-EXT %s
558+
// CHECK-ZICCLSM-EXT: __riscv_zicclsm 1000000{{$}}
559+
560+
// RUN: %clang --target=riscv32-unknown-linux-gnu \
561+
// RUN: -march=rv32iziccrse -x c -E -dM %s \
562+
// RUN: -o - | FileCheck --check-prefix=CHECK-ZICCRSE-EXT %s
563+
// RUN: %clang --target=riscv64-unknown-linux-gnu \
564+
// RUN: -march=rv64iziccrse -x c -E -dM %s \
565+
// RUN: -o - | FileCheck --check-prefix=CHECK-ZICCRSE-EXT %s
566+
// CHECK-ZICCRSE-EXT: __riscv_ziccrse 1000000{{$}}
567+
505568
// RUN: %clang -target riscv32-unknown-linux-gnu \
506569
// RUN: -march=rv32izawrs -x c -E -dM %s \
507570
// RUN: -o - | FileCheck --check-prefix=CHECK-ZAWRS-EXT %s

llvm/docs/RISCVUsage.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ on support follow.
9797
``Svnapot`` Assembly Support
9898
``Svpbmt`` Supported
9999
``V`` Supported
100+
``Za128rs`` Supported (`See note <#riscv-profiles-extensions-note>`__)
101+
``Za64rs`` Supported (`See note <#riscv-profiles-extensions-note>`__)
100102
``Zawrs`` Assembly Support
101103
``Zba`` Supported
102104
``Zbb`` Supported
@@ -118,9 +120,14 @@ on support follow.
118120
``Zfinx`` Supported
119121
``Zhinx`` Supported
120122
``Zhinxmin`` Supported
123+
``Zic64b`` Supported (`See note <#riscv-profiles-extensions-note>`__)
121124
``Zicbom`` Assembly Support
122125
``Zicbop`` Assembly Support
123126
``Zicboz`` Assembly Support
127+
``Ziccamoa`` Supported (`See note <#riscv-profiles-extensions-note>`__)
128+
``Ziccif`` Supported (`See note <#riscv-profiles-extensions-note>`__)
129+
``Zicclsm`` Supported (`See note <#riscv-profiles-extensions-note>`__)
130+
``Ziccrse`` Supported (`See note <#riscv-profiles-extensions-note>`__)
124131
``Zicntr`` (`See Note <#riscv-i2p1-note>`__)
125132
``Zicsr`` (`See Note <#riscv-i2p1-note>`__)
126133
``Zifencei`` (`See Note <#riscv-i2p1-note>`__)
@@ -200,6 +207,11 @@ Supported
200207
``zicntr``, ``zicsr``, ``zifencei``, ``zihpm``
201208
Between versions 2.0 and 2.1 of the base I specification, a backwards incompatible change was made to remove selected instructions and CSRs from the base ISA. These instructions were grouped into a set of new extensions, but were no longer required by the base ISA. This change is partially described in "Preface to Document Version 20190608-Base-Ratified" from the specification document (the ``zicntr`` and ``zihpm`` bits are not mentioned). LLVM currently implements version 2.1 of the base specification. To maintain compatibility, instructions from these extensions are accepted without being in the ``-march`` string. LLVM also allows the explicit specification of the extensions in an ``-march`` string.
202209

210+
.. _riscv-profiles-extensions-note:
211+
212+
``Za128rs``, ``Za64rs``, ``Zic64b``, ``Ziccamoa``, ``Ziccif``, ``Zicclsm``, ``Ziccrse``
213+
These extensions are defined as part of the `RISC-V Profiles specification <https://github.com/riscv/riscv-profiles/releases/tag/v1.0>`_. They do not introduce any new features themselves, but instead describe existing hardware features.
214+
203215
Experimental Extensions
204216
=======================
205217

llvm/docs/ReleaseNotes.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,9 @@ Changes to the RISC-V Backend
343343
and is no longer experimental. However, the C intrinsics for these extensions
344344
are still experimental. To use the C intrinsics for these extensions,
345345
``-menable-experimental-extensions`` needs to be passed to Clang.
346+
* Support was added for the Ziccif, Ziccrse, Ziccamoa, Zicclsm, Za64rs, Za128rs
347+
and Zic64b extensions which were introduced as a part of the RISC-V Profiles
348+
specification.
346349

347350
Changes to the WebAssembly Backend
348351
----------------------------------

llvm/lib/Support/RISCVISAInfo.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ static const RISCVSupportedExtension SupportedExtensions[] = {
9494
{"xtheadvdot", RISCVExtensionVersion{1, 0}},
9595
{"xventanacondops", RISCVExtensionVersion{1, 0}},
9696

97+
{"za128rs", RISCVExtensionVersion{1, 0}},
98+
{"za64rs", RISCVExtensionVersion{1, 0}},
9799
{"zawrs", RISCVExtensionVersion{1, 0}},
98100

99101
{"zba", RISCVExtensionVersion{1, 0}},
@@ -123,9 +125,14 @@ static const RISCVSupportedExtension SupportedExtensions[] = {
123125
{"zhinx", RISCVExtensionVersion{1, 0}},
124126
{"zhinxmin", RISCVExtensionVersion{1, 0}},
125127

128+
{"zic64b", RISCVExtensionVersion{1, 0}},
126129
{"zicbom", RISCVExtensionVersion{1, 0}},
127130
{"zicbop", RISCVExtensionVersion{1, 0}},
128131
{"zicboz", RISCVExtensionVersion{1, 0}},
132+
{"ziccamoa", RISCVExtensionVersion{1, 0}},
133+
{"ziccif", RISCVExtensionVersion{1, 0}},
134+
{"zicclsm", RISCVExtensionVersion{1, 0}},
135+
{"ziccrse", RISCVExtensionVersion{1, 0}},
129136
{"zicntr", RISCVExtensionVersion{1, 0}},
130137
{"zicsr", RISCVExtensionVersion{2, 0}},
131138
{"zifencei", RISCVExtensionVersion{2, 0}},

llvm/lib/Target/RISCV/RISCVFeatures.td

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,22 @@ def HasStdExtZifencei : Predicate<"Subtarget->hasStdExtZifencei()">,
9393
AssemblerPredicate<(all_of FeatureStdExtZifencei),
9494
"'Zifencei' (fence.i)">;
9595

96+
def FeatureStdExtZiccamoa
97+
: SubtargetFeature<"ziccamoa", "HasStdExtZiccamoa", "true",
98+
"'Ziccamoa' (Main Memory Supports All Atomics in A)">;
99+
100+
def FeatureStdExtZiccif
101+
: SubtargetFeature<"ziccif", "HasStdExtZiccif", "true",
102+
"'Ziccif' (Main Memory Supports Instruction Fetch with Atomicity Requirement)">;
103+
104+
def FeatureStdExtZicclsm
105+
: SubtargetFeature<"zicclsm", "HasStdExtZicclsm", "true",
106+
"'Zicclsm' (Main Memory Supports Misaligned Loads/Stores)">;
107+
108+
def FeatureStdExtZiccrse
109+
: SubtargetFeature<"ziccrse", "HasStdExtZiccrse", "true",
110+
"'Ziccrse' (Main Memory Supports Forward Progress on LR/SC Sequences)">;
111+
96112
def FeatureStdExtZicntr
97113
: SubtargetFeature<"zicntr", "HasStdExtZicntr", "true",
98114
"'Zicntr' (Base Counters and Timers)",
@@ -557,6 +573,10 @@ def HasStdExtZfhOrZvfh
557573
"'Zfh' (Half-Precision Floating-Point) or "
558574
"'Zvfh' (Vector Half-Precision Floating-Point)">;
559575

576+
def FeatureStdExtZic64b
577+
: SubtargetFeature<"zic64b", "HasStdExtZic64b", "true",
578+
"'Zic64b' (Cache Block Size Is 64 Bytes)">;
579+
560580
def FeatureStdExtZicbom
561581
: SubtargetFeature<"zicbom", "HasStdExtZicbom", "true",
562582
"'Zicbom' (Cache-Block Management Instructions)">;
@@ -600,6 +620,12 @@ def HasStdExtZtso : Predicate<"Subtarget->hasStdExtZTso()">,
600620
AssemblerPredicate<(all_of FeatureStdExtZtso),
601621
"'Ztso' (Memory Model - Total Store Order)">;
602622

623+
def FeatureStdExtZa64rs : SubtargetFeature<"za64rs", "HasStdExtZa64rs", "true",
624+
"'Za64rs' (Reservation Set Size of at Most 64 Bytes)">;
625+
626+
def FeatureStdExtZa128rs : SubtargetFeature<"za128rs", "HasStdExtZa128rs", "true",
627+
"'Za128rs' (Reservation Set Size of at Most 128 Bytes)">;
628+
603629
def FeatureStdExtZawrs : SubtargetFeature<"zawrs", "HasStdExtZawrs", "true",
604630
"'Zawrs' (Wait on Reservation Set)">;
605631
def HasStdExtZawrs : Predicate<"Subtarget->hasStdExtZawrs()">,

llvm/test/CodeGen/RISCV/attributes.ll

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@
125125
; RUN: llc -mtriple=riscv64 -mattr=+zkn,+zkr,+zkt %s -o - | FileCheck --check-prefixes=CHECK,RV64COMBINEINTOZK %s
126126
; RUN: llc -mtriple=riscv64 -mattr=+zbkb,+zbkc,+zbkx,+zkne,+zknd,+zknh %s -o - | FileCheck --check-prefixes=CHECK,RV64COMBINEINTOZKN %s
127127
; RUN: llc -mtriple=riscv64 -mattr=+zbkb,+zbkc,+zbkx,+zksed,+zksh %s -o - | FileCheck --check-prefixes=CHECK,RV64COMBINEINTOZKS %s
128+
; RUN: llc -mtriple=riscv64 -mattr=+zic64b %s -o - | FileCheck --check-prefixes=CHECK,RV64ZIC64B %s
128129
; RUN: llc -mtriple=riscv64 -mattr=+zicbom %s -o - | FileCheck --check-prefixes=CHECK,RV64ZICBOM %s
129130
; RUN: llc -mtriple=riscv64 -mattr=+zicboz %s -o - | FileCheck --check-prefixes=CHECK,RV64ZICBOZ %s
130131
; RUN: llc -mtriple=riscv64 -mattr=+zicbop %s -o - | FileCheck --check-prefixes=CHECK,RV64ZICBOP %s
@@ -143,13 +144,19 @@
143144
; RUN: llc -mtriple=riscv64 -mattr=+xtheadmempair %s -o - | FileCheck --check-prefix=RV64XTHEADMEMPAIR %s
144145
; RUN: llc -mtriple=riscv64 -mattr=+xtheadsync %s -o - | FileCheck --check-prefix=RV64XTHEADSYNC %s
145146
; RUN: llc -mtriple=riscv64 -mattr=+xtheadvdot %s -o - | FileCheck --check-prefixes=CHECK,RV64XTHEADVDOT %s
147+
; RUN: llc -mtriple=riscv64 -mattr=+za64rs %s -o - | FileCheck --check-prefixes=CHECK,RV64ZA64RS %s
148+
; RUN: llc -mtriple=riscv64 -mattr=+za128rs %s -o - | FileCheck --check-prefixes=CHECK,RV64ZA128RS %s
146149
; RUN: llc -mtriple=riscv64 -mattr=+zawrs %s -o - | FileCheck --check-prefixes=CHECK,RV64ZAWRS %s
147150
; RUN: llc -mtriple=riscv64 -mattr=+experimental-ztso %s -o - | FileCheck --check-prefixes=CHECK,RV64ZTSO %s
148151
; RUN: llc -mtriple=riscv64 -mattr=+zca %s -o - | FileCheck --check-prefixes=CHECK,RV64ZCA %s
149152
; RUN: llc -mtriple=riscv64 -mattr=+zcb %s -o - | FileCheck --check-prefixes=CHECK,RV64ZCB %s
150153
; RUN: llc -mtriple=riscv64 -mattr=+zcd %s -o - | FileCheck --check-prefixes=CHECK,RV64ZCD %s
151154
; RUN: llc -mtriple=riscv64 -mattr=+zcmp %s -o - | FileCheck --check-prefixes=CHECK,RV64ZCMP %s
152155
; RUN: llc -mtriple=riscv64 -mattr=+zcmt %s -o - | FileCheck --check-prefixes=CHECK,RV64ZCMT %s
156+
; RUN: llc -mtriple=riscv64 -mattr=+ziccamoa %s -o - | FileCheck --check-prefixes=CHECK,RV64ZICCAMOA %s
157+
; RUN: llc -mtriple=riscv64 -mattr=+ziccif %s -o - | FileCheck --check-prefixes=CHECK,RV64ZICCIF %s
158+
; RUN: llc -mtriple=riscv64 -mattr=+zicclsm %s -o - | FileCheck --check-prefixes=CHECK,RV64ZICCLSM %s
159+
; RUN: llc -mtriple=riscv64 -mattr=+ziccrse %s -o - | FileCheck --check-prefixes=CHECK,RV64ZICCRSE %s
153160
; RUN: llc -mtriple=riscv64 -mattr=+zicsr %s -o - | FileCheck --check-prefixes=CHECK,RV64ZICSR %s
154161
; RUN: llc -mtriple=riscv64 -mattr=+zifencei %s -o - | FileCheck --check-prefixes=CHECK,RV64ZIFENCEI %s
155162
; RUN: llc -mtriple=riscv64 -mattr=+zicntr %s -o - | FileCheck --check-prefixes=CHECK,RV64ZICNTR %s
@@ -313,8 +320,11 @@
313320
; RV64COMBINEINTOZK: .attribute 5, "rv64i2p1_zbkb1p0_zbkc1p0_zbkx1p0_zk1p0_zkn1p0_zknd1p0_zkne1p0_zknh1p0_zkr1p0_zkt1p0"
314321
; RV64COMBINEINTOZKN: .attribute 5, "rv64i2p1_zbkb1p0_zbkc1p0_zbkx1p0_zkn1p0_zknd1p0_zkne1p0_zknh1p0"
315322
; RV64COMBINEINTOZKS: .attribute 5, "rv64i2p1_zbkb1p0_zbkc1p0_zbkx1p0_zks1p0_zksed1p0_zksh1p0"
323+
; RV64ZIC64B: .attribute 5, "rv64i2p1_zic64b1p0"
316324
; RV64ZICBOM: .attribute 5, "rv64i2p1_zicbom1p0"
317325
; RV64ZICBOZ: .attribute 5, "rv64i2p1_zicboz1p0"
326+
; RV64ZA64RS: .attribute 5, "rv64i2p1_za64rs1p0"
327+
; RV64ZA128RS: .attribute 5, "rv64i2p1_za128rs1p0"
318328
; RV64ZAWRS: .attribute 5, "rv64i2p1_zawrs1p0"
319329
; RV64ZICBOP: .attribute 5, "rv64i2p1_zicbop1p0"
320330
; RV64SVNAPOT: .attribute 5, "rv64i2p1_svnapot1p0"
@@ -338,6 +348,10 @@
338348
; RV64ZCD: .attribute 5, "rv64i2p1_f2p2_d2p2_zicsr2p0_zca1p0_zcd1p0"
339349
; RV64ZCMP: .attribute 5, "rv64i2p1_zca1p0_zcmp1p0"
340350
; RV64ZCMT: .attribute 5, "rv64i2p1_zicsr2p0_zca1p0_zcmt1p0"
351+
; RV64ZICCAMOA: .attribute 5, "rv64i2p1_ziccamoa1p0"
352+
; RV64ZICCIF: .attribute 5, "rv64i2p1_ziccif1p0"
353+
; RV64ZICCLSM: .attribute 5, "rv64i2p1_zicclsm1p0"
354+
; RV64ZICCRSE: .attribute 5, "rv64i2p1_ziccrse1p0"
341355
; RV64ZICSR: .attribute 5, "rv64i2p1_zicsr2p0"
342356
; RV64ZIFENCEI: .attribute 5, "rv64i2p1_zifencei2p0"
343357
; RV64ZICNTR: .attribute 5, "rv64i2p1_zicntr1p0_zicsr2p0"

llvm/test/MC/RISCV/attribute-arch.s

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@
9494
.attribute arch, "rv32ifdzve64d"
9595
# CHECK: attribute 5, "rv32i2p1_f2p2_d2p2_zicsr2p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0_zvl32b1p0_zvl64b1p0"
9696

97+
.attribute arch, "rv32izic64b"
98+
# CHECK: attribute 5, "rv32i2p1_zic64b1p0"
99+
97100
.attribute arch, "rv32izicbom"
98101
# CHECK: attribute 5, "rv32i2p1_zicbom1p0"
99102

@@ -103,6 +106,18 @@
103106
.attribute arch, "rv32izicbop"
104107
# CHECK: attribute 5, "rv32i2p1_zicbop1p0"
105108

109+
.attribute arch, "rv32iziccamoa"
110+
# CHECK: attribute 5, "rv32i2p1_ziccamoa1p0"
111+
112+
.attribute arch, "rv32iziccif"
113+
# CHECK: attribute 5, "rv32i2p1_ziccif1p0"
114+
115+
.attribute arch, "rv32izicclsm"
116+
# CHECK: attribute 5, "rv32i2p1_zicclsm1p0"
117+
118+
.attribute arch, "rv32iziccrse"
119+
# CHECK: attribute 5, "rv32i2p1_ziccrse1p0"
120+
106121
## Experimental extensions require version string to be explicitly specified
107122

108123
.attribute arch, "rv32izba1p0"
@@ -252,6 +267,12 @@
252267
.attribute arch, "rv64i_xsfvcp"
253268
# CHECK: attribute 5, "rv64i2p1_zicsr2p0_zve32x1p0_zvl32b1p0_xsfvcp1p0"
254269

270+
.attribute arch, "rv32iza128rs1p0"
271+
# CHECK: attribute 5, "rv32i2p1_za128rs1p0"
272+
273+
.attribute arch, "rv32iza64rs1p0"
274+
# CHECK: attribute 5, "rv32i2p1_za64rs1p0"
275+
255276
.attribute arch, "rv32izawrs1p0"
256277
# CHECK: attribute 5, "rv32i2p1_zawrs1p0"
257278

0 commit comments

Comments
 (0)