Skip to content

Commit 3b66a5e

Browse files
committed
fix wrongly referenced min/max in riscv_corev_alu.h, generate c-api tests. Remove exths/exthz intrinsics by replacing them with trunc+extend
1 parent acc8cbd commit 3b66a5e

File tree

7 files changed

+364
-164
lines changed

7 files changed

+364
-164
lines changed

clang/include/clang/Basic/BuiltinsRISCVXCV.td

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ let Attributes = [NoThrow, Const] in {
2323
//===----------------------------------------------------------------------===//
2424
def alu_slet : RISCXCVBuiltin<"int(int, int)", "xcvalu">;
2525
def alu_sletu : RISCXCVBuiltin<"int(unsigned int, unsigned int)", "xcvalu">;
26-
def alu_minu : RISCXCVBuiltin<"unsigned int(unsigned int, unsigned int)", "xcvalu">;
27-
def alu_maxu : RISCXCVBuiltin<"unsigned int(unsigned int, unsigned int)", "xcvalu">;
2826
def alu_exths : RISCXCVBuiltin<"int(int)", "xcvalu">;
2927
def alu_exthz : RISCXCVBuiltin<"unsigned int(unsigned int)", "xcvalu">;
3028
def alu_extbs : RISCXCVBuiltin<"int(int)", "xcvalu">;

clang/lib/CodeGen/CGBuiltin.cpp

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22451,18 +22451,13 @@ Value *CodeGenFunction::EmitRISCVBuiltinExpr(unsigned BuiltinID,
2245122451
case RISCV::BI__builtin_riscv_cv_alu_extbz:
2245222452
ID = Intrinsic::riscv_cv_alu_extbz;
2245322453
break;
22454-
case RISCV::BI__builtin_riscv_cv_alu_exths:
22455-
ID = Intrinsic::riscv_cv_alu_exths;
22456-
break;
22454+
case RISCV::BI__builtin_riscv_cv_alu_exths: {
22455+
return Builder.CreateSExt(Builder.CreateTrunc(Ops[0], Int16Ty), Int32Ty,
22456+
"exths");
22457+
}
2245722458
case RISCV::BI__builtin_riscv_cv_alu_exthz:
22458-
ID = Intrinsic::riscv_cv_alu_exthz;
22459-
break;
22460-
case RISCV::BI__builtin_riscv_cv_alu_maxu:
22461-
ID = Intrinsic::riscv_cv_alu_maxu;
22462-
break;
22463-
case RISCV::BI__builtin_riscv_cv_alu_minu:
22464-
ID = Intrinsic::riscv_cv_alu_minu;
22465-
break;
22459+
return Builder.CreateZExt(Builder.CreateTrunc(Ops[0], Int16Ty), Int32Ty,
22460+
"exthz");
2246622461
case RISCV::BI__builtin_riscv_cv_alu_slet:
2246722462
ID = Intrinsic::riscv_cv_alu_slet;
2246822463
break;
@@ -22484,7 +22479,8 @@ Value *CodeGenFunction::EmitRISCVBuiltinExpr(unsigned BuiltinID,
2248422479

2248522480
// Vector builtins are handled from here.
2248622481
#include "clang/Basic/riscv_vector_builtin_cg.inc"
22487-
// SiFive Vector builtins are handled from here.
22482+
22483+
// SiFive Vector builtins are handled from here.
2248822484
#include "clang/Basic/riscv_sifive_vector_builtin_cg.inc"
2248922485
}
2249022486

clang/lib/Headers/riscv_corev_alu.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,21 @@ __riscv_cv_alu_sletu(unsigned long a, unsigned long b) {
3434
}
3535

3636
static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_min(long a, long b) {
37-
return min(a, b);
37+
return __builtin_elementwise_min(a, b);
3838
}
3939

4040
static __inline__ unsigned long __DEFAULT_FN_ATTRS
4141
__riscv_cv_alu_minu(unsigned long a, unsigned long b) {
42-
return __builtin_riscv_cv_alu_minu(a, b);
42+
return __builtin_elementwise_min(a, b);
4343
}
4444

4545
static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_max(long a, long b) {
46-
return max(a, b);
46+
return __builtin_elementwise_max(a, b);
4747
}
4848

4949
static __inline__ unsigned long __DEFAULT_FN_ATTRS
5050
__riscv_cv_alu_maxu(unsigned long a, unsigned long b) {
51-
return __builtin_riscv_cv_alu_maxu(a, b);
51+
return __builtin_elementwise_max(a, b);
5252
}
5353

5454
static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_exths(int16_t a) {

0 commit comments

Comments
 (0)