Skip to content

Commit 9c3b354

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 4115204 commit 9c3b354

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
@@ -22364,18 +22364,13 @@ Value *CodeGenFunction::EmitRISCVBuiltinExpr(unsigned BuiltinID,
2236422364
case RISCV::BI__builtin_riscv_cv_alu_extbz:
2236522365
ID = Intrinsic::riscv_cv_alu_extbz;
2236622366
break;
22367-
case RISCV::BI__builtin_riscv_cv_alu_exths:
22368-
ID = Intrinsic::riscv_cv_alu_exths;
22369-
break;
22367+
case RISCV::BI__builtin_riscv_cv_alu_exths: {
22368+
return Builder.CreateSExt(Builder.CreateTrunc(Ops[0], Int16Ty), Int32Ty,
22369+
"exths");
22370+
}
2237022371
case RISCV::BI__builtin_riscv_cv_alu_exthz:
22371-
ID = Intrinsic::riscv_cv_alu_exthz;
22372-
break;
22373-
case RISCV::BI__builtin_riscv_cv_alu_maxu:
22374-
ID = Intrinsic::riscv_cv_alu_maxu;
22375-
break;
22376-
case RISCV::BI__builtin_riscv_cv_alu_minu:
22377-
ID = Intrinsic::riscv_cv_alu_minu;
22378-
break;
22372+
return Builder.CreateZExt(Builder.CreateTrunc(Ops[0], Int16Ty), Int32Ty,
22373+
"exthz");
2237922374
case RISCV::BI__builtin_riscv_cv_alu_slet:
2238022375
ID = Intrinsic::riscv_cv_alu_slet;
2238122376
break;
@@ -22397,7 +22392,8 @@ Value *CodeGenFunction::EmitRISCVBuiltinExpr(unsigned BuiltinID,
2239722392

2239822393
// Vector builtins are handled from here.
2239922394
#include "clang/Basic/riscv_vector_builtin_cg.inc"
22400-
// SiFive Vector builtins are handled from here.
22395+
22396+
// SiFive Vector builtins are handled from here.
2240122397
#include "clang/Basic/riscv_sifive_vector_builtin_cg.inc"
2240222398
}
2240322399

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)