Author: Craig Topper Date: 2023-07-10T12:18:20-07:00 New Revision: a1b7db3e4ccc30b32fb918f7c6c3ff49233ac03d
URL: https://github.com/llvm/llvm-project/commit/a1b7db3e4ccc30b32fb918f7c6c3ff49233ac03d DIFF: https://github.com/llvm/llvm-project/commit/a1b7db3e4ccc30b32fb918f7c6c3ff49233ac03d.diff LOG: [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 https://github.com/riscv-non-isa/riscv-c-api-doc/pull/44. Reviewed By: asb Differential Revision: https://reviews.llvm.org/D154681 Added: Modified: clang/include/clang/Basic/BuiltinsRISCV.def clang/lib/CodeGen/CGBuiltin.cpp clang/test/CodeGen/RISCV/rvb-intrinsics/riscv32-zbkx.c clang/test/CodeGen/RISCV/rvb-intrinsics/riscv64-zbkx.c Removed: ################################################################################ diff --git a/clang/include/clang/Basic/BuiltinsRISCV.def b/clang/include/clang/Basic/BuiltinsRISCV.def index baae5e82bc59f4..5ea0b28e676910 100644 --- a/clang/include/clang/Basic/BuiltinsRISCV.def +++ b/clang/include/clang/Basic/BuiltinsRISCV.def @@ -29,8 +29,10 @@ TARGET_BUILTIN(__builtin_riscv_clmulh, "LiLiLi", "nc", "zbc|zbkc") TARGET_BUILTIN(__builtin_riscv_clmulr, "LiLiLi", "nc", "zbc") // Zbkx -TARGET_BUILTIN(__builtin_riscv_xperm4, "LiLiLi", "nc", "zbkx") -TARGET_BUILTIN(__builtin_riscv_xperm8, "LiLiLi", "nc", "zbkx") +TARGET_BUILTIN(__builtin_riscv_xperm4_32, "iii", "nc", "zbkx,32bit") +TARGET_BUILTIN(__builtin_riscv_xperm4_64, "WiWiWi", "nc", "zbkx,64bit") +TARGET_BUILTIN(__builtin_riscv_xperm8_32, "iii", "nc", "zbkx,32bit") +TARGET_BUILTIN(__builtin_riscv_xperm8_64, "WiWiWi", "nc", "zbkx,64bit") // Zbkb extension TARGET_BUILTIN(__builtin_riscv_brev8, "LiLi", "nc", "zbkb") diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 7ea166d0cf0ee6..97e031b9bb0618 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -20202,8 +20202,10 @@ Value *CodeGenFunction::EmitRISCVBuiltinExpr(unsigned BuiltinID, case RISCV::BI__builtin_riscv_clmul: case RISCV::BI__builtin_riscv_clmulh: case RISCV::BI__builtin_riscv_clmulr: - case RISCV::BI__builtin_riscv_xperm4: - case RISCV::BI__builtin_riscv_xperm8: + case RISCV::BI__builtin_riscv_xperm4_32: + case RISCV::BI__builtin_riscv_xperm4_64: + case RISCV::BI__builtin_riscv_xperm8_32: + case RISCV::BI__builtin_riscv_xperm8_64: case RISCV::BI__builtin_riscv_brev8: case RISCV::BI__builtin_riscv_zip_32: case RISCV::BI__builtin_riscv_unzip_32: { @@ -20245,10 +20247,12 @@ Value *CodeGenFunction::EmitRISCVBuiltinExpr(unsigned BuiltinID, break; // Zbkx - case RISCV::BI__builtin_riscv_xperm8: + case RISCV::BI__builtin_riscv_xperm8_32: + case RISCV::BI__builtin_riscv_xperm8_64: ID = Intrinsic::riscv_xperm8; break; - case RISCV::BI__builtin_riscv_xperm4: + case RISCV::BI__builtin_riscv_xperm4_32: + case RISCV::BI__builtin_riscv_xperm4_64: ID = Intrinsic::riscv_xperm4; break; diff --git a/clang/test/CodeGen/RISCV/rvb-intrinsics/riscv32-zbkx.c b/clang/test/CodeGen/RISCV/rvb-intrinsics/riscv32-zbkx.c index 9634433ac9b28a..dba6b524dc3453 100644 --- a/clang/test/CodeGen/RISCV/rvb-intrinsics/riscv32-zbkx.c +++ b/clang/test/CodeGen/RISCV/rvb-intrinsics/riscv32-zbkx.c @@ -13,9 +13,9 @@ // RV32ZBKX-NEXT: [[TMP2:%.*]] = call i32 @llvm.riscv.xperm8.i32(i32 [[TMP0]], i32 [[TMP1]]) // RV32ZBKX-NEXT: ret i32 [[TMP2]] // -long xperm8(long rs1, long rs2) +int xperm8(int rs1, int rs2) { - return __builtin_riscv_xperm8(rs1, rs2); + return __builtin_riscv_xperm8_32(rs1, rs2); } // RV32ZBKX-LABEL: @xperm4( @@ -29,7 +29,7 @@ long xperm8(long rs1, long rs2) // RV32ZBKX-NEXT: [[TMP2:%.*]] = call i32 @llvm.riscv.xperm4.i32(i32 [[TMP0]], i32 [[TMP1]]) // RV32ZBKX-NEXT: ret i32 [[TMP2]] // -long xperm4(long rs1, long rs2) +int xperm4(int rs1, int rs2) { - return __builtin_riscv_xperm4(rs1, rs2); + return __builtin_riscv_xperm4_32(rs1, rs2); } diff --git a/clang/test/CodeGen/RISCV/rvb-intrinsics/riscv64-zbkx.c b/clang/test/CodeGen/RISCV/rvb-intrinsics/riscv64-zbkx.c index 9accbaed2e31cf..95db024309c6a7 100644 --- a/clang/test/CodeGen/RISCV/rvb-intrinsics/riscv64-zbkx.c +++ b/clang/test/CodeGen/RISCV/rvb-intrinsics/riscv64-zbkx.c @@ -15,7 +15,7 @@ // long xperm8(long rs1, long rs2) { - return __builtin_riscv_xperm8(rs1, rs2); + return __builtin_riscv_xperm8_64(rs1, rs2); } // RV64ZBKX-LABEL: @xperm4( @@ -31,5 +31,5 @@ long xperm8(long rs1, long rs2) // long xperm4(long rs1, long rs2) { - return __builtin_riscv_xperm4(rs1, rs2); + return __builtin_riscv_xperm4_64(rs1, rs2); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits