https://github.com/jmmartinez updated 
https://github.com/llvm/llvm-project/pull/143507

From e9940ff50bed67583d3f285a4adf105e7ab08547 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Juan=20Manuel=20Martinez=20Caama=C3=B1o?= <juama...@amd.com>
Date: Tue, 10 Jun 2025 12:28:35 +0200
Subject: [PATCH 1/4] [Clang][OpenCL] Pre-commit tests:
 fdeclare-opencl-builtins does not declare cl_amd_media_ops builtins

---
 clang/test/SemaOpenCL/amd-media-ops.cl | 98 ++++++++++++++++++++++++++
 1 file changed, 98 insertions(+)
 create mode 100644 clang/test/SemaOpenCL/amd-media-ops.cl

diff --git a/clang/test/SemaOpenCL/amd-media-ops.cl 
b/clang/test/SemaOpenCL/amd-media-ops.cl
new file mode 100644
index 0000000000000..33e662004a0fe
--- /dev/null
+++ b/clang/test/SemaOpenCL/amd-media-ops.cl
@@ -0,0 +1,98 @@
+// RUN: %clang_cc1 %s -triple amdgcn-unknown-unknown -verify -pedantic 
-Wconversion -Werror -fsyntax-only -cl-std=CL -finclude-default-header %s
+// expected-no-diagnostics
+// RUN: %clang_cc1 %s -triple amdgcn-unknown-unknown -verify=fdecalre 
-pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL 
-finclude-default-header -fdeclare-opencl-builtins %s
+
+#define TEST_1ARG_BUILTIN_WITH_TYPE(builtin, ret, type) \
+    ret test_ ## builtin ## _ ## ret ## _## type (type a) { \
+        return builtin(a); \
+    }
+
+#define TEST_2ARG_BUILTIN_WITH_TYPE(builtin, ret, type) \
+    ret test_ ## builtin ## _ ## ret ## _## type (type a, type b) { \
+        return builtin(a, b); \
+    }
+
+#define TEST_3ARG_BUILTIN_WITH_TYPE(builtin, ret, type) \
+    ret test_ ## builtin ## _ ## ret ## _ ## type (type a, type b, type c) { \
+        return builtin(a, b, c); \
+    }
+
+#define TEST_1ARG_BUILTIN(builtin, ret, type) \
+    TEST_1ARG_BUILTIN_WITH_TYPE(builtin, ret, type) \
+    TEST_1ARG_BUILTIN_WITH_TYPE(builtin, ret ## 2, type ## 2) \
+    TEST_1ARG_BUILTIN_WITH_TYPE(builtin, ret ## 3, type ## 3) \
+    TEST_1ARG_BUILTIN_WITH_TYPE(builtin, ret ## 4, type ## 4) \
+    TEST_1ARG_BUILTIN_WITH_TYPE(builtin, ret ## 8, type ## 8) \
+    TEST_1ARG_BUILTIN_WITH_TYPE(builtin, ret ## 16, type ## 16)
+
+#define TEST_2ARG_BUILTIN(builtin, ret, type) \
+    TEST_2ARG_BUILTIN_WITH_TYPE(builtin, ret, type) \
+    TEST_2ARG_BUILTIN_WITH_TYPE(builtin, ret ## 2, type ## 2) \
+    TEST_2ARG_BUILTIN_WITH_TYPE(builtin, ret ## 3, type ## 3) \
+    TEST_2ARG_BUILTIN_WITH_TYPE(builtin, ret ## 4, type ## 4) \
+    TEST_2ARG_BUILTIN_WITH_TYPE(builtin, ret ## 8, type ## 8) \
+    TEST_2ARG_BUILTIN_WITH_TYPE(builtin, ret ## 16, type ## 16)
+
+#define TEST_3ARG_BUILTIN(builtin, ret, type) \
+    TEST_3ARG_BUILTIN_WITH_TYPE(builtin, ret, type) \
+    TEST_3ARG_BUILTIN_WITH_TYPE(builtin, ret ## 2, type ## 2) \
+    TEST_3ARG_BUILTIN_WITH_TYPE(builtin, ret ## 3, type ## 3) \
+    TEST_3ARG_BUILTIN_WITH_TYPE(builtin, ret ## 4, type ## 4) \
+    TEST_3ARG_BUILTIN_WITH_TYPE(builtin, ret ## 8, type ## 8) \
+    TEST_3ARG_BUILTIN_WITH_TYPE(builtin, ret ## 16, type ## 16)
+
+#define TEST_3ARG_BUILTIN_WITH_TYPES(builtin, ret, type_a, type_b, type_c) \
+    ret test_ ## builtin ## _ ## ret ## _ ## type_a ## _ ## type_b ## _ ## 
type_c (type_a a, type_b b, type_c c) { \
+        return builtin(a, b, c); \
+    }
+
+#define TEST_3ARG_WITH_TYPES_BUILTIN(builtin, ret, type_a, type_b, type_c) \
+    TEST_3ARG_BUILTIN_WITH_TYPES(builtin, ret, type_a, type_b, type_c) \
+    TEST_3ARG_BUILTIN_WITH_TYPES(builtin, ret ## 2, type_a ## 2, type_b ## 2, 
type_c ## 2) \
+    TEST_3ARG_BUILTIN_WITH_TYPES(builtin, ret ## 3, type_a ## 3, type_b ## 3, 
type_c ## 3) \
+    TEST_3ARG_BUILTIN_WITH_TYPES(builtin, ret ## 4, type_a ## 4, type_b ## 4, 
type_c ## 4) \
+    TEST_3ARG_BUILTIN_WITH_TYPES(builtin, ret ## 8, type_a ## 8, type_b ## 8, 
type_c ## 8) \
+    TEST_3ARG_BUILTIN_WITH_TYPES(builtin, ret ## 16, type_a ## 16, type_b ## 
16, type_c ## 16)
+
+TEST_3ARG_BUILTIN(amd_bitalign, uint, uint) // fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}}
+TEST_3ARG_BUILTIN(amd_bytealign, uint, uint) // fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}}
+TEST_3ARG_BUILTIN(amd_lerp, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+
+uint test_amd_pack(float4 a) {
+    return amd_pack(a); // fdecalre-error{{use of undeclared identifier}}
+}
+
+uint test_amd_sad4(uint4 a, uint4 b, uint c) {
+    return amd_sad4(a, b, c); // fdecalre-error{{use of undeclared identifier}}
+}
+
+TEST_3ARG_BUILTIN(amd_sadhi, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+TEST_3ARG_BUILTIN(amd_sad, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+
+TEST_1ARG_BUILTIN(amd_unpack0, float, uint) // fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}}
+TEST_1ARG_BUILTIN(amd_unpack1, float, uint) // fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}}
+TEST_1ARG_BUILTIN(amd_unpack2, float, uint) // fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}}
+TEST_1ARG_BUILTIN(amd_unpack3, float, uint) // fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}}
+
+TEST_3ARG_WITH_TYPES_BUILTIN(amd_bfe, int, int, uint, uint) // 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}}
+TEST_3ARG_BUILTIN(amd_bfe, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+TEST_2ARG_BUILTIN(amd_bfm, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+
+TEST_3ARG_BUILTIN(amd_max3, float, float) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+TEST_3ARG_BUILTIN(amd_max3, int, int) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+TEST_3ARG_BUILTIN(amd_max3, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+
+TEST_3ARG_BUILTIN(amd_median3, float, float) // fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}}
+TEST_3ARG_BUILTIN(amd_median3, int, int) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+TEST_3ARG_BUILTIN(amd_median3, uint, uint) // fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}}
+
+TEST_3ARG_BUILTIN(amd_min3, float, float) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+TEST_3ARG_BUILTIN(amd_min3, int, int) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+TEST_3ARG_BUILTIN(amd_min3, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+
+TEST_3ARG_WITH_TYPES_BUILTIN(amd_mqsad, ulong, ulong, uint, ulong) // 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}}
+TEST_3ARG_WITH_TYPES_BUILTIN(amd_qsad, ulong, ulong, uint, ulong) // 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}}
+
+TEST_3ARG_BUILTIN(amd_msad, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+TEST_3ARG_BUILTIN(amd_sadd, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+TEST_3ARG_BUILTIN(amd_sadw, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}

From 984430f06b7084bc2d14b2e4cfaaa51badbf1544 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Juan=20Manuel=20Martinez=20Caama=C3=B1o?= <juama...@amd.com>
Date: Tue, 10 Jun 2025 12:52:27 +0200
Subject: [PATCH 2/4] [Clang][OpenCL] Declare cl_amd_media_ops with
 fdeclare-opencl-builtins

---
 clang/lib/Sema/OpenCLBuiltins.td       | 16 ++++++++++++++++
 clang/test/SemaOpenCL/amd-media-ops.cl | 22 +++++++++++-----------
 2 files changed, 27 insertions(+), 11 deletions(-)

diff --git a/clang/lib/Sema/OpenCLBuiltins.td b/clang/lib/Sema/OpenCLBuiltins.td
index 528b700a275e0..7b6a60af2c7fe 100644
--- a/clang/lib/Sema/OpenCLBuiltins.td
+++ b/clang/lib/Sema/OpenCLBuiltins.td
@@ -139,6 +139,9 @@ def ArmIntegerDotProductAccumulateInt8         : 
FunctionExtension<"cl_arm_integ
 def ArmIntegerDotProductAccumulateInt16        : 
FunctionExtension<"cl_arm_integer_dot_product_accumulate_int16">;
 def ArmIntegerDotProductAccumulateSaturateInt8 : 
FunctionExtension<"cl_arm_integer_dot_product_accumulate_saturate_int8">;
 
+// AMD extensions.
+def AMDMediaOps : FunctionExtension<"cl_amd_media_ops">;
+
 // Qualified Type.  These map to ASTContext::QualType.
 class QualType<string _TypeExpr, bit _IsAbstract=0> {
   // Expression to obtain the QualType inside OCL2Qual.
@@ -1904,3 +1907,16 @@ let Extension = 
ArmIntegerDotProductAccumulateSaturateInt8 in {
     def : Builtin<name, [Int, VectorType<Char, 4>, VectorType<Char, 4>, Int]>;
   }
 }
+
+//--------------------------------------------------------------------
+// AMD extensions.
+let Extension = AMDMediaOps in {
+  foreach name = ["amd_bitalign", "amd_bytealign", "amd_lerp", "amd_sadhi", 
"amd_sad"] in {
+    def : Builtin<name, [GenTypeUIntVecAndScalar, GenTypeUIntVecAndScalar, 
GenTypeUIntVecAndScalar, GenTypeUIntVecAndScalar]>;
+  }
+  foreach name = ["amd_unpack0", "amd_unpack1", "amd_unpack2", "amd_unpack3"] 
in {
+    def : Builtin<name, [GenTypeFloatVecAndScalar, GenTypeUIntVecAndScalar]>;
+  }
+  def : Builtin<"amd_pack", [UInt, VectorType<Float, 4>]>;
+  def : Builtin<"amd_sad4", [UInt, VectorType<UInt, 4>, VectorType<UInt, 4>, 
UInt]>;
+}
diff --git a/clang/test/SemaOpenCL/amd-media-ops.cl 
b/clang/test/SemaOpenCL/amd-media-ops.cl
index 33e662004a0fe..bdd58924867c2 100644
--- a/clang/test/SemaOpenCL/amd-media-ops.cl
+++ b/clang/test/SemaOpenCL/amd-media-ops.cl
@@ -54,25 +54,25 @@
     TEST_3ARG_BUILTIN_WITH_TYPES(builtin, ret ## 8, type_a ## 8, type_b ## 8, 
type_c ## 8) \
     TEST_3ARG_BUILTIN_WITH_TYPES(builtin, ret ## 16, type_a ## 16, type_b ## 
16, type_c ## 16)
 
-TEST_3ARG_BUILTIN(amd_bitalign, uint, uint) // fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}}
-TEST_3ARG_BUILTIN(amd_bytealign, uint, uint) // fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}}
-TEST_3ARG_BUILTIN(amd_lerp, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+TEST_3ARG_BUILTIN(amd_bitalign, uint, uint)
+TEST_3ARG_BUILTIN(amd_bytealign, uint, uint)
+TEST_3ARG_BUILTIN(amd_lerp, uint, uint)
 
 uint test_amd_pack(float4 a) {
-    return amd_pack(a); // fdecalre-error{{use of undeclared identifier}}
+    return amd_pack(a);
 }
 
 uint test_amd_sad4(uint4 a, uint4 b, uint c) {
-    return amd_sad4(a, b, c); // fdecalre-error{{use of undeclared identifier}}
+    return amd_sad4(a, b, c);
 }
 
-TEST_3ARG_BUILTIN(amd_sadhi, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
-TEST_3ARG_BUILTIN(amd_sad, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+TEST_3ARG_BUILTIN(amd_sadhi, uint, uint)
+TEST_3ARG_BUILTIN(amd_sad, uint, uint)
 
-TEST_1ARG_BUILTIN(amd_unpack0, float, uint) // fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}}
-TEST_1ARG_BUILTIN(amd_unpack1, float, uint) // fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}}
-TEST_1ARG_BUILTIN(amd_unpack2, float, uint) // fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}}
-TEST_1ARG_BUILTIN(amd_unpack3, float, uint) // fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}}
+TEST_1ARG_BUILTIN(amd_unpack0, float, uint)
+TEST_1ARG_BUILTIN(amd_unpack1, float, uint)
+TEST_1ARG_BUILTIN(amd_unpack2, float, uint)
+TEST_1ARG_BUILTIN(amd_unpack3, float, uint)
 
 TEST_3ARG_WITH_TYPES_BUILTIN(amd_bfe, int, int, uint, uint) // 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}}
 TEST_3ARG_BUILTIN(amd_bfe, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}

From 1b5314d30ac8bdcd85703fca2958f584244554e7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Juan=20Manuel=20Martinez=20Caama=C3=B1o?= <juama...@amd.com>
Date: Tue, 10 Jun 2025 13:06:22 +0200
Subject: [PATCH 3/4] [Clang][OpenCL] Declare cl_amd_media_ops2 with
 fdeclare-opencl-builtins

---
 clang/lib/Sema/OpenCLBuiltins.td       | 16 +++++++++++
 clang/test/SemaOpenCL/amd-media-ops.cl | 37 +++++++++++++-------------
 2 files changed, 35 insertions(+), 18 deletions(-)

diff --git a/clang/lib/Sema/OpenCLBuiltins.td b/clang/lib/Sema/OpenCLBuiltins.td
index 7b6a60af2c7fe..fe86d42dac4db 100644
--- a/clang/lib/Sema/OpenCLBuiltins.td
+++ b/clang/lib/Sema/OpenCLBuiltins.td
@@ -141,6 +141,7 @@ def ArmIntegerDotProductAccumulateSaturateInt8 : 
FunctionExtension<"cl_arm_integ
 
 // AMD extensions.
 def AMDMediaOps : FunctionExtension<"cl_amd_media_ops">;
+def AMDMediaOps2 : FunctionExtension<"cl_amd_media_ops2">;
 
 // Qualified Type.  These map to ASTContext::QualType.
 class QualType<string _TypeExpr, bit _IsAbstract=0> {
@@ -1920,3 +1921,18 @@ let Extension = AMDMediaOps in {
   def : Builtin<"amd_pack", [UInt, VectorType<Float, 4>]>;
   def : Builtin<"amd_sad4", [UInt, VectorType<UInt, 4>, VectorType<UInt, 4>, 
UInt]>;
 }
+
+let Extension = AMDMediaOps2 in {
+  def : Builtin<"amd_bfe", [GenTypeIntVecAndScalar, GenTypeIntVecAndScalar, 
GenTypeUIntVecAndScalar, GenTypeUIntVecAndScalar]>;
+  foreach name = ["amd_bfe", "amd_msad", "amd_sadd", "amd_sadw"] in {
+    def : Builtin<name, [GenTypeUIntVecAndScalar, GenTypeUIntVecAndScalar, 
GenTypeUIntVecAndScalar, GenTypeUIntVecAndScalar]>;
+  }
+  def : Builtin<"amd_bfm", [GenTypeUIntVecAndScalar, GenTypeUIntVecAndScalar, 
GenTypeUIntVecAndScalar]>;
+  foreach name = ["amd_max3", "amd_median3", "amd_min3"] in {
+    foreach gentype = [GenTypeFloatVecAndScalar, GenTypeIntVecAndScalar, 
GenTypeUIntVecAndScalar] in {
+      def : Builtin<name, [gentype, gentype, gentype, gentype]>;
+    }
+  }
+  def : Builtin<"amd_mqsad", [GenTypeULongVecAndScalar, 
GenTypeULongVecAndScalar, GenTypeUIntVecAndScalar, GenTypeULongVecAndScalar]>;
+  def : Builtin<"amd_qsad", [GenTypeULongVecAndScalar, 
GenTypeULongVecAndScalar, GenTypeUIntVecAndScalar, GenTypeULongVecAndScalar]>;
+}
diff --git a/clang/test/SemaOpenCL/amd-media-ops.cl 
b/clang/test/SemaOpenCL/amd-media-ops.cl
index bdd58924867c2..ceb22106d7e5d 100644
--- a/clang/test/SemaOpenCL/amd-media-ops.cl
+++ b/clang/test/SemaOpenCL/amd-media-ops.cl
@@ -1,6 +1,7 @@
 // RUN: %clang_cc1 %s -triple amdgcn-unknown-unknown -verify -pedantic 
-Wconversion -Werror -fsyntax-only -cl-std=CL -finclude-default-header %s
 // expected-no-diagnostics
-// RUN: %clang_cc1 %s -triple amdgcn-unknown-unknown -verify=fdecalre 
-pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL 
-finclude-default-header -fdeclare-opencl-builtins %s
+// RUN: %clang_cc1 %s -triple amdgcn-unknown-unknown -verify -pedantic 
-Wconversion -Werror -fsyntax-only -cl-std=CL -finclude-default-header 
-fdeclare-opencl-builtins %s
+// expected-no-diagnostics
 
 #define TEST_1ARG_BUILTIN_WITH_TYPE(builtin, ret, type) \
     ret test_ ## builtin ## _ ## ret ## _## type (type a) { \
@@ -74,25 +75,25 @@ TEST_1ARG_BUILTIN(amd_unpack1, float, uint)
 TEST_1ARG_BUILTIN(amd_unpack2, float, uint)
 TEST_1ARG_BUILTIN(amd_unpack3, float, uint)
 
-TEST_3ARG_WITH_TYPES_BUILTIN(amd_bfe, int, int, uint, uint) // 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}}
-TEST_3ARG_BUILTIN(amd_bfe, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
-TEST_2ARG_BUILTIN(amd_bfm, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+TEST_3ARG_WITH_TYPES_BUILTIN(amd_bfe, int, int, uint, uint)
+TEST_3ARG_BUILTIN(amd_bfe, uint, uint)
+TEST_2ARG_BUILTIN(amd_bfm, uint, uint)
 
-TEST_3ARG_BUILTIN(amd_max3, float, float) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
-TEST_3ARG_BUILTIN(amd_max3, int, int) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
-TEST_3ARG_BUILTIN(amd_max3, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+TEST_3ARG_BUILTIN(amd_max3, float, float)
+TEST_3ARG_BUILTIN(amd_max3, int, int)
+TEST_3ARG_BUILTIN(amd_max3, uint, uint)
 
-TEST_3ARG_BUILTIN(amd_median3, float, float) // fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}}
-TEST_3ARG_BUILTIN(amd_median3, int, int) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
-TEST_3ARG_BUILTIN(amd_median3, uint, uint) // fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}}
+TEST_3ARG_BUILTIN(amd_median3, float, float)
+TEST_3ARG_BUILTIN(amd_median3, int, int)
+TEST_3ARG_BUILTIN(amd_median3, uint, uint)
 
-TEST_3ARG_BUILTIN(amd_min3, float, float) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
-TEST_3ARG_BUILTIN(amd_min3, int, int) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
-TEST_3ARG_BUILTIN(amd_min3, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+TEST_3ARG_BUILTIN(amd_min3, float, float)
+TEST_3ARG_BUILTIN(amd_min3, int, int)
+TEST_3ARG_BUILTIN(amd_min3, uint, uint)
 
-TEST_3ARG_WITH_TYPES_BUILTIN(amd_mqsad, ulong, ulong, uint, ulong) // 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}}
-TEST_3ARG_WITH_TYPES_BUILTIN(amd_qsad, ulong, ulong, uint, ulong) // 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}} fdecalre-error{{use of undeclared identifier}}
+TEST_3ARG_WITH_TYPES_BUILTIN(amd_mqsad, ulong, ulong, uint, ulong)
+TEST_3ARG_WITH_TYPES_BUILTIN(amd_qsad, ulong, ulong, uint, ulong)
 
-TEST_3ARG_BUILTIN(amd_msad, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
-TEST_3ARG_BUILTIN(amd_sadd, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
-TEST_3ARG_BUILTIN(amd_sadw, uint, uint) // fdecalre-error{{use of undeclared 
identifier}} fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use 
of undeclared identifier}} fdecalre-error{{use of undeclared identifier}} 
fdecalre-error{{use of undeclared identifier}} fdecalre-error{{use of 
undeclared identifier}}
+TEST_3ARG_BUILTIN(amd_msad, uint, uint)
+TEST_3ARG_BUILTIN(amd_sadd, uint, uint)
+TEST_3ARG_BUILTIN(amd_sadw, uint, uint)

From 4782efb1b55b83a2dccec5a84008c056fc047279 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Juan=20Manuel=20Martinez=20Caama=C3=B1o?= <juama...@amd.com>
Date: Tue, 10 Jun 2025 14:33:00 +0200
Subject: [PATCH 4/4] [Review] Remove duplicated expected-no-diagnostics

---
 clang/test/SemaOpenCL/amd-media-ops.cl | 1 -
 1 file changed, 1 deletion(-)

diff --git a/clang/test/SemaOpenCL/amd-media-ops.cl 
b/clang/test/SemaOpenCL/amd-media-ops.cl
index ceb22106d7e5d..aabd61ddd664f 100644
--- a/clang/test/SemaOpenCL/amd-media-ops.cl
+++ b/clang/test/SemaOpenCL/amd-media-ops.cl
@@ -1,5 +1,4 @@
 // RUN: %clang_cc1 %s -triple amdgcn-unknown-unknown -verify -pedantic 
-Wconversion -Werror -fsyntax-only -cl-std=CL -finclude-default-header %s
-// expected-no-diagnostics
 // RUN: %clang_cc1 %s -triple amdgcn-unknown-unknown -verify -pedantic 
-Wconversion -Werror -fsyntax-only -cl-std=CL -finclude-default-header 
-fdeclare-opencl-builtins %s
 // expected-no-diagnostics
 

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to