Skip to content

Commit 65dc96c

Browse files
authored
[RISCV] Fix wrong implication for zvknhb. (#66860)
1 parent 7c4180a commit 65dc96c

File tree

14 files changed

+80
-28
lines changed

14 files changed

+80
-28
lines changed

clang/include/clang/Basic/riscv_vector.td

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2588,8 +2588,15 @@ let UnMaskedPolicyScheme = HasPolicyOperand, HasMasked = false in {
25882588
defm vaesz : RVVOutBuiltinSetZvk<HasVV=0>;
25892589
}
25902590

2591-
// zvknha or zvknhb
2591+
// zvknha
25922592
let RequiredFeatures = ["Zvknha"] in {
2593+
defm vsha2ch : RVVOutOp2BuiltinSetVVZvk<"i">;
2594+
defm vsha2cl : RVVOutOp2BuiltinSetVVZvk<"i">;
2595+
defm vsha2ms : RVVOutOp2BuiltinSetVVZvk<"i">;
2596+
}
2597+
2598+
// zvknhb
2599+
let RequiredFeatures = ["Zvknhb"] in {
25932600
defm vsha2ch : RVVOutOp2BuiltinSetVVZvk<"il">;
25942601
defm vsha2cl : RVVOutOp2BuiltinSetVVZvk<"il">;
25952602
defm vsha2ms : RVVOutOp2BuiltinSetVVZvk<"il">;

clang/include/clang/Support/RISCVVIntrinsicUtils.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -493,8 +493,9 @@ enum RVVRequire : uint16_t {
493493
RVV_REQ_Zvkg = 1 << 8,
494494
RVV_REQ_Zvkned = 1 << 9,
495495
RVV_REQ_Zvknha = 1 << 10,
496-
RVV_REQ_Zvksed = 1 << 11,
497-
RVV_REQ_Zvksh = 1 << 12,
496+
RVV_REQ_Zvknhb = 1 << 11,
497+
RVV_REQ_Zvksed = 1 << 12,
498+
RVV_REQ_Zvksh = 1 << 13,
498499

499500
LLVM_MARK_AS_BITMASK_ENUM(RVV_REQ_Zvksh)
500501
};

clang/lib/Sema/SemaRISCVVectorLookup.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ void RISCVIntrinsicManagerImpl::ConstructRVVIntrinsics(
213213
{"experimental-zvkg", RVV_REQ_Zvkg},
214214
{"experimental-zvkned", RVV_REQ_Zvkned},
215215
{"experimental-zvknha", RVV_REQ_Zvknha},
216+
{"experimental-zvknhb", RVV_REQ_Zvknhb},
216217
{"experimental-zvksed", RVV_REQ_Zvksed},
217218
{"experimental-zvksh", RVV_REQ_Zvksh}};
218219

clang/test/Sema/zvk-invalid-zvknha.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// REQUIRES: riscv-registered-target
2+
// RUN: %clang_cc1 -triple riscv64 -target-feature +v -target-feature +experimental-zvknha %s -fsyntax-only -verify
3+
4+
#include <riscv_vector.h>
5+
6+
void test_zvk_features() {
7+
// zvknhb
8+
__riscv_vsha2ch_vv_u64m1(); // expected-error {{call to undeclared function '__riscv_vsha2ch_vv_u64m1'; ISO C99 and later do not support implicit function declarations}}
9+
__riscv_vsha2cl_vv_u64m1(); // expected-error {{call to undeclared function '__riscv_vsha2cl_vv_u64m1'; ISO C99 and later do not support implicit function declarations}}
10+
__riscv_vsha2ms_vv_u64m1(); // expected-error {{call to undeclared function '__riscv_vsha2ms_vv_u64m1'; ISO C99 and later do not support implicit function declarations}}
11+
}

clang/utils/TableGen/RISCVVEmitter.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,7 @@ void RVVEmitter::createRVVIntrinsics(
664664
.Case("Zvkg", RVV_REQ_Zvkg)
665665
.Case("Zvkned", RVV_REQ_Zvkned)
666666
.Case("Zvknha", RVV_REQ_Zvknha)
667+
.Case("Zvknhb", RVV_REQ_Zvknhb)
667668
.Case("Zvksed", RVV_REQ_Zvksed)
668669
.Case("Zvksh", RVV_REQ_Zvksh)
669670
.Default(RVV_REQ_None);

llvm/lib/Support/RISCVISAInfo.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1029,7 +1029,7 @@ static const char *ImpliedExtsZvfhmin[] = {"zve32f"};
10291029
static const char *ImpliedExtsZvkn[] = {"zvkb", "zvkned", "zvknhb", "zvkt"};
10301030
static const char *ImpliedExtsZvknc[] = {"zvbc", "zvkn"};
10311031
static const char *ImpliedExtsZvkng[] = {"zvkg", "zvkn"};
1032-
static const char *ImpliedExtsZvknhb[] = {"zvknha"};
1032+
static const char *ImpliedExtsZvknhb[] = {"zve64x"};
10331033
static const char *ImpliedExtsZvks[] = {"zvkb", "zvksed", "zvksh", "zvkt"};
10341034
static const char *ImpliedExtsZvksc[] = {"zvbc", "zvks"};
10351035
static const char *ImpliedExtsZvksg[] = {"zvkg", "zvks"};

llvm/lib/Target/RISCV/RISCVFeatures.td

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -599,14 +599,21 @@ def HasStdExtZvkned : Predicate<"Subtarget->hasStdExtZvkned()">,
599599
def FeatureStdExtZvknha
600600
: SubtargetFeature<"experimental-zvknha", "HasStdExtZvknha", "true",
601601
"'Zvknha' (Vector SHA-2 (SHA-256 only))">;
602+
def HasStdExtZvknha : Predicate<"Subtarget->hasStdExtZvknha()">,
603+
AssemblerPredicate<(all_of FeatureStdExtZvknha),
604+
"'Zvknha' (Vector SHA-2 (SHA-256 only))">;
602605

603606
def FeatureStdExtZvknhb
604607
: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true",
605608
"'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))",
606-
[FeatureStdExtZvknha]>;
607-
def HasStdExtZvknha : Predicate<"Subtarget->hasStdExtZvknha()">,
608-
AssemblerPredicate<(all_of FeatureStdExtZvknha),
609-
"'Zvknha' (Vector SHA-2 (SHA-256 only))">;
609+
[FeatureStdExtZve64x]>;
610+
def HasStdExtZvknhb : Predicate<"Subtarget->hasStdExtZvknhb()">,
611+
AssemblerPredicate<(all_of FeatureStdExtZvknhb),
612+
"'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))">;
613+
614+
def HasStdExtZvknhaOrZvknhb : Predicate<"Subtarget->hasStdExtZvknha() || Subtarget->hasStdExtZvknhb()">,
615+
AssemblerPredicate<(any_of FeatureStdExtZvknha, FeatureStdExtZvknhb),
616+
"'Zvknha' or 'Zvknhb' (Vector SHA-2)">;
610617

611618
def FeatureStdExtZvksed
612619
: SubtargetFeature<"experimental-zvksed", "HasStdExtZvksed", "true",

llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,11 @@ let Predicates = [HasStdExtZvkg], RVVConstraint = NoConstraint in {
136136
def VGMUL_VV : PALUVs2NoVm<0b101000, 0b10001, OPMVV, "vgmul.vv">;
137137
} // Predicates = [HasStdExtZvkg]
138138

139-
let Predicates = [HasStdExtZvknha], RVVConstraint = NoConstraint in {
139+
let Predicates = [HasStdExtZvknhaOrZvknhb], RVVConstraint = NoConstraint in {
140140
def VSHA2CH_VV : PALUVVNoVm<0b101110, OPMVV, "vsha2ch.vv">;
141141
def VSHA2CL_VV : PALUVVNoVm<0b101111, OPMVV, "vsha2cl.vv">;
142142
def VSHA2MS_VV : PALUVVNoVm<0b101101, OPMVV, "vsha2ms.vv">;
143-
} // Predicates = [HasStdExtZvknha]
143+
} // Predicates = [HasStdExtZvknhaOrZvknhb]
144144

145145
let Predicates = [HasStdExtZvkned], RVVConstraint = NoConstraint in {
146146
defm VAESDF : VAES_MV_V_S<0b101000, 0b101001, 0b00001, OPMVV, "vaesdf">;
@@ -390,11 +390,11 @@ let Predicates = [HasStdExtZvkned] in {
390390
defm PseudoVAESZ : VPseudoVALU_S_NoMask_Zvk;
391391
} // Predicates = [HasStdExtZvkned]
392392

393-
let Predicates = [HasStdExtZvknha] in {
393+
let Predicates = [HasStdExtZvknhaOrZvknhb] in {
394394
defm PseudoVSHA2CH : VPseudoVALU_VV_NoMask_Zvk;
395395
defm PseudoVSHA2CL : VPseudoVALU_VV_NoMask_Zvk;
396396
defm PseudoVSHA2MS : VPseudoVALU_VV_NoMask_Zvk;
397-
} // Predicates = [HasStdExtZvknha]
397+
} // Predicates = [HasStdExtZvknhaOrZvknhb]
398398

399399
let Predicates = [HasStdExtZvksed] in {
400400
defm PseudoVSM4K : VPseudoVALU_VI_NoMaskTU_Zvk;
@@ -903,10 +903,16 @@ let Predicates = [HasStdExtZvkned] in {
903903
} // Predicates = [HasStdExtZvkned]
904904

905905
let Predicates = [HasStdExtZvknha] in {
906+
defm : VPatBinaryV_VV_NoMask<"int_riscv_vsha2ch", "PseudoVSHA2CH", I32IntegerVectors>;
907+
defm : VPatBinaryV_VV_NoMask<"int_riscv_vsha2cl", "PseudoVSHA2CH", I32IntegerVectors>;
908+
defm : VPatBinaryV_VV_NoMask<"int_riscv_vsha2ms", "PseudoVSHA2MS", I32IntegerVectors>;
909+
} // Predicates = [HasStdExtZvknha]
910+
911+
let Predicates = [HasStdExtZvknhb] in {
906912
defm : VPatBinaryV_VV_NoMask<"int_riscv_vsha2ch", "PseudoVSHA2CH", I32I64IntegerVectors>;
907913
defm : VPatBinaryV_VV_NoMask<"int_riscv_vsha2cl", "PseudoVSHA2CH", I32I64IntegerVectors>;
908914
defm : VPatBinaryV_VV_NoMask<"int_riscv_vsha2ms", "PseudoVSHA2MS", I32I64IntegerVectors>;
909-
} // Predicates = [HasStdExtZvknha]
915+
} // Predicates = [HasStdExtZvknhb]
910916

911917
let Predicates = [HasStdExtZvksed] in {
912918
defm : VPatBinaryV_VI_NoMaskTU<"int_riscv_vsm4k", "PseudoVSM4K", I32IntegerVectors>;

llvm/test/CodeGen/RISCV/attributes.ll

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -248,12 +248,12 @@
248248
; RV32ZVBC: .attribute 5, "rv32i2p1_zicsr2p0_zvbc1p0_zve32x1p0_zve64x1p0_zvl32b1p0_zvl64b1p0"
249249
; RV32ZVKB: .attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zvkb1p0_zvl32b1p0"
250250
; RV32ZVKG: .attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zvkg1p0_zvl32b1p0"
251-
; RV32ZVKN: .attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvkb1p0_zvkn1p0_zvkned1p0_zvknha1p0_zvknhb1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
252-
; RV32ZVKNC: .attribute 5, "rv32i2p1_zicsr2p0_zvbc1p0_zve32x1p0_zve64x1p0_zvkb1p0_zvkn1p0_zvknc1p0_zvkned1p0_zvknha1p0_zvknhb1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
251+
; RV32ZVKN: .attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvkb1p0_zvkn1p0_zvkned1p0_zvknhb1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
252+
; RV32ZVKNC: .attribute 5, "rv32i2p1_zicsr2p0_zvbc1p0_zve32x1p0_zve64x1p0_zvkb1p0_zvkn1p0_zvknc1p0_zvkned1p0_zvknhb1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
253253
; RV32ZVKNED: .attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zvkned1p0_zvl32b1p0"
254-
; RV32ZVKNG: .attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvkb1p0_zvkg1p0_zvkn1p0_zvkned1p0_zvkng1p0_zvknha1p0_zvknhb1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
254+
; RV32ZVKNG: .attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvkb1p0_zvkg1p0_zvkn1p0_zvkned1p0_zvkng1p0_zvknhb1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
255255
; RV32ZVKNHA: .attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zvknha1p0_zvl32b1p0"
256-
; RV32ZVKNHB: .attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvknha1p0_zvknhb1p0_zvl32b1p0_zvl64b1p0"
256+
; RV32ZVKNHB: .attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvknhb1p0_zvl32b1p0_zvl64b1p0"
257257
; RV32ZVKS: .attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvkb1p0_zvks1p0_zvksed1p0_zvksh1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
258258
; RV32ZVKSC: .attribute 5, "rv32i2p1_zicsr2p0_zvbc1p0_zve32x1p0_zve64x1p0_zvkb1p0_zvks1p0_zvksc1p0_zvksed1p0_zvksh1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
259259
; RV32ZVKSED: .attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zvksed1p0_zvl32b1p0"
@@ -337,12 +337,12 @@
337337
; RV64ZVBC: .attribute 5, "rv64i2p1_zicsr2p0_zvbc1p0_zve32x1p0_zve64x1p0_zvl32b1p0_zvl64b1p0"
338338
; RV64ZVKB: .attribute 5, "rv64i2p1_zicsr2p0_zve32x1p0_zvkb1p0_zvl32b1p0"
339339
; RV64ZVKG: .attribute 5, "rv64i2p1_zicsr2p0_zve32x1p0_zvkg1p0_zvl32b1p0"
340-
; RV64ZVKN: .attribute 5, "rv64i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvkb1p0_zvkn1p0_zvkned1p0_zvknha1p0_zvknhb1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
341-
; RV64ZVKNC: .attribute 5, "rv64i2p1_zicsr2p0_zvbc1p0_zve32x1p0_zve64x1p0_zvkb1p0_zvkn1p0_zvknc1p0_zvkned1p0_zvknha1p0_zvknhb1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
340+
; RV64ZVKN: .attribute 5, "rv64i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvkb1p0_zvkn1p0_zvkned1p0_zvknhb1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
341+
; RV64ZVKNC: .attribute 5, "rv64i2p1_zicsr2p0_zvbc1p0_zve32x1p0_zve64x1p0_zvkb1p0_zvkn1p0_zvknc1p0_zvkned1p0_zvknhb1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
342342
; RV64ZVKNED: .attribute 5, "rv64i2p1_zicsr2p0_zve32x1p0_zvkned1p0_zvl32b1p0"
343-
; RV64ZVKNG: .attribute 5, "rv64i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvkb1p0_zvkg1p0_zvkn1p0_zvkned1p0_zvkng1p0_zvknha1p0_zvknhb1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
343+
; RV64ZVKNG: .attribute 5, "rv64i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvkb1p0_zvkg1p0_zvkn1p0_zvkned1p0_zvkng1p0_zvknhb1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
344344
; RV64ZVKNHA: .attribute 5, "rv64i2p1_zicsr2p0_zve32x1p0_zvknha1p0_zvl32b1p0"
345-
; RV64ZVKNHB: .attribute 5, "rv64i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvknha1p0_zvknhb1p0_zvl32b1p0_zvl64b1p0"
345+
; RV64ZVKNHB: .attribute 5, "rv64i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvknhb1p0_zvl32b1p0_zvl64b1p0"
346346
; RV64ZVKS: .attribute 5, "rv64i2p1_zicsr2p0_zve32x1p0_zvkb1p0_zvks1p0_zvksed1p0_zvksh1p0_zvkt1p0_zvl32b1p0"
347347
; RV64ZVKSC: .attribute 5, "rv64i2p1_zicsr2p0_zvbc1p0_zve32x1p0_zve64x1p0_zvkb1p0_zvks1p0_zvksc1p0_zvksed1p0_zvksh1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
348348
; RV64ZVKSED: .attribute 5, "rv64i2p1_zicsr2p0_zve32x1p0_zvksed1p0_zvl32b1p0"

llvm/test/CodeGen/RISCV/rvv/vsha2ch.ll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@
33
; RUN: -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK
44
; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+experimental-zvknhb \
55
; RUN: -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK
6+
; RUN: sed 's/iXLen/i32/g' %s | not --crash llc -mtriple=riscv32 -mattr=+v,+experimental-zvknha 2>&1 \
7+
; RUN: | FileCheck --check-prefixes=CHECK-ERROR %s
8+
; RUN: sed 's/iXLen/i64/g' %s | not --crash llc -mtriple=riscv64 -mattr=+v,+experimental-zvknha 2>&1 \
9+
; RUN: | FileCheck --check-prefixes=CHECK-ERROR %s
10+
11+
; CHECK-ERROR: LLVM ERROR: SEW=64 needs Zvknhb to be enabled.
612

713
declare <vscale x 4 x i32> @llvm.riscv.vsha2ch.nxv4i32.nxv4i32(
814
<vscale x 4 x i32>,

llvm/test/CodeGen/RISCV/rvv/vsha2cl.ll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@
33
; RUN: -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK
44
; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+experimental-zvknhb \
55
; RUN: -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK
6+
; RUN: sed 's/iXLen/i32/g' %s | not --crash llc -mtriple=riscv32 -mattr=+v,+experimental-zvknha 2>&1 \
7+
; RUN: | FileCheck --check-prefixes=CHECK-ERROR %s
8+
; RUN: sed 's/iXLen/i64/g' %s | not --crash llc -mtriple=riscv64 -mattr=+v,+experimental-zvknha 2>&1 \
9+
; RUN: | FileCheck --check-prefixes=CHECK-ERROR %s
10+
11+
; CHECK-ERROR: LLVM ERROR: SEW=64 needs Zvknhb to be enabled.
612

713
declare <vscale x 4 x i32> @llvm.riscv.vsha2cl.nxv4i32.nxv4i32(
814
<vscale x 4 x i32>,

llvm/test/CodeGen/RISCV/rvv/vsha2ms.ll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@
33
; RUN: -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK
44
; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+experimental-zvknha,+experimental-zvknhb \
55
; RUN: -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK
6+
; RUN: sed 's/iXLen/i32/g' %s | not --crash llc -mtriple=riscv32 -mattr=+v,+experimental-zvknha 2>&1 \
7+
; RUN: | FileCheck --check-prefixes=CHECK-ERROR %s
8+
; RUN: sed 's/iXLen/i64/g' %s | not --crash llc -mtriple=riscv64 -mattr=+v,+experimental-zvknha 2>&1 \
9+
; RUN: | FileCheck --check-prefixes=CHECK-ERROR %s
10+
11+
; CHECK-ERROR: LLVM ERROR: SEW=64 needs Zvknhb to be enabled.
612

713
declare <vscale x 4 x i32> @llvm.riscv.vsha2ms.nxv4i32.nxv4i32(
814
<vscale x 4 x i32>,

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,19 +124,19 @@
124124
# CHECK: attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zvkg1p0_zvl32b1p0"
125125

126126
.attribute arch, "rv32i_zve64x_zvkn1p0"
127-
# CHECK: attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvkb1p0_zvkn1p0_zvkned1p0_zvknha1p0_zvknhb1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
127+
# CHECK: attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvkb1p0_zvkn1p0_zvkned1p0_zvknhb1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
128128

129129
.attribute arch, "rv32i_zve64x_zvknc1p0"
130-
# CHECK: attribute 5, "rv32i2p1_zicsr2p0_zvbc1p0_zve32x1p0_zve64x1p0_zvkb1p0_zvkn1p0_zvknc1p0_zvkned1p0_zvknha1p0_zvknhb1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
130+
# CHECK: attribute 5, "rv32i2p1_zicsr2p0_zvbc1p0_zve32x1p0_zve64x1p0_zvkb1p0_zvkn1p0_zvknc1p0_zvkned1p0_zvknhb1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
131131

132132
.attribute arch, "rv32i_zve64x_zvkng1p0"
133-
# CHECK: attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvkb1p0_zvkg1p0_zvkn1p0_zvkned1p0_zvkng1p0_zvknha1p0_zvknhb1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
133+
# CHECK: attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvkb1p0_zvkg1p0_zvkn1p0_zvkned1p0_zvkng1p0_zvknhb1p0_zvkt1p0_zvl32b1p0_zvl64b1p0"
134134

135135
.attribute arch, "rv32i_zve32x_zvknha1p0"
136136
# CHECK: attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zvknha1p0_zvl32b1p0"
137137

138138
.attribute arch, "rv32i_zve64x_zvknhb1p0"
139-
# CHECK: attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvknha1p0_zvknhb1p0_zvl32b1p0_zvl64b1p0"
139+
# CHECK: attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zve64x1p0_zvknhb1p0_zvl32b1p0_zvl64b1p0"
140140

141141
.attribute arch, "rv32i_zve32x_zvkned1p0"
142142
# CHECK: attribute 5, "rv32i2p1_zicsr2p0_zve32x1p0_zvkned1p0_zvl32b1p0"

llvm/test/MC/RISCV/rvv/zvknh.s

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@ vsha2ms.vv v10, v9, v8
1919
# CHECK-INST: vsha2ms.vv v10, v9, v8
2020
# CHECK-ENCODING: [0x77,0x25,0x94,0xb6]
2121
# CHECK-UNKNOWN: 77 25 94 b6 <unknown>
22-
# CHECK-ERROR: instruction requires the following: 'Zvknha' (Vector SHA-2 (SHA-256 only)){{$}}
22+
# CHECK-ERROR: instruction requires the following: 'Zvknha' or 'Zvknhb' (Vector SHA-2){{$}}
2323

2424
vsha2ch.vv v10, v9, v8
2525
# CHECK-INST: vsha2ch.vv v10, v9, v8
2626
# CHECK-ENCODING: [0x77,0x25,0x94,0xba]
2727
# CHECK-UNKNOWN: 77 25 94 ba <unknown>
28-
# CHECK-ERROR: instruction requires the following: 'Zvknha' (Vector SHA-2 (SHA-256 only)){{$}}
28+
# CHECK-ERROR: instruction requires the following: 'Zvknha' or 'Zvknhb' (Vector SHA-2){{$}}
2929

3030
vsha2cl.vv v10, v9, v8
3131
# CHECK-INST: vsha2cl.vv v10, v9, v8
3232
# CHECK-ENCODING: [0x77,0x25,0x94,0xbe]
3333
# CHECK-UNKNOWN: 77 25 94 be <unknown>
34-
# CHECK-ERROR: instruction requires the following: 'Zvknha' (Vector SHA-2 (SHA-256 only)){{$}}
34+
# CHECK-ERROR: instruction requires the following: 'Zvknha' or 'Zvknhb' (Vector SHA-2){{$}}

0 commit comments

Comments
 (0)