[clang] 1db5b49 - [RISCV] Use ClangBuiltin in IntrinsicsRISCV.td to map some scalar crypto builtins to IR intrinsic.
Craig Topper via cfe-commits
cfe-commits at lists.llvm.org
Thu Jul 6 07:54:03 PDT 2023
Author: Craig Topper
Date: 2023-07-06T07:53:31-07:00
New Revision: 1db5b49ae62a7820378d8dfb2d8fd53e1774992d
URL: https://github.com/llvm/llvm-project/commit/1db5b49ae62a7820378d8dfb2d8fd53e1774992d
DIFF: https://github.com/llvm/llvm-project/commit/1db5b49ae62a7820378d8dfb2d8fd53e1774992d.diff
LOG: [RISCV] Use ClangBuiltin in IntrinsicsRISCV.td to map some scalar crypto builtins to IR intrinsic.
This is the way most targets do it for a simple mapping.
We can't do this for all builtins due to type overloading of the IR intrinsics.
Reviewed By: asb
Differential Revision: https://reviews.llvm.org/D154567
Added:
Modified:
clang/lib/CodeGen/CGBuiltin.cpp
llvm/include/llvm/IR/IntrinsicsRISCV.td
Removed:
################################################################################
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp
index c844aa7dfc5c38..3d451bd7d140f2 100644
--- a/clang/lib/CodeGen/CGBuiltin.cpp
+++ b/clang/lib/CodeGen/CGBuiltin.cpp
@@ -20230,45 +20230,6 @@ Value *CodeGenFunction::EmitRISCVBuiltinExpr(unsigned BuiltinID,
// Zk builtins
- // Zknd
- case RISCV::BI__builtin_riscv_aes32dsi_32:
- ID = Intrinsic::riscv_aes32dsi;
- break;
- case RISCV::BI__builtin_riscv_aes32dsmi_32:
- ID = Intrinsic::riscv_aes32dsmi;
- break;
- case RISCV::BI__builtin_riscv_aes64ds_64:
- ID = Intrinsic::riscv_aes64ds;
- break;
- case RISCV::BI__builtin_riscv_aes64dsm_64:
- ID = Intrinsic::riscv_aes64dsm;
- break;
- case RISCV::BI__builtin_riscv_aes64im_64:
- ID = Intrinsic::riscv_aes64im;
- break;
-
- // Zkne
- case RISCV::BI__builtin_riscv_aes32esi_32:
- ID = Intrinsic::riscv_aes32esi;
- break;
- case RISCV::BI__builtin_riscv_aes32esmi_32:
- ID = Intrinsic::riscv_aes32esmi;
- break;
- case RISCV::BI__builtin_riscv_aes64es_64:
- ID = Intrinsic::riscv_aes64es;
- break;
- case RISCV::BI__builtin_riscv_aes64esm_64:
- ID = Intrinsic::riscv_aes64esm;
- break;
-
- // Zknd & Zkne
- case RISCV::BI__builtin_riscv_aes64ks1i_64:
- ID = Intrinsic::riscv_aes64ks1i;
- break;
- case RISCV::BI__builtin_riscv_aes64ks2_64:
- ID = Intrinsic::riscv_aes64ks2;
- break;
-
// Zknh
case RISCV::BI__builtin_riscv_sha256sig0:
ID = Intrinsic::riscv_sha256sig0;
@@ -20286,36 +20247,6 @@ Value *CodeGenFunction::EmitRISCVBuiltinExpr(unsigned BuiltinID,
ID = Intrinsic::riscv_sha256sum1;
IntrinsicTypes = {ResultType};
break;
- case RISCV::BI__builtin_riscv_sha512sig0_64:
- ID = Intrinsic::riscv_sha512sig0;
- break;
- case RISCV::BI__builtin_riscv_sha512sig0h_32:
- ID = Intrinsic::riscv_sha512sig0h;
- break;
- case RISCV::BI__builtin_riscv_sha512sig0l_32:
- ID = Intrinsic::riscv_sha512sig0l;
- break;
- case RISCV::BI__builtin_riscv_sha512sig1_64:
- ID = Intrinsic::riscv_sha512sig1;
- break;
- case RISCV::BI__builtin_riscv_sha512sig1h_32:
- ID = Intrinsic::riscv_sha512sig1h;
- break;
- case RISCV::BI__builtin_riscv_sha512sig1l_32:
- ID = Intrinsic::riscv_sha512sig1l;
- break;
- case RISCV::BI__builtin_riscv_sha512sum0_64:
- ID = Intrinsic::riscv_sha512sum0;
- break;
- case RISCV::BI__builtin_riscv_sha512sum0r_32:
- ID = Intrinsic::riscv_sha512sum0r;
- break;
- case RISCV::BI__builtin_riscv_sha512sum1_64:
- ID = Intrinsic::riscv_sha512sum1;
- break;
- case RISCV::BI__builtin_riscv_sha512sum1r_32:
- ID = Intrinsic::riscv_sha512sum1r;
- break;
// Zksed
case RISCV::BI__builtin_riscv_sm4ks:
diff --git a/llvm/include/llvm/IR/IntrinsicsRISCV.td b/llvm/include/llvm/IR/IntrinsicsRISCV.td
index 8931d6f0901545..a9cd18dd91ce10 100644
--- a/llvm/include/llvm/IR/IntrinsicsRISCV.td
+++ b/llvm/include/llvm/IR/IntrinsicsRISCV.td
@@ -1613,27 +1613,38 @@ class ScalarCryptoByteSelectAny
[IntrNoMem, IntrSpeculatable, ImmArg<ArgIndex<2>>]>;
// Zknd
-def int_riscv_aes32dsi : ScalarCryptoByteSelect32;
-def int_riscv_aes32dsmi : ScalarCryptoByteSelect32;
+def int_riscv_aes32dsi : ScalarCryptoByteSelect32,
+ ClangBuiltin<"__builtin_riscv_aes32dsi_32">;
+def int_riscv_aes32dsmi : ScalarCryptoByteSelect32,
+ ClangBuiltin<"__builtin_riscv_aes32dsmi_32">;
-def int_riscv_aes64ds : ScalarCryptoGprGprIntrinsic64;
-def int_riscv_aes64dsm : ScalarCryptoGprGprIntrinsic64;
+def int_riscv_aes64ds : ScalarCryptoGprGprIntrinsic64,
+ ClangBuiltin<"__builtin_riscv_aes64ds_64">;
+def int_riscv_aes64dsm : ScalarCryptoGprGprIntrinsic64,
+ ClangBuiltin<"__builtin_riscv_aes64dsm_64">;
-def int_riscv_aes64im : ScalarCryptoGprIntrinsic64;
+def int_riscv_aes64im : ScalarCryptoGprIntrinsic64,
+ ClangBuiltin<"__builtin_riscv_aes64im_64">;
// Zkne
-def int_riscv_aes32esi : ScalarCryptoByteSelect32;
-def int_riscv_aes32esmi : ScalarCryptoByteSelect32;
+def int_riscv_aes32esi : ScalarCryptoByteSelect32,
+ ClangBuiltin<"__builtin_riscv_aes32esi_32">;
+def int_riscv_aes32esmi : ScalarCryptoByteSelect32,
+ ClangBuiltin<"__builtin_riscv_aes32esmi_32">;
-def int_riscv_aes64es : ScalarCryptoGprGprIntrinsic64;
-def int_riscv_aes64esm : ScalarCryptoGprGprIntrinsic64;
+def int_riscv_aes64es : ScalarCryptoGprGprIntrinsic64,
+ ClangBuiltin<"__builtin_riscv_aes64es_64">;
+def int_riscv_aes64esm : ScalarCryptoGprGprIntrinsic64,
+ ClangBuiltin<"__builtin_riscv_aes64esm_64">;
// Zknd & Zkne
-def int_riscv_aes64ks2 : ScalarCryptoGprGprIntrinsic64;
+def int_riscv_aes64ks2 : ScalarCryptoGprGprIntrinsic64,
+ ClangBuiltin<"__builtin_riscv_aes64ks2_64">;
def int_riscv_aes64ks1i : DefaultAttrsIntrinsic<[llvm_i64_ty],
[llvm_i64_ty, llvm_i32_ty],
[IntrNoMem, IntrSpeculatable,
- ImmArg<ArgIndex<1>>]>;
+ ImmArg<ArgIndex<1>>]>,
+ ClangBuiltin<"__builtin_riscv_aes64ks1i_64">;
// Zknh
def int_riscv_sha256sig0 : ScalarCryptoGprIntrinsicAny;
@@ -1641,17 +1652,27 @@ def int_riscv_sha256sig1 : ScalarCryptoGprIntrinsicAny;
def int_riscv_sha256sum0 : ScalarCryptoGprIntrinsicAny;
def int_riscv_sha256sum1 : ScalarCryptoGprIntrinsicAny;
-def int_riscv_sha512sig0l : ScalarCryptoGprGprIntrinsic32;
-def int_riscv_sha512sig0h : ScalarCryptoGprGprIntrinsic32;
-def int_riscv_sha512sig1l : ScalarCryptoGprGprIntrinsic32;
-def int_riscv_sha512sig1h : ScalarCryptoGprGprIntrinsic32;
-def int_riscv_sha512sum0r : ScalarCryptoGprGprIntrinsic32;
-def int_riscv_sha512sum1r : ScalarCryptoGprGprIntrinsic32;
-
-def int_riscv_sha512sig0 : ScalarCryptoGprIntrinsic64;
-def int_riscv_sha512sig1 : ScalarCryptoGprIntrinsic64;
-def int_riscv_sha512sum0 : ScalarCryptoGprIntrinsic64;
-def int_riscv_sha512sum1 : ScalarCryptoGprIntrinsic64;
+def int_riscv_sha512sig0l : ScalarCryptoGprGprIntrinsic32,
+ ClangBuiltin<"__builtin_riscv_sha512sig0l_32">;
+def int_riscv_sha512sig0h : ScalarCryptoGprGprIntrinsic32,
+ ClangBuiltin<"__builtin_riscv_sha512sig0h_32">;
+def int_riscv_sha512sig1l : ScalarCryptoGprGprIntrinsic32,
+ ClangBuiltin<"__builtin_riscv_sha512sig1l_32">;
+def int_riscv_sha512sig1h : ScalarCryptoGprGprIntrinsic32,
+ ClangBuiltin<"__builtin_riscv_sha512sig1h_32">;
+def int_riscv_sha512sum0r : ScalarCryptoGprGprIntrinsic32,
+ ClangBuiltin<"__builtin_riscv_sha512sum0r_32">;
+def int_riscv_sha512sum1r : ScalarCryptoGprGprIntrinsic32,
+ ClangBuiltin<"__builtin_riscv_sha512sum1r_32">;
+
+def int_riscv_sha512sig0 : ScalarCryptoGprIntrinsic64,
+ ClangBuiltin<"__builtin_riscv_sha512sig0_64">;
+def int_riscv_sha512sig1 : ScalarCryptoGprIntrinsic64,
+ ClangBuiltin<"__builtin_riscv_sha512sig1_64">;
+def int_riscv_sha512sum0 : ScalarCryptoGprIntrinsic64,
+ ClangBuiltin<"__builtin_riscv_sha512sum0_64">;
+def int_riscv_sha512sum1 : ScalarCryptoGprIntrinsic64,
+ ClangBuiltin<"__builtin_riscv_sha512sum1_64">;
// Zksed
def int_riscv_sm4ks : ScalarCryptoByteSelectAny;
More information about the cfe-commits
mailing list