Skip to content

Commit 61529d9

Browse files
authored
[RISCV] Remove implied extension Zvfhmin for XAndesVPackFPH (#146861)
XAndesVPackFPH can actually be used independently without requiring Zvfhmin. Therefore, we remove the implicitly required Zvfhmin extension from XAndesVPackFPH and imply that the f extension is sufficient.
1 parent 5b8304d commit 61529d9

File tree

13 files changed

+24
-16
lines changed

13 files changed

+24
-16
lines changed

clang/lib/Sema/SemaRISCV.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1435,9 +1435,15 @@ void SemaRISCV::checkRVVTypeSupport(QualType Ty, SourceLocation Loc, Decl *D,
14351435
!FeatureMap.lookup("zve64x"))
14361436
Diag(Loc, diag::err_riscv_type_requires_extension, D) << Ty << "zve64x";
14371437
else if (Info.ElementType->isFloat16Type() && !FeatureMap.lookup("zvfh") &&
1438-
!FeatureMap.lookup("zvfhmin"))
1439-
Diag(Loc, diag::err_riscv_type_requires_extension, D)
1440-
<< Ty << "zvfh or zvfhmin";
1438+
!FeatureMap.lookup("zvfhmin") &&
1439+
!FeatureMap.lookup("xandesvpackfph"))
1440+
if (DeclareAndesVectorBuiltins) {
1441+
Diag(Loc, diag::err_riscv_type_requires_extension, D)
1442+
<< Ty << "zvfh, zvfhmin or xandesvpackfph";
1443+
} else {
1444+
Diag(Loc, diag::err_riscv_type_requires_extension, D)
1445+
<< Ty << "zvfh or zvfhmin";
1446+
}
14411447
else if (Info.ElementType->isBFloat16Type() &&
14421448
!FeatureMap.lookup("zvfbfmin") &&
14431449
!FeatureMap.lookup("xandesvbfhcvt"))

clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/non-policy/non-overloaded/nds_vfpmadb.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
22
// REQUIRES: riscv-registered-target
33
// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x \
4-
// RUN: -target-feature +zvfhmin \
54
// RUN: -target-feature +xandesvpackfph -disable-O0-optnone \
65
// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
76
// RUN: FileCheck --check-prefix=CHECK-RV64 %s

clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/non-policy/non-overloaded/nds_vfpmadt.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
22
// REQUIRES: riscv-registered-target
33
// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x \
4-
// RUN: -target-feature +zvfhmin \
54
// RUN: -target-feature +xandesvpackfph -disable-O0-optnone \
65
// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
76
// RUN: FileCheck --check-prefix=CHECK-RV64 %s

clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/non-policy/overloaded/nds_vfpmadb.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
22
// REQUIRES: riscv-registered-target
33
// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x \
4-
// RUN: -target-feature +zvfhmin \
54
// RUN: -target-feature +xandesvpackfph -disable-O0-optnone \
65
// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
76
// RUN: FileCheck --check-prefix=CHECK-RV64 %s

clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/non-policy/overloaded/nds_vfpmadt.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
22
// REQUIRES: riscv-registered-target
33
// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x \
4-
// RUN: -target-feature +zvfhmin \
54
// RUN: -target-feature +xandesvpackfph -disable-O0-optnone \
65
// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
76
// RUN: FileCheck --check-prefix=CHECK-RV64 %s

clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/policy/non-overloaded/nds_vfpmadb.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
22
// REQUIRES: riscv-registered-target
33
// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x \
4-
// RUN: -target-feature +zvfhmin \
54
// RUN: -target-feature +xandesvpackfph -disable-O0-optnone \
65
// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
76
// RUN: FileCheck --check-prefix=CHECK-RV64 %s

clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/policy/non-overloaded/nds_vfpmadt.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
22
// REQUIRES: riscv-registered-target
33
// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x \
4-
// RUN: -target-feature +zvfhmin \
54
// RUN: -target-feature +xandesvpackfph -disable-O0-optnone \
65
// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
76
// RUN: FileCheck --check-prefix=CHECK-RV64 %s

clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/policy/overloaded/nds_vfpmadb.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
22
// REQUIRES: riscv-registered-target
33
// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x \
4-
// RUN: -target-feature +zvfhmin \
54
// RUN: -target-feature +xandesvpackfph -disable-O0-optnone \
65
// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
76
// RUN: FileCheck --check-prefix=CHECK-RV64 %s

clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/policy/overloaded/nds_vfpmadt.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
22
// REQUIRES: riscv-registered-target
33
// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x \
4-
// RUN: -target-feature +zvfhmin \
54
// RUN: -target-feature +xandesvpackfph -disable-O0-optnone \
65
// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
76
// RUN: FileCheck --check-prefix=CHECK-RV64 %s

clang/test/Sema/rvv-andes-required-features-invalid.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,12 @@ vfloat32mf2_t test_nds_vfwcvt_s_bf16_f32mf2(vbfloat16mf4_t vs2, size_t vl) {
99
// expected-error@-1 {{RISC-V type 'vbfloat16mf4_t' (aka '__rvv_bfloat16mf4_t') requires the 'zvfbfmin or xandesvbfhcvt' extension}}
1010
// expected-error@-2 {{builtin requires at least one of the following extensions: xandesvbfhcvt}}
1111
}
12+
13+
vfloat16mf4_t test_nds_vfpmadb_vf_f16mf4(vfloat16mf4_t op1, float op2, size_t vl) {
14+
// expected-error@-1 {{RISC-V type 'vfloat16mf4_t' (aka '__rvv_float16mf4_t') requires the 'zvfh, zvfhmin or xandesvpackfph' extension}}
15+
// expected-error@-2 {{RISC-V type 'vfloat16mf4_t' (aka '__rvv_float16mf4_t') requires the 'zvfh, zvfhmin or xandesvpackfph' extension}}
16+
return __riscv_nds_vfpmadb_vf_f16mf4(op1, op2, vl); // expected-error {{RISC-V type '__rvv_float16mf4_t' requires the 'zvfh, zvfhmin or xandesvpackfph' extension}}
17+
// expected-error@-1 {{RISC-V type '__rvv_float16mf4_t' requires the 'zvfh, zvfhmin or xandesvpackfph' extension}}
18+
// expected-error@-2 {{RISC-V type 'vfloat16mf4_t' (aka '__rvv_float16mf4_t') requires the 'zvfh, zvfhmin or xandesvpackfph' extension}}
19+
// expected-error@-3 {{builtin requires at least one of the following extensions: xandesvpackfph}}
20+
}

0 commit comments

Comments
 (0)