[clang] 8b65f79 - [OpenCL] Add Arm dot product builtin functions
Sven van Haastregt via cfe-commits
cfe-commits at lists.llvm.org
Tue Feb 18 02:02:17 PST 2020
Author: Sven van Haastregt
Date: 2020-02-18T10:02:06Z
New Revision: 8b65f792a0a96a091c24fdacf4ce04686e0eefb2
URL: https://github.com/llvm/llvm-project/commit/8b65f792a0a96a091c24fdacf4ce04686e0eefb2
DIFF: https://github.com/llvm/llvm-project/commit/8b65f792a0a96a091c24fdacf4ce04686e0eefb2.diff
LOG: [OpenCL] Add Arm dot product builtin functions
Add the Arm dot product builtin functions from the OpenCL extension
available at
https://www.khronos.org/registry/OpenCL/extensions/arm/cl_arm_integer_dot_product.txt
Patch by Pierre Gondois and Sven van Haastregt.
Added:
Modified:
clang/lib/Sema/OpenCLBuiltins.td
Removed:
################################################################################
diff --git a/clang/lib/Sema/OpenCLBuiltins.td b/clang/lib/Sema/OpenCLBuiltins.td
index 888978dfdbd3..f0790dd32527 100644
--- a/clang/lib/Sema/OpenCLBuiltins.td
+++ b/clang/lib/Sema/OpenCLBuiltins.td
@@ -66,6 +66,12 @@ def FuncExtKhrGlMsaaSharing : FunctionExtension<"cl_khr_gl_msaa_sha
// Multiple extensions
def FuncExtKhrMipmapWritesAndWrite3d : FunctionExtension<"cl_khr_mipmap_image_writes cl_khr_3d_image_writes">;
+// Arm extensions.
+def ArmIntegerDotProductInt8 : FunctionExtension<"cl_arm_integer_dot_product_int8">;
+def ArmIntegerDotProductAccumulateInt8 : FunctionExtension<"cl_arm_integer_dot_product_accumulate_int8">;
+def ArmIntegerDotProductAccumulateInt16 : FunctionExtension<"cl_arm_integer_dot_product_accumulate_int16">;
+def ArmIntegerDotProductAccumulateSaturateInt8 : FunctionExtension<"cl_arm_integer_dot_product_accumulate_saturate_int8">;
+
// Qualified Type. These map to ASTContext::QualType.
class QualType<string _Name, bit _IsAbstract=0> {
// Name of the field or function in a clang::ASTContext
@@ -1350,3 +1356,30 @@ let Extension = FuncExtKhrGlMsaaSharing in {
def : Builtin<"get_image_array_size", [Size, ImageType<Image2dArrayMsaaDepth, aQual>], Attr.Const>;
}
}
+
+//--------------------------------------------------------------------
+// Arm extensions.
+let Extension = ArmIntegerDotProductInt8 in {
+ foreach name = ["arm_dot"] in {
+ def : Builtin<name, [UInt, VectorType<UChar, 4>, VectorType<UChar, 4>]>;
+ def : Builtin<name, [Int, VectorType<Char, 4>, VectorType<Char, 4>]>;
+ }
+}
+let Extension = ArmIntegerDotProductAccumulateInt8 in {
+ foreach name = ["arm_dot_acc"] in {
+ def : Builtin<name, [UInt, VectorType<UChar, 4>, VectorType<UChar, 4>, UInt]>;
+ def : Builtin<name, [Int, VectorType<Char, 4>, VectorType<Char, 4>, Int]>;
+ }
+}
+let Extension = ArmIntegerDotProductAccumulateInt16 in {
+ foreach name = ["arm_dot_acc"] in {
+ def : Builtin<name, [UInt, VectorType<UShort, 2>, VectorType<UShort, 2>, UInt]>;
+ def : Builtin<name, [Int, VectorType<Short, 2>, VectorType<Short, 2>, Int]>;
+ }
+}
+let Extension = ArmIntegerDotProductAccumulateSaturateInt8 in {
+ foreach name = ["arm_dot_acc_sat"] in {
+ def : Builtin<name, [UInt, VectorType<UChar, 4>, VectorType<UChar, 4>, UInt]>;
+ def : Builtin<name, [Int, VectorType<Char, 4>, VectorType<Char, 4>, Int]>;
+ }
+}
More information about the cfe-commits
mailing list