[clang] [Clang] Add __builtin_bswapg (PR #162433)

Oliver Hunt via cfe-commits cfe-commits at lists.llvm.org
Sat Oct 18 22:02:28 PDT 2025


================
@@ -0,0 +1,212 @@
+// RUN: %clang_cc1 -fsyntax-only -verify %s
+// RUN: %clang_cc1 -fsyntax-only -verify -fexperimental-new-constant-interpreter %s
+
+void test_basic_type_checks() {
+  static_assert(__is_same(char, decltype(__builtin_bswapg((char)0))), "");
+  static_assert(__is_same(unsigned char, decltype(__builtin_bswapg((unsigned char)0))), "");
+  static_assert(__is_same(short, decltype(__builtin_bswapg((short)0))), "");
+  static_assert(__is_same(unsigned short, decltype(__builtin_bswapg((unsigned short)0))), "");
+  static_assert(__is_same(int, decltype(__builtin_bswapg((int)0))), "");
+  static_assert(__is_same(unsigned int, decltype(__builtin_bswapg((unsigned int)0))), "");
+  static_assert(__is_same(long, decltype(__builtin_bswapg((long)0))), "");
+  static_assert(__is_same(unsigned long, decltype(__builtin_bswapg((unsigned long)0))), "");
+}
+
+template<typename T>
+void test_template_type_check() {
+  static_assert(__is_same(T, decltype(__builtin_bswapg(T{}))), 
+                "bswapg should return the same type as its argument");
+  constexpr T zero{};
+  constexpr T max = ~T{};
+  constexpr T one = T{1};
+    
+  static_assert(__is_same(T, decltype(__builtin_bswapg(zero))), "");
+  static_assert(__is_same(T, decltype(__builtin_bswapg(max))), "");
+  static_assert(__is_same(T, decltype(__builtin_bswapg(one))), "");
+}
+template void test_template_type_check<char>();
+template void test_template_type_check<unsigned char>();
+template void test_template_type_check<short>();
+template void test_template_type_check<unsigned short>();
+template void test_template_type_check<int>();
+template void test_template_type_check<unsigned int>();
+template void test_template_type_check<long>();
+template void test_template_type_check<unsigned long>();
----------------
ojhunt wrote:

BitInts once more :D

https://github.com/llvm/llvm-project/pull/162433


More information about the cfe-commits mailing list