https://github.com/bursow updated https://github.com/llvm/llvm-project/pull/156260
>From 96b664cb2f16fc8ad29d0273cc62be906afb2491 Mon Sep 17 00:00:00 2001 From: Burhan <sega...@hotmail.com> Date: Sun, 31 Aug 2025 21:14:20 +0300 Subject: [PATCH 1/3] [X86] Update BMI, BMI2 and TBM constexpr tests Update constexpr tests in these files to use the TEST_CONSTEXPR helper macro for clarity and consistency. --- clang/test/CodeGen/X86/bmi-builtins.c | 117 +++++++++++++------------ clang/test/CodeGen/X86/bmi2-builtins.c | 61 ++++++------- clang/test/CodeGen/X86/tbm-builtins.c | 49 ++++++----- 3 files changed, 115 insertions(+), 112 deletions(-) diff --git a/clang/test/CodeGen/X86/bmi-builtins.c b/clang/test/CodeGen/X86/bmi-builtins.c index ded40ca59781e..ffbc1da3000cc 100644 --- a/clang/test/CodeGen/X86/bmi-builtins.c +++ b/clang/test/CodeGen/X86/bmi-builtins.c @@ -5,6 +5,7 @@ #include <immintrin.h> +#include <builtin_test_helpers.h> // NOTE: This should match the tests in llvm/test/CodeGen/X86/bmi-intrinsics-fast-isel.ll @@ -237,85 +238,85 @@ unsigned long long test_blsr_u64(unsigned long long __X) { // Test constexpr handling. #if defined(__cplusplus) && (__cplusplus >= 201103L) -char andnu32[__andn_u32(0x01234567, 0xFECDBA98) == (~0x01234567 & 0xFECDBA98) ? 1 : -1]; -char andn2u32[_andn_u32(0x01234567, 0xFECDBA98) == (~0x01234567 & 0xFECDBA98) ? 1 : -1]; +TEST_CONSTEXPR(__andn_u32(0x01234567, 0xFECDBA98) == (~0x01234567 & 0xFECDBA98)); +TEST_CONSTEXPR(_andn_u32(0x01234567, 0xFECDBA98) == (~0x01234567 & 0xFECDBA98)); -char bextr32_0[__bextr_u32(0x00000000, 0x00000000) == 0x00000000 ? 1 : -1]; -char bextr32_1[__bextr_u32(0x000003F0, 0xFFFF1004) == 0x0000003F ? 1 : -1]; -char bextr32_2[__bextr_u32(0x000003F0, 0xFFFF3008) == 0x00000003 ? 1 : -1]; +TEST_CONSTEXPR(__bextr_u32(0x00000000, 0x00000000) == 0x00000000); +TEST_CONSTEXPR(__bextr_u32(0x000003F0, 0xFFFF1004) == 0x0000003F); +TEST_CONSTEXPR(__bextr_u32(0x000003F0, 0xFFFF3008) == 0x00000003); -char bextr32_3[_bextr2_u32(0x00000000, 0x00000000) == 0x00000000 ? 1 : -1]; -char bextr32_4[_bextr2_u32(0x000003F0, 0xFFFF1004) == 0x0000003F ? 1 : -1]; -char bextr32_5[_bextr2_u32(0x000003F0, 0xFFFF3008) == 0x00000003 ? 1 : -1]; +TEST_CONSTEXPR(_bextr2_u32(0x00000000, 0x00000000) == 0x00000000); +TEST_CONSTEXPR(_bextr2_u32(0x000003F0, 0xFFFF1004) == 0x0000003F); +TEST_CONSTEXPR(_bextr2_u32(0x000003F0, 0xFFFF3008) == 0x00000003); -char bextr32_6[_bextr_u32(0x00000000, 0x00000000, 0x00000000) == 0x00000000 ? 1 : -1]; -char bextr32_7[_bextr_u32(0x000003F0, 0xFFFFFF04, 0xFFFFFF10) == 0x0000003F ? 1 : -1]; -char bextr32_8[_bextr_u32(0x000003F0, 0xFFFFFF08, 0xFFFFFF30) == 0x00000003 ? 1 : -1]; +TEST_CONSTEXPR(_bextr_u32(0x00000000, 0x00000000, 0x00000000) == 0x00000000); +TEST_CONSTEXPR(_bextr_u32(0x000003F0, 0xFFFFFF04, 0xFFFFFF10) == 0x0000003F); +TEST_CONSTEXPR(_bextr_u32(0x000003F0, 0xFFFFFF08, 0xFFFFFF30) == 0x00000003); -char blsiu32[__blsi_u32(0x89ABCDEF) == (0x89ABCDEF & -0x89ABCDEF) ? 1 : -1]; -char blsi2u32[_blsi_u32(0x89ABCDEF) == (0x89ABCDEF & -0x89ABCDEF) ? 1 : -1]; +TEST_CONSTEXPR(__blsi_u32(0x89ABCDEF) == (0x89ABCDEF & -0x89ABCDEF)); +TEST_CONSTEXPR(_blsi_u32(0x89ABCDEF) == (0x89ABCDEF & -0x89ABCDEF)); -char blsmasku32[__blsmsk_u32(0x89ABCDEF) == (0x89ABCDEF ^ (0x89ABCDEF - 1)) ? 1 : -1]; -char blsmask2u32[_blsmsk_u32(0x89ABCDEF) == (0x89ABCDEF ^ (0x89ABCDEF - 1)) ? 1 : -1]; +TEST_CONSTEXPR(__blsmsk_u32(0x89ABCDEF) == (0x89ABCDEF ^ (0x89ABCDEF - 1))); +TEST_CONSTEXPR(_blsmsk_u32(0x89ABCDEF) == (0x89ABCDEF ^ (0x89ABCDEF - 1))); -char blsru32[__blsr_u32(0x89ABCDEF) == (0x89ABCDEF & (0x89ABCDEF - 1)) ? 1 : -1]; -char blsr2u32[_blsr_u32(0x89ABCDEF) == (0x89ABCDEF & (0x89ABCDEF - 1)) ? 1 : -1]; +TEST_CONSTEXPR(__blsr_u32(0x89ABCDEF) == (0x89ABCDEF & (0x89ABCDEF - 1))); +TEST_CONSTEXPR(_blsr_u32(0x89ABCDEF) == (0x89ABCDEF & (0x89ABCDEF - 1))); -char tzcntu16_0[__tzcnt_u16(0x0000) == 16 ? 1 : -1]; -char tzcntu16_1[__tzcnt_u16(0x0001) == 0 ? 1 : -1]; -char tzcntu16_2[__tzcnt_u16(0x0010) == 4 ? 1 : -1]; +TEST_CONSTEXPR(__tzcnt_u16(0x0000) == 16); +TEST_CONSTEXPR(__tzcnt_u16(0x0001) == 0); +TEST_CONSTEXPR(__tzcnt_u16(0x0010) == 4); -char tzcnt2u16_0[_tzcnt_u16(0x0000) == 16 ? 1 : -1]; -char tzcnt2u16_1[_tzcnt_u16(0x0001) == 0 ? 1 : -1]; -char tzcnt2u16_2[_tzcnt_u16(0x0010) == 4 ? 1 : -1]; +TEST_CONSTEXPR(_tzcnt_u16(0x0000) == 16); +TEST_CONSTEXPR(_tzcnt_u16(0x0001) == 0); +TEST_CONSTEXPR(_tzcnt_u16(0x0010) == 4); -char tzcntu32_0[__tzcnt_u32(0x00000000) == 32 ? 1 : -1]; -char tzcntu32_1[__tzcnt_u32(0x00000001) == 0 ? 1 : -1]; -char tzcntu32_2[__tzcnt_u32(0x00000080) == 7 ? 1 : -1]; +TEST_CONSTEXPR(__tzcnt_u32(0x00000000) == 32); +TEST_CONSTEXPR(__tzcnt_u32(0x00000001) == 0); +TEST_CONSTEXPR(__tzcnt_u32(0x00000080) == 7); -char tzcnt2u32_0[_tzcnt_u32(0x00000000) == 32 ? 1 : -1]; -char tzcnt2u32_1[_tzcnt_u32(0x00000001) == 0 ? 1 : -1]; -char tzcnt2u32_2[_tzcnt_u32(0x00000080) == 7 ? 1 : -1]; +TEST_CONSTEXPR(_tzcnt_u32(0x00000000) == 32); +TEST_CONSTEXPR(_tzcnt_u32(0x00000001) == 0); +TEST_CONSTEXPR(_tzcnt_u32(0x00000080) == 7); -char tzcnt3u32_0[_mm_tzcnt_32(0x00000000) == 32 ? 1 : -1]; -char tzcnt3u32_1[_mm_tzcnt_32(0x00000001) == 0 ? 1 : -1]; -char tzcnt3u32_2[_mm_tzcnt_32(0x00000080) == 7 ? 1 : -1]; +TEST_CONSTEXPR(_mm_tzcnt_32(0x00000000) == 32); +TEST_CONSTEXPR(_mm_tzcnt_32(0x00000001) == 0); +TEST_CONSTEXPR(_mm_tzcnt_32(0x00000080) == 7); #ifdef __x86_64__ -char andnu64[__andn_u64(0x0123456789ABCDEFULL, 0xFECDBA9876543210ULL) == (~0x0123456789ABCDEFULL & 0xFECDBA9876543210ULL) ? 1 : -1]; -char andn2u64[_andn_u64(0x0123456789ABCDEFULL, 0xFECDBA9876543210ULL) == (~0x0123456789ABCDEFULL & 0xFECDBA9876543210ULL) ? 1 : -1]; +TEST_CONSTEXPR(__andn_u64(0x0123456789ABCDEFULL, 0xFECDBA9876543210ULL) == (~0x0123456789ABCDEFULL & 0xFECDBA9876543210ULL)); +TEST_CONSTEXPR(_andn_u64(0x0123456789ABCDEFULL, 0xFECDBA9876543210ULL) == (~0x0123456789ABCDEFULL & 0xFECDBA9876543210ULL)); -char bextr64_0[__bextr_u64(0x0000000000000000ULL, 0x0000000000000000ULL) == 0x0000000000000000ULL ? 1 : -1]; -char bextr64_1[__bextr_u64(0xF000000000000001ULL, 0x0000000000004001ULL) == 0x7800000000000000ULL ? 1 : -1]; -char bextr64_2[__bextr_u64(0xF000000000000001ULL, 0xFFFFFFFFFFFF1001ULL) == 0x0000000000000000ULL ? 1 : -1]; +TEST_CONSTEXPR(__bextr_u64(0x0000000000000000ULL, 0x0000000000000000ULL) == 0x0000000000000000ULL); +TEST_CONSTEXPR(__bextr_u64(0xF000000000000001ULL, 0x0000000000004001ULL) == 0x7800000000000000ULL); +TEST_CONSTEXPR(__bextr_u64(0xF000000000000001ULL, 0xFFFFFFFFFFFF1001ULL) == 0x0000000000000000ULL); -char bextr64_3[_bextr2_u64(0x0000000000000000ULL, 0x0000000000000000ULL) == 0x0000000000000000ULL ? 1 : -1]; -char bextr64_4[_bextr2_u64(0xF000000000000001ULL, 0x0000000000004001ULL) == 0x7800000000000000ULL ? 1 : -1]; -char bextr64_5[_bextr2_u64(0xF000000000000001ULL, 0xFFFFFFFFFFFF1001ULL) == 0x0000000000000000ULL ? 1 : -1]; +TEST_CONSTEXPR(_bextr2_u64(0x0000000000000000ULL, 0x0000000000000000ULL) == 0x0000000000000000ULL); +TEST_CONSTEXPR(_bextr2_u64(0xF000000000000001ULL, 0x0000000000004001ULL) == 0x7800000000000000ULL); +TEST_CONSTEXPR(_bextr2_u64(0xF000000000000001ULL, 0xFFFFFFFFFFFF1001ULL) == 0x0000000000000000ULL); -char bextr64_6[_bextr_u64(0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL) == 0x0000000000000000ULL ? 1 : -1]; -char bextr64_7[_bextr_u64(0xF000000000000001ULL, 0x0000000000000001ULL, 0x0000000000000040ULL) == 0x7800000000000000ULL ? 1 : -1]; -char bextr64_8[_bextr_u64(0xF000000000000001ULL, 0xFFFFFFFFFFFFFF01ULL, 0xFFFFFFFFFFFFFF10ULL) == 0x0000000000000000ULL ? 1 : -1]; +TEST_CONSTEXPR(_bextr_u64(0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL) == 0x0000000000000000ULL); +TEST_CONSTEXPR(_bextr_u64(0xF000000000000001ULL, 0x0000000000000001ULL, 0x0000000000000040ULL) == 0x7800000000000000ULL); +TEST_CONSTEXPR(_bextr_u64(0xF000000000000001ULL, 0xFFFFFFFFFFFFFF01ULL, 0xFFFFFFFFFFFFFF10ULL) == 0x0000000000000000ULL); -char blsiu64[__blsi_u64(0x0123456789ABCDEFULL) == (0x0123456789ABCDEFULL & -0x0123456789ABCDEFULL) ? 1 : -1]; -char blsi2u64[_blsi_u64(0x0123456789ABCDEFULL) == (0x0123456789ABCDEFULL & -0x0123456789ABCDEFULL) ? 1 : -1]; +TEST_CONSTEXPR(__blsi_u64(0x0123456789ABCDEFULL) == (0x0123456789ABCDEFULL & -0x0123456789ABCDEFULL)); +TEST_CONSTEXPR(_blsi_u64(0x0123456789ABCDEFULL) == (0x0123456789ABCDEFULL & -0x0123456789ABCDEFULL)); -char blsmasku64[__blsmsk_u64(0x0123456789ABCDEFULL) == (0x0123456789ABCDEFULL ^ (0x0123456789ABCDEFULL - 1)) ? 1 : -1]; -char blsmask2u64[_blsmsk_u64(0x0123456789ABCDEFULL) == (0x0123456789ABCDEFULL ^ (0x0123456789ABCDEFULL - 1)) ? 1 : -1]; +TEST_CONSTEXPR(__blsmsk_u64(0x0123456789ABCDEFULL) == (0x0123456789ABCDEFULL ^ (0x0123456789ABCDEFULL - 1))); +TEST_CONSTEXPR(_blsmsk_u64(0x0123456789ABCDEFULL) == (0x0123456789ABCDEFULL ^ (0x0123456789ABCDEFULL - 1))); -char blsru64[__blsr_u64(0x0123456789ABCDEFULL) == (0x0123456789ABCDEFULL & (0x0123456789ABCDEFULL - 1)) ? 1 : -1]; -char blsr2u64[_blsr_u64(0x0123456789ABCDEFULL) == (0x0123456789ABCDEFULL & (0x0123456789ABCDEFULL - 1)) ? 1 : -1]; +TEST_CONSTEXPR(__blsr_u64(0x0123456789ABCDEFULL) == (0x0123456789ABCDEFULL & (0x0123456789ABCDEFULL - 1))); +TEST_CONSTEXPR(_blsr_u64(0x0123456789ABCDEFULL) == (0x0123456789ABCDEFULL & (0x0123456789ABCDEFULL - 1))); -char tzcntu64_0[__tzcnt_u64(0x0000000000000000ULL) == 64 ? 1 : -1]; -char tzcntu64_1[__tzcnt_u64(0x0000000000000001ULL) == 0 ? 1 : -1]; -char tzcntu64_2[__tzcnt_u64(0x0000000800000000ULL) == 35 ? 1 : -1]; +TEST_CONSTEXPR(__tzcnt_u64(0x0000000000000000ULL) == 64); +TEST_CONSTEXPR(__tzcnt_u64(0x0000000000000001ULL) == 0); +TEST_CONSTEXPR(__tzcnt_u64(0x0000000800000000ULL) == 35); -char tzcnt2u64_0[_tzcnt_u64(0x0000000000000000ULL) == 64 ? 1 : -1]; -char tzcnt2u64_1[_tzcnt_u64(0x0000000000000001ULL) == 0 ? 1 : -1]; -char tzcnt2u64_2[_tzcnt_u64(0x0000000800000000ULL) == 35 ? 1 : -1]; +TEST_CONSTEXPR(_tzcnt_u64(0x0000000000000000ULL) == 64); +TEST_CONSTEXPR(_tzcnt_u64(0x0000000000000001ULL) == 0); +TEST_CONSTEXPR(_tzcnt_u64(0x0000000800000000ULL) == 35); -char tzcnt3u64_0[_mm_tzcnt_64(0x0000000000000000ULL) == 64 ? 1 : -1]; -char tzcnt3u64_1[_mm_tzcnt_64(0x0000000000000001ULL) == 0 ? 1 : -1]; -char tzcnt3u64_2[_mm_tzcnt_64(0x0000000800000000ULL) == 35 ? 1 : -1]; +TEST_CONSTEXPR(_mm_tzcnt_64(0x0000000000000000ULL) == 64); +TEST_CONSTEXPR(_mm_tzcnt_64(0x0000000000000001ULL) == 0); +TEST_CONSTEXPR(_mm_tzcnt_64(0x0000000800000000ULL) == 35); #endif #endif \ No newline at end of file diff --git a/clang/test/CodeGen/X86/bmi2-builtins.c b/clang/test/CodeGen/X86/bmi2-builtins.c index 48424f553768b..629fa9aed2ae2 100644 --- a/clang/test/CodeGen/X86/bmi2-builtins.c +++ b/clang/test/CodeGen/X86/bmi2-builtins.c @@ -5,6 +5,7 @@ #include <immintrin.h> +#include "builtin_test_helpers.h" unsigned int test_bzhi_u32(unsigned int __X, unsigned int __Y) { // CHECK: @llvm.x86.bmi.bzhi.32 @@ -54,22 +55,22 @@ unsigned long long test_mulx_u64(unsigned long long __X, unsigned long long __Y, // Test constexpr handling. #if defined(__cplusplus) && (__cplusplus >= 201103L) -char bzhi32_0[_bzhi_u32(0x89ABCDEF, 0) == 0x00000000 ? 1 : -1]; -char bzhi32_1[_bzhi_u32(0x89ABCDEF, 16) == 0x0000CDEF ? 1 : -1]; -char bzhi32_2[_bzhi_u32(0x89ABCDEF, 31) == 0x09ABCDEF ? 1 : -1]; -char bzhi32_3[_bzhi_u32(0x89ABCDEF, 32) == 0x89ABCDEF ? 1 : -1]; -char bzhi32_4[_bzhi_u32(0x89ABCDEF, 99) == 0x89ABCDEF ? 1 : -1]; -char bzhi32_5[_bzhi_u32(0x89ABCDEF, 260) == 0x0000000F ? 1 : -1]; - -char pdep32_0[_pdep_u32(0x89ABCDEF, 0x00000000) == 0x00000000 ? 1 : -1]; -char pdep32_1[_pdep_u32(0x89ABCDEF, 0x000000F0) == 0x000000F0 ? 1 : -1]; -char pdep32_2[_pdep_u32(0x89ABCDEF, 0xF00000F0) == 0xE00000F0 ? 1 : -1]; -char pdep32_3[_pdep_u32(0x89ABCDEF, 0xFFFFFFFF) == 0x89ABCDEF ? 1 : -1]; - -char pext32_0[_pext_u32(0x89ABCDEF, 0x00000000) == 0x00000000 ? 1 : -1]; -char pext32_1[_pext_u32(0x89ABCDEF, 0x000000F0) == 0x0000000E ? 1 : -1]; -char pext32_2[_pext_u32(0x89ABCDEF, 0xF00000F0) == 0x0000008E ? 1 : -1]; -char pext32_3[_pext_u32(0x89ABCDEF, 0xFFFFFFFF) == 0x89ABCDEF ? 1 : -1]; +TEST_CONSTEXPR(_bzhi_u32(0x89ABCDEF, 0) == 0x00000000); +TEST_CONSTEXPR(_bzhi_u32(0x89ABCDEF, 16) == 0x0000CDEF); +TEST_CONSTEXPR(_bzhi_u32(0x89ABCDEF, 31) == 0x09ABCDEF); +TEST_CONSTEXPR(_bzhi_u32(0x89ABCDEF, 32) == 0x89ABCDEF); +TEST_CONSTEXPR(_bzhi_u32(0x89ABCDEF, 99) == 0x89ABCDEF); +TEST_CONSTEXPR(_bzhi_u32(0x89ABCDEF, 260) == 0x0000000F); + +TEST_CONSTEXPR(_pdep_u32(0x89ABCDEF, 0x00000000) == 0x00000000); +TEST_CONSTEXPR(_pdep_u32(0x89ABCDEF, 0x000000F0) == 0x000000F0); +TEST_CONSTEXPR(_pdep_u32(0x89ABCDEF, 0xF00000F0) == 0xE00000F0); +TEST_CONSTEXPR(_pdep_u32(0x89ABCDEF, 0xFFFFFFFF) == 0x89ABCDEF); + +TEST_CONSTEXPR(_pext_u32(0x89ABCDEF, 0x00000000) == 0x00000000); +TEST_CONSTEXPR(_pext_u32(0x89ABCDEF, 0x000000F0) == 0x0000000E); +TEST_CONSTEXPR(_pext_u32(0x89ABCDEF, 0xF00000F0) == 0x0000008E); +TEST_CONSTEXPR(_pext_u32(0x89ABCDEF, 0xFFFFFFFF) == 0x89ABCDEF); constexpr unsigned long long test_mulx_u32(unsigned int X, unsigned int Y) @@ -84,20 +85,20 @@ void mulxu32() { } #ifdef __x86_64__ -char bzhi64_0[_bzhi_u64(0x0123456789ABCDEFULL, 0) == 0x0000000000000000ULL ? 1 : -1]; -char bzhi64_1[_bzhi_u64(0x0123456789ABCDEFULL, 32) == 0x0000000089ABCDEFULL ? 1 : -1]; -char bzhi64_2[_bzhi_u64(0x0123456789ABCDEFULL, 99) == 0x0123456789ABCDEFULL ? 1 : -1]; -char bzhi64_3[_bzhi_u64(0x0123456789ABCDEFULL, 520) == 0x00000000000000EFULL ? 1 : -1]; - -char pdep64_0[_pdep_u64(0x0123456789ABCDEFULL, 0x0000000000000000ULL) == 0x0000000000000000ULL ? 1 : -1]; -char pdep64_1[_pdep_u64(0x0123456789ABCDEFULL, 0x00000000000000F0ULL) == 0x00000000000000F0ULL ? 1 : -1]; -char pdep64_2[_pdep_u64(0x0123456789ABCDEFULL, 0xF00000F0F00000F0ULL) == 0xC00000D0E00000F0ULL ? 1 : -1]; -char pdep64_3[_pdep_u64(0x0123456789ABCDEFULL, 0xFFFFFFFFFFFFFFFFULL) == 0x0123456789ABCDEFULL ? 1 : -1]; - -char pext64_0[_pext_u64(0x0123456789ABCDEFULL, 0x0000000000000000ULL) == 0x0000000000000000ULL ? 1 : -1]; -char pext64_1[_pext_u64(0x0123456789ABCDEFULL, 0x00000000000000F0ULL) == 0x000000000000000EULL ? 1 : -1]; -char pext64_2[_pext_u64(0x0123456789ABCDEFULL, 0xF00000F0F00000F0ULL) == 0x000000000000068EULL ? 1 : -1]; -char pext64_3[_pext_u64(0x0123456789ABCDEFULL, 0xFFFFFFFFFFFFFFFFULL) == 0x0123456789ABCDEFULL ? 1 : -1]; +TEST_CONSTEXPR(_bzhi_u64(0x0123456789ABCDEFULL, 0) == 0x0000000000000000ULL); +TEST_CONSTEXPR(_bzhi_u64(0x0123456789ABCDEFULL, 32) == 0x0000000089ABCDEFULL); +TEST_CONSTEXPR(_bzhi_u64(0x0123456789ABCDEFULL, 99) == 0x0123456789ABCDEFULL); +TEST_CONSTEXPR(_bzhi_u64(0x0123456789ABCDEFULL, 520) == 0x00000000000000EFULL); + +TEST_CONSTEXPR(_pdep_u64(0x0123456789ABCDEFULL, 0x0000000000000000ULL) == 0x0000000000000000ULL); +TEST_CONSTEXPR(_pdep_u64(0x0123456789ABCDEFULL, 0x00000000000000F0ULL) == 0x00000000000000F0ULL); +TEST_CONSTEXPR(_pdep_u64(0x0123456789ABCDEFULL, 0xF00000F0F00000F0ULL) == 0xC00000D0E00000F0ULL); +TEST_CONSTEXPR(_pdep_u64(0x0123456789ABCDEFULL, 0xFFFFFFFFFFFFFFFFULL) == 0x0123456789ABCDEFULL); + +TEST_CONSTEXPR(_pext_u64(0x0123456789ABCDEFULL, 0x0000000000000000ULL) == 0x0000000000000000ULL); +TEST_CONSTEXPR(_pext_u64(0x0123456789ABCDEFULL, 0x00000000000000F0ULL) == 0x000000000000000EULL); +TEST_CONSTEXPR(_pext_u64(0x0123456789ABCDEFULL, 0xF00000F0F00000F0ULL) == 0x000000000000068EULL); +TEST_CONSTEXPR(_pext_u64(0x0123456789ABCDEFULL, 0xFFFFFFFFFFFFFFFFULL) == 0x0123456789ABCDEFULL); constexpr unsigned __int128 test_mulx_u64(unsigned long long X, unsigned long long Y) diff --git a/clang/test/CodeGen/X86/tbm-builtins.c b/clang/test/CodeGen/X86/tbm-builtins.c index d916627a23f57..43b4c43377837 100644 --- a/clang/test/CodeGen/X86/tbm-builtins.c +++ b/clang/test/CodeGen/X86/tbm-builtins.c @@ -2,6 +2,7 @@ // RUN: %clang_cc1 -x c++ -std=c++11 -ffreestanding %s -triple=x86_64-unknown-unknown -target-feature +tbm -emit-llvm -o - | FileCheck %s #include <x86intrin.h> +#include "builtin_test_helpers.h" // NOTE: This should match the tests in llvm/test/CodeGen/X86/tbm-intrinsics-fast-isel.ll @@ -181,31 +182,31 @@ unsigned long long test__tzmsk_u64(unsigned long long a) { // Test constexpr handling. #if defined(__cplusplus) && (__cplusplus >= 201103L) -char bextri32_0[__bextri_u32(0x00000000, 0x00000000) == 0x00000000 ? 1 : -1]; -char bextri32_1[__bextri_u32(0x000003F0, 0xFFFF1004) == 0x0000003F ? 1 : -1]; -char bextri32_2[__bextri_u32(0x000003F0, 0xFFFF3008) == 0x00000003 ? 1 : -1]; - -char blcfill32[__blcfill_u32(0x89ABCDEF) == (0x89ABCDEF & (0x89ABCDEF + 1)) ? 1 : -1]; -char blci32[__blci_u32(0x89ABCDEF) == (0x89ABCDEF | ~(0x89ABCDEF + 1)) ? 1 : -1]; -char blcmsk32[__blcmsk_u32(0x89ABCDEF) == (0x89ABCDEF ^ (0x89ABCDEF + 1)) ? 1 : -1]; -char blcs32[__blcs_u32(0x89ABCDEF) == (0x89ABCDEF | (0x89ABCDEF + 1)) ? 1 : -1]; -char blsfill32[__blsfill_u32(0x89ABCDEF) == (0x89ABCDEF | (0x89ABCDEF - 1)) ? 1 : -1]; -char blsic32[__blsic_u32(0x89ABCDEF) == (~0x89ABCDEF | (0x89ABCDEF - 1)) ? 1 : -1]; -char t1mskc32[__t1mskc_u32(0x89ABCDEF) == (~0x89ABCDEF | (0x89ABCDEF + 1)) ? 1 : -1]; -char tzmsk32[__tzmsk_u32(0x89ABCDEF) == (~0x89ABCDEF & (0x89ABCDEF - 1)) ? 1 : -1]; +TEST_CONSTEXPR(__bextri_u32(0x00000000, 0x00000000) == 0x00000000); +TEST_CONSTEXPR(__bextri_u32(0x000003F0, 0xFFFF1004) == 0x0000003F); +TEST_CONSTEXPR(__bextri_u32(0x000003F0, 0xFFFF3008) == 0x00000003); + +TEST_CONSTEXPR(__blcfill_u32(0x89ABCDEF) == (0x89ABCDEF & (0x89ABCDEF + 1))); +TEST_CONSTEXPR(__blci_u32(0x89ABCDEF) == (0x89ABCDEF | ~(0x89ABCDEF + 1))); +TEST_CONSTEXPR(__blcmsk_u32(0x89ABCDEF) == (0x89ABCDEF ^ (0x89ABCDEF + 1))); +TEST_CONSTEXPR(__blcs_u32(0x89ABCDEF) == (0x89ABCDEF | (0x89ABCDEF + 1))); +TEST_CONSTEXPR(__blsfill_u32(0x89ABCDEF) == (0x89ABCDEF | (0x89ABCDEF - 1))); +TEST_CONSTEXPR(__blsic_u32(0x89ABCDEF) == (~0x89ABCDEF | (0x89ABCDEF - 1))); +TEST_CONSTEXPR(__t1mskc_u32(0x89ABCDEF) == (~0x89ABCDEF | (0x89ABCDEF + 1))); +TEST_CONSTEXPR(__tzmsk_u32(0x89ABCDEF) == (~0x89ABCDEF & (0x89ABCDEF - 1))); #ifdef __x86_64__ -char bextri64_0[__bextri_u64(0x0000000000000000ULL, 0x0000000000000000ULL) == 0x0000000000000000ULL ? 1 : -1]; -char bextri64_1[__bextri_u64(0xF000000000000001ULL, 0x0000000000004001ULL) == 0x7800000000000000ULL ? 1 : -1]; -char bextri64_2[__bextri_u64(0xF000000000000001ULL, 0xFFFFFFFFFFFF1001ULL) == 0x0000000000000000ULL ? 1 : -1]; - -char blcfill64[__blcfill_u64(0xFEDCBA9876543210) == (0xFEDCBA9876543210 & (0xFEDCBA9876543210 + 1)) ? 1 : -1]; -char blci64[__blci_u64(0xFEDCBA9876543210) == (0xFEDCBA9876543210 | ~(0xFEDCBA9876543210 + 1)) ? 1 : -1]; -char blcmsk64[__blcmsk_u64(0xFEDCBA9876543210) == (0xFEDCBA9876543210 ^ (0xFEDCBA9876543210 + 1)) ? 1 : -1]; -char blcs64[__blcs_u64(0xFEDCBA9876543210) == (0xFEDCBA9876543210 | (0xFEDCBA9876543210 + 1)) ? 1 : -1]; -char blsfill64[__blsfill_u64(0xFEDCBA9876543210) == (0xFEDCBA9876543210 | (0xFEDCBA9876543210 - 1)) ? 1 : -1]; -char blsic64[__blsic_u64(0xFEDCBA9876543210) == (~0xFEDCBA9876543210 | (0xFEDCBA9876543210 - 1)) ? 1 : -1]; -char t1mskc64[__t1mskc_u64(0xFEDCBA9876543210) == (~0xFEDCBA9876543210 | (0xFEDCBA9876543210 + 1)) ? 1 : -1]; -char tzmsk64[__tzmsk_u64(0xFEDCBA9876543210) == (~0xFEDCBA9876543210 & (0xFEDCBA9876543210 - 1)) ? 1 : -1]; +TEST_CONSTEXPR(__bextri_u64(0x0000000000000000ULL, 0x0000000000000000ULL) == 0x0000000000000000ULL); +TEST_CONSTEXPR(__bextri_u64(0xF000000000000001ULL, 0x0000000000004001ULL) == 0x7800000000000000ULL); +TEST_CONSTEXPR(__bextri_u64(0xF000000000000001ULL, 0xFFFFFFFFFFFF1001ULL) == 0x0000000000000000ULL); + +TEST_CONSTEXPR(__blcfill_u64(0xFEDCBA9876543210ULL) == (0xFEDCBA9876543210ULL & (0xFEDCBA9876543210ULL + 1))); +TEST_CONSTEXPR(__blci_u64(0xFEDCBA9876543210ULL) == (0xFEDCBA9876543210ULL | ~(0xFEDCBA9876543210ULL + 1))); +TEST_CONSTEXPR(__blcmsk_u64(0xFEDCBA9876543210ULL) == (0xFEDCBA9876543210ULL ^ (0xFEDCBA9876543210ULL + 1))); +TEST_CONSTEXPR(__blcs_u64(0xFEDCBA9876543210ULL) == (0xFEDCBA9876543210ULL | (0xFEDCBA9876543210ULL + 1))); +TEST_CONSTEXPR(__blsfill_u64(0xFEDCBA9876543210ULL) == (0xFEDCBA9876543210ULL | (0xFEDCBA9876543210ULL - 1))); +TEST_CONSTEXPR(__blsic_u64(0xFEDCBA9876543210ULL) == (~0xFEDCBA9876543210ULL | (0xFEDCBA9876543210ULL - 1))); +TEST_CONSTEXPR(__t1mskc_u64(0xFEDCBA9876543210ULL) == (~0xFEDCBA9876543210ULL | (0xFEDCBA9876543210ULL + 1))); +TEST_CONSTEXPR(__tzmsk_u64(0xFEDCBA9876543210ULL) == (~0xFEDCBA9876543210ULL & (0xFEDCBA9876543210ULL - 1))); #endif #endif >From b6f2164ca2f345b90bb78a847cbbf03801e548fd Mon Sep 17 00:00:00 2001 From: Burhan <sega...@hotmail.com> Date: Sun, 31 Aug 2025 21:47:31 +0300 Subject: [PATCH 2/3] Fix: Use double quotes for builtin_test_helpers.h include --- clang/test/CodeGen/X86/bmi-builtins.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/test/CodeGen/X86/bmi-builtins.c b/clang/test/CodeGen/X86/bmi-builtins.c index ffbc1da3000cc..a68853f595f9d 100644 --- a/clang/test/CodeGen/X86/bmi-builtins.c +++ b/clang/test/CodeGen/X86/bmi-builtins.c @@ -5,7 +5,7 @@ #include <immintrin.h> -#include <builtin_test_helpers.h> +#include "builtin_test_helpers.h" // NOTE: This should match the tests in llvm/test/CodeGen/X86/bmi-intrinsics-fast-isel.ll >From 9fd27a5a68e309efaedbe74de7e4830232c2090f Mon Sep 17 00:00:00 2001 From: Burhan <sega...@hotmail.com> Date: Sun, 31 Aug 2025 22:11:29 +0300 Subject: [PATCH 3/3] Fix: builtin_test_helpers.h --- clang/test/CodeGen/X86/builtin_test_helpers.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/test/CodeGen/X86/builtin_test_helpers.h b/clang/test/CodeGen/X86/builtin_test_helpers.h index 2476a2b7c723a..77bb19265d070 100644 --- a/clang/test/CodeGen/X86/builtin_test_helpers.h +++ b/clang/test/CodeGen/X86/builtin_test_helpers.h @@ -290,7 +290,7 @@ constexpr bool match_v64qu(__m512i _v, unsigned char __e00, unsigned char __e01, v[56] == __e56 && v[57] == __e57 && v[58] == __e58 && v[59] == __e59 && v[60] == __e60 && v[61] == __e61 && v[62] == __e62 && v[63] == __e63; } -#define TEST_CONSTEXPR(...) static_assert(__VA_ARGS__) +#define TEST_CONSTEXPR(...) static_assert(__VA_ARGS__, #__VA_ARGS__) #else _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits