craig.topper created this revision. craig.topper added reviewers: asb, VincentWu, kito-cheng. Herald added subscribers: jobnoorman, luke, vkmr, frasercrmck, luismarques, apazos, sameer.abuasal, s.egerton, Jim, benna, psnobl, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, jrtc27, shiva0217, niosHD, sabuasal, simoncook, johnrusso, rbar, arichardson. Herald added a project: All. craig.topper requested review of this revision. Herald added subscribers: wangpc, eopXD, MaskRay. Herald added a project: clang.
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. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D154681 Files: 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 Index: clang/test/CodeGen/RISCV/rvb-intrinsics/riscv64-zbkx.c =================================================================== --- clang/test/CodeGen/RISCV/rvb-intrinsics/riscv64-zbkx.c +++ 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 xperm4(long rs1, long rs2) { - return __builtin_riscv_xperm4(rs1, rs2); + return __builtin_riscv_xperm4_64(rs1, rs2); } Index: clang/test/CodeGen/RISCV/rvb-intrinsics/riscv32-zbkx.c =================================================================== --- clang/test/CodeGen/RISCV/rvb-intrinsics/riscv32-zbkx.c +++ 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 @@ // 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); } Index: clang/lib/CodeGen/CGBuiltin.cpp =================================================================== --- clang/lib/CodeGen/CGBuiltin.cpp +++ clang/lib/CodeGen/CGBuiltin.cpp @@ -20162,8 +20162,10 @@ 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: { @@ -20205,10 +20207,12 @@ 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; Index: clang/include/clang/Basic/BuiltinsRISCV.def =================================================================== --- clang/include/clang/Basic/BuiltinsRISCV.def +++ clang/include/clang/Basic/BuiltinsRISCV.def @@ -29,8 +29,10 @@ 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")
Index: clang/test/CodeGen/RISCV/rvb-intrinsics/riscv64-zbkx.c =================================================================== --- clang/test/CodeGen/RISCV/rvb-intrinsics/riscv64-zbkx.c +++ 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 xperm4(long rs1, long rs2) { - return __builtin_riscv_xperm4(rs1, rs2); + return __builtin_riscv_xperm4_64(rs1, rs2); } Index: clang/test/CodeGen/RISCV/rvb-intrinsics/riscv32-zbkx.c =================================================================== --- clang/test/CodeGen/RISCV/rvb-intrinsics/riscv32-zbkx.c +++ 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 @@ // 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); } Index: clang/lib/CodeGen/CGBuiltin.cpp =================================================================== --- clang/lib/CodeGen/CGBuiltin.cpp +++ clang/lib/CodeGen/CGBuiltin.cpp @@ -20162,8 +20162,10 @@ 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: { @@ -20205,10 +20207,12 @@ 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; Index: clang/include/clang/Basic/BuiltinsRISCV.def =================================================================== --- clang/include/clang/Basic/BuiltinsRISCV.def +++ clang/include/clang/Basic/BuiltinsRISCV.def @@ -29,8 +29,10 @@ 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")
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits