[clang] [X86][CFE] Correct parameter type of _cmpccxadd_epi64 (PR #114367)
Freddy Ye via cfe-commits
cfe-commits at lists.llvm.org
Thu Oct 31 01:00:24 PDT 2024
https://github.com/FreddyLeaf updated https://github.com/llvm/llvm-project/pull/114367
>From 4c0a5729c8da644cfc01ad25820386f0cc289316 Mon Sep 17 00:00:00 2001
From: Freddy Ye <freddy.ye at intel.com>
Date: Fri, 25 Oct 2024 10:00:16 +0800
Subject: [PATCH 1/2] [X86][CFE] Correct parameter type of _cmpccxadd_epi64
---
clang/include/clang/Basic/BuiltinsX86_64.def | 2 +-
clang/lib/Headers/cmpccxaddintrin.h | 2 +-
clang/test/CodeGen/X86/cmpccxadd-builtins-error.c | 6 +++++-
3 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/clang/include/clang/Basic/BuiltinsX86_64.def b/clang/include/clang/Basic/BuiltinsX86_64.def
index e1e613560167ac..2c3e1a69610bcc 100644
--- a/clang/include/clang/Basic/BuiltinsX86_64.def
+++ b/clang/include/clang/Basic/BuiltinsX86_64.def
@@ -150,7 +150,7 @@ TARGET_BUILTIN(__builtin_ia32_tcmmrlfp16ps, "vIUcIUcIUc", "n", "amx-complex")
TARGET_BUILTIN(__builtin_ia32_prefetchi, "vvC*Ui", "nc", "prefetchi")
TARGET_BUILTIN(__builtin_ia32_cmpccxadd32, "Siv*SiSiIi", "n", "cmpccxadd")
-TARGET_BUILTIN(__builtin_ia32_cmpccxadd64, "SLLiv*SLLiSLLiIi", "n", "cmpccxadd")
+TARGET_BUILTIN(__builtin_ia32_cmpccxadd64, "SLLiSLLi*SLLiSLLiIi", "n", "cmpccxadd")
// AMX_FP16 FP16
TARGET_BUILTIN(__builtin_ia32_tdpfp16ps, "vIUcIUcIUc", "n", "amx-fp16")
diff --git a/clang/lib/Headers/cmpccxaddintrin.h b/clang/lib/Headers/cmpccxaddintrin.h
index 6957498996c89b..0076c402f5ffc9 100644
--- a/clang/lib/Headers/cmpccxaddintrin.h
+++ b/clang/lib/Headers/cmpccxaddintrin.h
@@ -63,7 +63,7 @@ typedef enum {
(int)(__D))))
#define _cmpccxadd_epi64(__A, __B, __C, __D) \
- ((long long)(__builtin_ia32_cmpccxadd64((void *)(__A), (long long)(__B), \
+ ((long long)(__builtin_ia32_cmpccxadd64((__A), (long long)(__B), \
(long long)(__C), (int)(__D))))
#endif // __x86_64__
diff --git a/clang/test/CodeGen/X86/cmpccxadd-builtins-error.c b/clang/test/CodeGen/X86/cmpccxadd-builtins-error.c
index 8d9ca671f30f8f..e30fc4f46aa506 100644
--- a/clang/test/CodeGen/X86/cmpccxadd-builtins-error.c
+++ b/clang/test/CodeGen/X86/cmpccxadd-builtins-error.c
@@ -1,5 +1,5 @@
// RUN: %clang_cc1 %s -ffreestanding -triple=x86_64-unknown-unknown \
-// RUN: -target-feature +cmpccxadd -fsyntax-only -verify
+// RUN: -target-feature +cmpccxadd -fsyntax-only -Werror -verify
#include <immintrin.h>
@@ -10,3 +10,7 @@ int test_cmpccxadd32(void *__A, int __B, int __C) {
long long test_cmpccxadd64(void *__A, long long __B, long long __C) {
return _cmpccxadd_epi64(__A, __B, __C, 16); // expected-error {{argument value 16 is outside the valid range [0, 15]}}
}
+
+long long test_cmpccxadd64_2(int *__A, long long __B, long long __C) {
+ return _cmpccxadd_epi64(__A, __B, __C, 3); // expected-error {{incompatible pointer types passing 'int *' to parameter of type 'long long *'}}
+}
>From f1153692284748c620ef26992b6947140aa690d2 Mon Sep 17 00:00:00 2001
From: Freddy Ye <freddy.ye at intel.com>
Date: Thu, 31 Oct 2024 16:00:01 +0800
Subject: [PATCH 2/2] address comments
---
clang/test/CodeGen/X86/cmpccxadd-builtins-error.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/clang/test/CodeGen/X86/cmpccxadd-builtins-error.c b/clang/test/CodeGen/X86/cmpccxadd-builtins-error.c
index e30fc4f46aa506..f7ecf12d0becfa 100644
--- a/clang/test/CodeGen/X86/cmpccxadd-builtins-error.c
+++ b/clang/test/CodeGen/X86/cmpccxadd-builtins-error.c
@@ -1,5 +1,5 @@
// RUN: %clang_cc1 %s -ffreestanding -triple=x86_64-unknown-unknown \
-// RUN: -target-feature +cmpccxadd -fsyntax-only -Werror -verify
+// RUN: -target-feature +cmpccxadd -fsyntax-only -verify
#include <immintrin.h>
@@ -12,5 +12,5 @@ long long test_cmpccxadd64(void *__A, long long __B, long long __C) {
}
long long test_cmpccxadd64_2(int *__A, long long __B, long long __C) {
- return _cmpccxadd_epi64(__A, __B, __C, 3); // expected-error {{incompatible pointer types passing 'int *' to parameter of type 'long long *'}}
+ return _cmpccxadd_epi64(__A, __B, __C, 3); // expected-warning {{incompatible pointer types passing 'int *' to parameter of type 'long long *'}}
}
More information about the cfe-commits
mailing list