joker881 created this revision. Herald added subscribers: sunshaoce, VincentWu, luke957, vkmr, frasercrmck, evandro, luismarques, apazos, sameer.abuasal, s.egerton, Jim, benna, psnobl, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, jrtc27, kito-cheng, niosHD, sabuasal, simoncook, johnrusso, rbar, asb, arichardson. Herald added a project: All. joker881 requested review of this revision. Herald added subscribers: llvm-commits, cfe-commits, pcwang-thead, eopXD, MaskRay. Herald added projects: clang, LLVM.
Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D124348 Files: clang/include/clang/Basic/BuiltinsRISCV.def clang/lib/CodeGen/CGBuiltin.cpp llvm/include/llvm/IR/IntrinsicsRISCV.td
Index: llvm/include/llvm/IR/IntrinsicsRISCV.td =================================================================== --- llvm/include/llvm/IR/IntrinsicsRISCV.td +++ llvm/include/llvm/IR/IntrinsicsRISCV.td @@ -87,6 +87,14 @@ // Zbb def int_riscv_orc_b : BitManipGPRIntrinsics; + def int_riscv_andn : BitManipGPRGPRGRIntrinsics; + def int_riscv_clzw : BitManipGPRIntrinsics; + def int_riscv_cpop : BitManipGPRIntrinsics; + def int_riscv_cpopw : BitManipGPRIntrinsics; + def int_riscv_ctz : BitManipGPRIntrinsics; + def int_riscv_max : BitManipGPRGPRIntrinsics; + def int_riscv_maxu : BitManipGPRGPRIntrinsics; + def int_riscv_orn : BitManipGPRGPRIntrinsics; // Zbc or Zbkc def int_riscv_clmul : BitManipGPRGPRIntrinsics; Index: clang/lib/CodeGen/CGBuiltin.cpp =================================================================== --- clang/lib/CodeGen/CGBuiltin.cpp +++ clang/lib/CodeGen/CGBuiltin.cpp @@ -18994,6 +18994,20 @@ case RISCV::BI__builtin_riscv_orc_b_64: case RISCV::BI__builtin_riscv_clz_32: case RISCV::BI__builtin_riscv_clz_64: + case RISCV::BI__builtin_riscv_andn_32: + case RISCV::BI__builtin_riscv_andn_64: + case RISCV::BI__builtin_riscv_clzw_64: + case RISCV::BI__builtin_riscv_cpop_32: + case RISCV::BI__builtin_riscv_cpop_64: + case RISCV::BI__builtin_riscv_cpopw_64: + case RISCV::BI__builtin_riscv_ctz_32: + case RISCV::BI__builtin_riscv_ctz_64: + case RISCV::BI__builtin_riscv_max_32: + case RISCV::BI__builtin_riscv_max_64: + case RISCV::BI__builtin_riscv_maxu_32: + case RISCV::BI__builtin_riscv_maxu_64: + case RISCV::BI__builtin_riscv_orn_32: + case RISCV::BI__builtin_riscv_orn_64: case RISCV::BI__builtin_riscv_clmul: case RISCV::BI__builtin_riscv_clmulh: case RISCV::BI__builtin_riscv_clmulr: @@ -19044,6 +19058,36 @@ Function *F = CGM.getIntrinsic(Intrinsic::ctlz, Ops[0]->getType()); return Builder.CreateCall(F, {Ops[0], Builder.getInt1(false)}); } + case RISCV::BI__builtin_riscv_andn_32: + case RISCV::BI__builtin_riscv_andn_64: + ID = Intrinsic::riscv_andn; + break; + case RISCV::BI__builtin_riscv_clzw_64: + ID = Intrinsic::riscv_clzw; + break; + case RISCV::BI__builtin_riscv_cpop_32: + case RISCV::BI__builtin_riscv_cpop_64: + ID = Intrinsic::riscv_cpop; + break; + case RISCV::BI__builtin_riscv_cpopw_64: + ID = Intrinsic::riscv_cpopw; + break; + case RISCV::BI__builtin_riscv_ctz_32: + case RISCV::BI__builtin_riscv_ctz_64: + ID = Intrinsic::riscv_ctz; + break; + case RISCV::BI__builtin_riscv_max_32: + case RISCV::BI__builtin_riscv_max_64: + ID = Intrinsic::riscv_max; + break; + case RISCV::BI__builtin_riscv_maxu_32: + case RISCV::BI__builtin_riscv_maxu_64: + ID = Intrinsic::riscv_maxu; + break; + case RISCV::BI__builtin_riscv_orn_32: + case RISCV::BI__builtin_riscv_orn_64: + ID = Intrinsic::riscv_orn; + break; // Zbc case RISCV::BI__builtin_riscv_clmul: Index: clang/include/clang/Basic/BuiltinsRISCV.def =================================================================== --- clang/include/clang/Basic/BuiltinsRISCV.def +++ clang/include/clang/Basic/BuiltinsRISCV.def @@ -20,6 +20,21 @@ TARGET_BUILTIN(__builtin_riscv_orc_b_64, "WiWi", "nc", "zbb,64bit") TARGET_BUILTIN(__builtin_riscv_clz_32, "ZiZi", "nc", "zbb") TARGET_BUILTIN(__builtin_riscv_clz_64, "WiWi", "nc", "zbb,64bit") +TARGET_BUILTIN(__builtin_riscv_andn_32, "ZiZiZi", "nc", "zbb") +TARGET_BUILTIN(__builtin_riscv_andn_64, "WiWiWi", "nc", "zbb,64bit") +TARGET_BUILTIN(__builtin_riscv_clzw_64, "WiWi", "nc", "zbb,64bit") +TARGET_BUILTIN(__builtin_riscv_cpop_32, "ZiZi", "nc", "zbb") +TARGET_BUILTIN(__builtin_riscv_cpop_64, "WiWi", "nc", "zbb,64bit") +TARGET_BUILTIN(__builtin_riscv_cpopw_64, "WiWi", "nc", "zbb,64bit") +TARGET_BUILTIN(__builtin_riscv_ctz_32, "ZiZi", "nc", "zbb") +TARGET_BUILTIN(__builtin_riscv_ctz_64, "WiWi", "nc", "zbb,64bit") +TARGET_BUILTIN(__builtin_riscv_ctzw_64, "WiWi", "nc", "zbb,64bit") +TARGET_BUILTIN(__builtin_riscv_max_32, "ZiZiZi", "nc", "zbb") +TARGET_BUILTIN(__builtin_riscv_max_64, "WiWiWi", "nc", "zbb,64bit") +TARGET_BUILTIN(__builtin_riscv_maxu_32, "ZiZiZi", "nc", "zbb") +TARGET_BUILTIN(__builtin_riscv_maxu_64, "WiWiWi", "nc", "zbb,64bit") +TARGET_BUILTIN(__builtin_riscv_orn_32, "ZiZiZi", "nc", "zbb") +TARGET_BUILTIN(__builtin_riscv_orn_64, "WiWiWi", "nc", "zbb,64bit") // Zbc or Zbkc extension TARGET_BUILTIN(__builtin_riscv_clmul, "LiLiLi", "nc", "zbc|zbkc")
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits