Skip to content

Commit a1b7db3

Browse files
committed
[RISCV] Split __builtin_riscv_xperm4/8 into separate _32 and _64 builtins.
Part of an effort to remove uses of 'long' to mean XLen from the builtin interfaces. Also makes the builtin names match riscv-non-isa/riscv-c-api-doc#44. Reviewed By: asb Differential Revision: https://reviews.llvm.org/D154681
1 parent a4f553f commit a1b7db3

File tree

4 files changed

+18
-12
lines changed

4 files changed

+18
-12
lines changed

clang/include/clang/Basic/BuiltinsRISCV.def

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@ TARGET_BUILTIN(__builtin_riscv_clmulh, "LiLiLi", "nc", "zbc|zbkc")
2929
TARGET_BUILTIN(__builtin_riscv_clmulr, "LiLiLi", "nc", "zbc")
3030

3131
// Zbkx
32-
TARGET_BUILTIN(__builtin_riscv_xperm4, "LiLiLi", "nc", "zbkx")
33-
TARGET_BUILTIN(__builtin_riscv_xperm8, "LiLiLi", "nc", "zbkx")
32+
TARGET_BUILTIN(__builtin_riscv_xperm4_32, "iii", "nc", "zbkx,32bit")
33+
TARGET_BUILTIN(__builtin_riscv_xperm4_64, "WiWiWi", "nc", "zbkx,64bit")
34+
TARGET_BUILTIN(__builtin_riscv_xperm8_32, "iii", "nc", "zbkx,32bit")
35+
TARGET_BUILTIN(__builtin_riscv_xperm8_64, "WiWiWi", "nc", "zbkx,64bit")
3436

3537
// Zbkb extension
3638
TARGET_BUILTIN(__builtin_riscv_brev8, "LiLi", "nc", "zbkb")

clang/lib/CodeGen/CGBuiltin.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20202,8 +20202,10 @@ Value *CodeGenFunction::EmitRISCVBuiltinExpr(unsigned BuiltinID,
2020220202
case RISCV::BI__builtin_riscv_clmul:
2020320203
case RISCV::BI__builtin_riscv_clmulh:
2020420204
case RISCV::BI__builtin_riscv_clmulr:
20205-
case RISCV::BI__builtin_riscv_xperm4:
20206-
case RISCV::BI__builtin_riscv_xperm8:
20205+
case RISCV::BI__builtin_riscv_xperm4_32:
20206+
case RISCV::BI__builtin_riscv_xperm4_64:
20207+
case RISCV::BI__builtin_riscv_xperm8_32:
20208+
case RISCV::BI__builtin_riscv_xperm8_64:
2020720209
case RISCV::BI__builtin_riscv_brev8:
2020820210
case RISCV::BI__builtin_riscv_zip_32:
2020920211
case RISCV::BI__builtin_riscv_unzip_32: {
@@ -20245,10 +20247,12 @@ Value *CodeGenFunction::EmitRISCVBuiltinExpr(unsigned BuiltinID,
2024520247
break;
2024620248

2024720249
// Zbkx
20248-
case RISCV::BI__builtin_riscv_xperm8:
20250+
case RISCV::BI__builtin_riscv_xperm8_32:
20251+
case RISCV::BI__builtin_riscv_xperm8_64:
2024920252
ID = Intrinsic::riscv_xperm8;
2025020253
break;
20251-
case RISCV::BI__builtin_riscv_xperm4:
20254+
case RISCV::BI__builtin_riscv_xperm4_32:
20255+
case RISCV::BI__builtin_riscv_xperm4_64:
2025220256
ID = Intrinsic::riscv_xperm4;
2025320257
break;
2025420258

clang/test/CodeGen/RISCV/rvb-intrinsics/riscv32-zbkx.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
// RV32ZBKX-NEXT: [[TMP2:%.*]] = call i32 @llvm.riscv.xperm8.i32(i32 [[TMP0]], i32 [[TMP1]])
1414
// RV32ZBKX-NEXT: ret i32 [[TMP2]]
1515
//
16-
long xperm8(long rs1, long rs2)
16+
int xperm8(int rs1, int rs2)
1717
{
18-
return __builtin_riscv_xperm8(rs1, rs2);
18+
return __builtin_riscv_xperm8_32(rs1, rs2);
1919
}
2020

2121
// RV32ZBKX-LABEL: @xperm4(
@@ -29,7 +29,7 @@ long xperm8(long rs1, long rs2)
2929
// RV32ZBKX-NEXT: [[TMP2:%.*]] = call i32 @llvm.riscv.xperm4.i32(i32 [[TMP0]], i32 [[TMP1]])
3030
// RV32ZBKX-NEXT: ret i32 [[TMP2]]
3131
//
32-
long xperm4(long rs1, long rs2)
32+
int xperm4(int rs1, int rs2)
3333
{
34-
return __builtin_riscv_xperm4(rs1, rs2);
34+
return __builtin_riscv_xperm4_32(rs1, rs2);
3535
}

clang/test/CodeGen/RISCV/rvb-intrinsics/riscv64-zbkx.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
//
1616
long xperm8(long rs1, long rs2)
1717
{
18-
return __builtin_riscv_xperm8(rs1, rs2);
18+
return __builtin_riscv_xperm8_64(rs1, rs2);
1919
}
2020

2121
// RV64ZBKX-LABEL: @xperm4(
@@ -31,5 +31,5 @@ long xperm8(long rs1, long rs2)
3131
//
3232
long xperm4(long rs1, long rs2)
3333
{
34-
return __builtin_riscv_xperm4(rs1, rs2);
34+
return __builtin_riscv_xperm4_64(rs1, rs2);
3535
}

0 commit comments

Comments
 (0)