Skip to content

Commit e149528

Browse files
authored
[RISCV] Use the 'B' extension in RISC-V profile definitions (#113942)
RVA22 has retroactively been defined as including 'B' (as it's a shorthand for Zba+Zbb+Zbs, which were previously explicitly enumerated) and RV{A,B,M}23 are defined featuring B. We don't currently infer B whenever Zba+Zbb+Zbs are present due to concerns about compatibility with external assemblers such as gas. We don't believe that adding B to RVA22 will cause issues for users who (for instance) build with clang and assemble with binutils as looking at the binutils commit history: zic64b support was only committed in 25f05199bb7e35820c23e802424484accb7936b1 in July 2024 B support was committed in c144f638337944101131d9fe6de4ab908f6d4c2d in May 2024 So given we emit zic64b anyway (as it has always been in the RVA22 spec), no binutils that would have previously successfully assembled our rva22u64 output should fail due to the addition of 'B'.
1 parent e4c1419 commit e149528

File tree

3 files changed

+18
-16
lines changed

3 files changed

+18
-16
lines changed

clang/test/Driver/riscv-profiles.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
// RVA22U64: "-target-feature" "+f"
5858
// RVA22U64: "-target-feature" "+d"
5959
// RVA22U64: "-target-feature" "+c"
60+
// RVA22U64: "-target-feature" "+b"
6061
// RVA22U64: "-target-feature" "+zic64b"
6162
// RVA22U64: "-target-feature" "+zicbom"
6263
// RVA22U64: "-target-feature" "+zicbop"
@@ -83,6 +84,7 @@
8384
// RVA22S64: "-target-feature" "+f"
8485
// RVA22S64: "-target-feature" "+d"
8586
// RVA22S64: "-target-feature" "+c"
87+
// RVA22S64: "-target-feature" "+b"
8688
// RVA22S64: "-target-feature" "+zic64b"
8789
// RVA22S64: "-target-feature" "+zicbom"
8890
// RVA22S64: "-target-feature" "+zicbop"
@@ -118,6 +120,7 @@
118120
// RVA23U64: "-target-feature" "+f"
119121
// RVA23U64: "-target-feature" "+d"
120122
// RVA23U64: "-target-feature" "+c"
123+
// RVA23U64: "-target-feature" "+b"
121124
// RVA23U64: "-target-feature" "+v"
122125
// RVA23U64: "-target-feature" "+zic64b"
123126
// RVA23U64: "-target-feature" "+zicbom"
@@ -156,6 +159,7 @@
156159
// RVA23S64: "-target-feature" "+f"
157160
// RVA23S64: "-target-feature" "+d"
158161
// RVA23S64: "-target-feature" "+c"
162+
// RVA23S64: "-target-feature" "+b"
159163
// RVA23S64: "-target-feature" "+v"
160164
// RVA23S64: "-target-feature" "+h"
161165
// RVA23S64: "-target-feature" "+zic64b"
@@ -217,6 +221,7 @@
217221
// RVB23U64: "-target-feature" "+f"
218222
// RVB23U64: "-target-feature" "+d"
219223
// RVB23U64: "-target-feature" "+c"
224+
// RVB23U64: "-target-feature" "+b"
220225
// RVB23U64: "-target-feature" "+zic64b"
221226
// RVB23U64: "-target-feature" "+zicbom"
222227
// RVB23U64: "-target-feature" "+zicbop"
@@ -249,6 +254,7 @@
249254
// RVB23S64: "-target-feature" "+f"
250255
// RVB23S64: "-target-feature" "+d"
251256
// RVB23S64: "-target-feature" "+c"
257+
// RVB23S64: "-target-feature" "+b"
252258
// RVB23S64: "-target-feature" "+zic64b"
253259
// RVB23S64: "-target-feature" "+zicbom"
254260
// RVB23S64: "-target-feature" "+zicbop"
@@ -290,6 +296,7 @@
290296
// RUN: %clang --target=riscv32 -### -c %s 2>&1 -march=rvm23u32 -menable-experimental-extensions \
291297
// RUN: | FileCheck -check-prefix=RVM23U32 %s
292298
// RVM23U32: "-target-feature" "+m"
299+
// RVM23U32: "-target-feature" "+b"
293300
// RVM23U32: "-target-feature" "+zicbop"
294301
// RVM23U32: "-target-feature" "+zicond"
295302
// RVM23U32: "-target-feature" "+zicsr"
@@ -309,6 +316,7 @@
309316
// PROFILE-WITH-ADDITIONAL: "-target-feature" "+f"
310317
// PROFILE-WITH-ADDITIONAL: "-target-feature" "+d"
311318
// PROFILE-WITH-ADDITIONAL: "-target-feature" "+c"
319+
// PROFILE-WITH-ADDITIONAL: "-target-feature" "+b"
312320
// PROFILE-WITH-ADDITIONAL: "-target-feature" "+zicbom"
313321
// PROFILE-WITH-ADDITIONAL: "-target-feature" "+zicbop"
314322
// PROFILE-WITH-ADDITIONAL: "-target-feature" "+zicboz"

llvm/lib/Target/RISCV/RISCVProfiles.td

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,7 @@ defvar RVA22U64Features = !listconcat(RVA20U64BaseFeatures,
4545
[FeatureStdExtZa64rs,
4646
FeatureStdExtZihpm,
4747
FeatureStdExtZihintpause,
48-
FeatureStdExtZba,
49-
FeatureStdExtZbb,
50-
FeatureStdExtZbs,
48+
FeatureStdExtB,
5149
FeatureStdExtZic64b,
5250
FeatureStdExtZicbom,
5351
FeatureStdExtZicbop,
@@ -92,9 +90,7 @@ defvar RVB23U64Features = !listconcat(RVA20U64BaseFeatures,
9290
[FeatureStdExtZihpm,
9391
FeatureStdExtZa64rs,
9492
FeatureStdExtZihintpause,
95-
FeatureStdExtZba,
96-
FeatureStdExtZbb,
97-
FeatureStdExtZbs,
93+
FeatureStdExtB,
9894
FeatureStdExtZic64b,
9995
FeatureStdExtZicbom,
10096
FeatureStdExtZicbop,
@@ -128,9 +124,7 @@ defvar RVB23S64Features = !listconcat(RVB23U64Features,
128124
defvar RVM23U32Features = [Feature32Bit,
129125
FeatureStdExtI,
130126
FeatureStdExtM,
131-
FeatureStdExtZba,
132-
FeatureStdExtZbb,
133-
FeatureStdExtZbs,
127+
FeatureStdExtB,
134128
FeatureStdExtZicond,
135129
FeatureStdExtZihintpause,
136130
FeatureStdExtZihintntl,

llvm/test/CodeGen/RISCV/attributes.ll

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -592,13 +592,13 @@
592592
; RVI20U64: .attribute 5, "rv64i2p1"
593593
; RVA20U64: .attribute 5, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicsr2p0_zmmul1p0_za128rs1p0"
594594
; RVA20S64: .attribute 5, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicsr2p0_zifencei2p0_zmmul1p0_za128rs1p0_ssccptr1p0_sstvala1p0_sstvecd1p0_svade1p0_svbare1p0"
595-
; RVA22U64: .attribute 5, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicsr2p0_zihintpause2p0_zihpm2p0_zmmul1p0_za64rs1p0_zfhmin1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0"
596-
; RVA22S64: .attribute 5, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicsr2p0_zifencei2p0_zihintpause2p0_zihpm2p0_zmmul1p0_za64rs1p0_zfhmin1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0_ssccptr1p0_sscounterenw1p0_sstvala1p0_sstvecd1p0_svade1p0_svbare1p0_svinval1p0_svpbmt1p0"
597-
; RVA23U64: .attribute 5, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_zmmul1p0_za64rs1p0_zawrs1p0_zfa1p0_zfhmin1p0_zca1p0_zcb1p0_zcmop1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0_zvbb1p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0_zvfhmin1p0_zvkb1p0_zvkt1p0_zvl128b1p0_zvl32b1p0_zvl64b1p0_supm1p0"
598-
; RVA23S64: .attribute 5, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_h1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_zmmul1p0_za64rs1p0_zawrs1p0_zfa1p0_zfhmin1p0_zca1p0_zcb1p0_zcmop1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0_zvbb1p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0_zvfhmin1p0_zvkb1p0_zvkt1p0_zvl128b1p0_zvl32b1p0_zvl64b1p0_sha1p0_shcounterenw1p0_shgatpa1p0_shtvala1p0_shvsatpa1p0_shvstvala1p0_shvstvecd1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_ssnpm1p0_ssstateen1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_supm1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0"
599-
; RVB23U64: .attribute 5, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_zmmul1p0_za64rs1p0_zawrs1p0_zfa1p0_zca1p0_zcb1p0_zcmop1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0"
600-
; RVB23S64: .attribute 5, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_zmmul1p0_za64rs1p0_zawrs1p0_zfa1p0_zca1p0_zcb1p0_zcmop1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0"
601-
; RVM23U32: .attribute 5, "rv32i2p1_m2p0_zicbop1p0_zicond1p0_zicsr2p0_zihintntl1p0_zihintpause2p0_zimop1p0_zmmul1p0_zca1p0_zcb1p0_zce1p0_zcmop1p0_zcmp1p0_zcmt1p0_zba1p0_zbb1p0_zbs1p0"
595+
; RVA22U64: .attribute 5, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicsr2p0_zihintpause2p0_zihpm2p0_zmmul1p0_za64rs1p0_zfhmin1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0"
596+
; RVA22S64: .attribute 5, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicsr2p0_zifencei2p0_zihintpause2p0_zihpm2p0_zmmul1p0_za64rs1p0_zfhmin1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0_ssccptr1p0_sscounterenw1p0_sstvala1p0_sstvecd1p0_svade1p0_svbare1p0_svinval1p0_svpbmt1p0"
597+
; RVA23U64: .attribute 5, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_zmmul1p0_za64rs1p0_zawrs1p0_zfa1p0_zfhmin1p0_zca1p0_zcb1p0_zcmop1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0_zvbb1p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0_zvfhmin1p0_zvkb1p0_zvkt1p0_zvl128b1p0_zvl32b1p0_zvl64b1p0_supm1p0"
598+
; RVA23S64: .attribute 5, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_h1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_zmmul1p0_za64rs1p0_zawrs1p0_zfa1p0_zfhmin1p0_zca1p0_zcb1p0_zcmop1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0_zvbb1p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0_zvfhmin1p0_zvkb1p0_zvkt1p0_zvl128b1p0_zvl32b1p0_zvl64b1p0_sha1p0_shcounterenw1p0_shgatpa1p0_shtvala1p0_shvsatpa1p0_shvstvala1p0_shvstvecd1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_ssnpm1p0_ssstateen1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_supm1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0"
599+
; RVB23U64: .attribute 5, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_zmmul1p0_za64rs1p0_zawrs1p0_zfa1p0_zca1p0_zcb1p0_zcmop1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0"
600+
; RVB23S64: .attribute 5, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_zmmul1p0_za64rs1p0_zawrs1p0_zfa1p0_zca1p0_zcb1p0_zcmop1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0"
601+
; RVM23U32: .attribute 5, "rv32i2p1_m2p0_b1p0_zicbop1p0_zicond1p0_zicsr2p0_zihintntl1p0_zihintpause2p0_zimop1p0_zmmul1p0_zca1p0_zcb1p0_zce1p0_zcmop1p0_zcmp1p0_zcmt1p0_zba1p0_zbb1p0_zbs1p0"
602602

603603
define i32 @addi(i32 %a) {
604604
%1 = add i32 %a, 1

0 commit comments

Comments
 (0)