Skip to content

Commit 17c78a2

Browse files
committed
wip: example for generate-in-place macro expansion
Does: - Make it relatively easy to add new permutations and test cases - Document what the macro soup boils down to after it's expanded Does not: - Make the test cases easy to read; this is apparently hard to do without additional post-processing (per https://stackoverflow.com/questions/2271078/how-to-make-g-preprocessor-output-a-newline-in-a-macro/2567304#2567304 ) - Make it easy to understand how to update the test; the `diff -u` output can be piped directly into `patch(1)` for a low-effort update, but getting the `diff -u` output itself is kind of a mess, especially across platforms. It's also using diff & sed instead of more common LLVM test tools (like FileCheck), and that probably has consequences outside the scope of a quick demo too.
1 parent 3b7ec63 commit 17c78a2

File tree

1 file changed

+51
-34
lines changed

1 file changed

+51
-34
lines changed

clang/test/Sema/constant_builtins_vector.cpp

+51-34
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
// RUN: %clang_cc1 -verify -std=c++2a -fsyntax-only %s
2+
// RUN: diff -u <(sed -n '/^[/][*] BEGIN GENERATED/,/^[/][*] END GENERATED/p' %s ) \
3+
// RUN: <(%clang_cc1 -E -CC -DGEN_TESTS %s | sed -n '/^#/d; /[/][*] BEGIN/,$p' )
24
// expected-no-diagnostics
35

6+
#ifndef GEN_TESTS
47
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
58
#define LITTLE_END 1
69
#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
@@ -22,6 +25,52 @@ typedef int vector8int __attribute__((__vector_size__(32)));
2225
typedef short vector8short __attribute__((__vector_size__(16)));
2326
typedef char vector8char __attribute__((__vector_size__(8)));
2427

28+
// Shuffle vector
29+
constexpr vector4char vector4charConst1 = {0, 1, 2, 3};
30+
constexpr vector4char vector4charConst2 = {4, 5, 6, 7};
31+
constexpr vector8char vector8intConst = {8, 9, 10, 11, 12, 13, 14, 15};
32+
33+
constexpr vector4char vectorShuffle1 =
34+
__builtin_shufflevector(vector4charConst1, vector4charConst2, 0, 1, 2, 3);
35+
static_assert(__builtin_bit_cast(unsigned, vectorShuffle1) ==
36+
(LITTLE_END ? 0x03020100 : 0x00010203));
37+
constexpr vector4char vectorShuffle2 =
38+
__builtin_shufflevector(vector4charConst1, vector4charConst2, 4, 5, 6, 7);
39+
static_assert(__builtin_bit_cast(unsigned, vectorShuffle2) ==
40+
(LITTLE_END ? 0x07060504 : 0x04050607));
41+
constexpr vector4char vectorShuffle3 = __builtin_shufflevector(
42+
vector4charConst1, vector4charConst2, -1, -1, -1, -1);
43+
static_assert(__builtin_bit_cast(unsigned, vectorShuffle3) ==
44+
(LITTLE_END ? 0x00000000 : 0x00000000));
45+
constexpr vector4char vectorShuffle4 =
46+
__builtin_shufflevector(vector4charConst1, vector4charConst2, 0, 2, 4, 6);
47+
static_assert(__builtin_bit_cast(unsigned, vectorShuffle4) ==
48+
(LITTLE_END ? 0x06040200 : 0x00020406));
49+
constexpr vector8char vectorShuffle5 = __builtin_shufflevector(
50+
vector8intConst, vector8intConst, 0, 2, 4, 6, 8, 10, 12, 14);
51+
static_assert(__builtin_bit_cast(unsigned long long, vectorShuffle5) ==
52+
(LITTLE_END ? 0x0E0C0A080E0C0A08 : 0x080A0C0E080A0C0E));
53+
constexpr vector4char vectorShuffle6 =
54+
__builtin_shufflevector(vector8intConst, vector8intConst, 0, 2, 4, 6);
55+
static_assert(__builtin_bit_cast(unsigned, vectorShuffle6) ==
56+
(LITTLE_END ? 0x0E0C0A08 : 0x080A0C0E));
57+
constexpr vector8char vectorShuffle7 = __builtin_shufflevector(
58+
vector4charConst1, vector4charConst2, 0, 2, 4, 6, 1, 3, 5, 7);
59+
static_assert(__builtin_bit_cast(unsigned long long, vectorShuffle7) ==
60+
(LITTLE_END ? 0x0705030106040200 : 0x0002040601030507));
61+
62+
/* BEGIN GENERATED TESTS (see below) */
63+
constexpr vector4double from_vector4double_to_vector4double_var = __builtin_convertvector((vector4double){0, 1, 2, 3}, vector4double); constexpr vector4float from_vector4double_to_vector4float_var = __builtin_convertvector((vector4double){0, 1, 2, 3}, vector4float); constexpr vector4long from_vector4double_to_vector4long_var = __builtin_convertvector((vector4double){0, 1, 2, 3}, vector4long); constexpr vector4int from_vector4double_to_vector4int_var = __builtin_convertvector((vector4double){0, 1, 2, 3}, vector4int); constexpr vector4short from_vector4double_to_vector4short_var = __builtin_convertvector((vector4double){0, 1, 2, 3}, vector4short); constexpr vector4char from_vector4double_to_vector4char_var = __builtin_convertvector((vector4double){0, 1, 2, 3}, vector4char); static_assert( __builtin_bit_cast( unsigned, __builtin_shufflevector( from_vector4double_to_vector4char_var, from_vector4double_to_vector4char_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x03020100 : 0x00010203)); static_assert( __builtin_bit_cast( unsigned long long, __builtin_shufflevector( from_vector4double_to_vector4short_var, from_vector4double_to_vector4short_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x0003000200010000 : 0x0000000100020003)); constexpr vector4double from_vector4float_to_vector4double_var = __builtin_convertvector((vector4float){0, 1, 2, 3}, vector4double); constexpr vector4float from_vector4float_to_vector4float_var = __builtin_convertvector((vector4float){0, 1, 2, 3}, vector4float); constexpr vector4long from_vector4float_to_vector4long_var = __builtin_convertvector((vector4float){0, 1, 2, 3}, vector4long); constexpr vector4int from_vector4float_to_vector4int_var = __builtin_convertvector((vector4float){0, 1, 2, 3}, vector4int); constexpr vector4short from_vector4float_to_vector4short_var = __builtin_convertvector((vector4float){0, 1, 2, 3}, vector4short); constexpr vector4char from_vector4float_to_vector4char_var = __builtin_convertvector((vector4float){0, 1, 2, 3}, vector4char); static_assert( __builtin_bit_cast( unsigned, __builtin_shufflevector( from_vector4float_to_vector4char_var, from_vector4float_to_vector4char_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x03020100 : 0x00010203)); static_assert( __builtin_bit_cast( unsigned long long, __builtin_shufflevector( from_vector4float_to_vector4short_var, from_vector4float_to_vector4short_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x0003000200010000 : 0x0000000100020003)); constexpr vector4double from_vector4long_to_vector4double_var = __builtin_convertvector((vector4long){0, 1, 2, 3}, vector4double); constexpr vector4float from_vector4long_to_vector4float_var = __builtin_convertvector((vector4long){0, 1, 2, 3}, vector4float); constexpr vector4long from_vector4long_to_vector4long_var = __builtin_convertvector((vector4long){0, 1, 2, 3}, vector4long); constexpr vector4int from_vector4long_to_vector4int_var = __builtin_convertvector((vector4long){0, 1, 2, 3}, vector4int); constexpr vector4short from_vector4long_to_vector4short_var = __builtin_convertvector((vector4long){0, 1, 2, 3}, vector4short); constexpr vector4char from_vector4long_to_vector4char_var = __builtin_convertvector((vector4long){0, 1, 2, 3}, vector4char); static_assert( __builtin_bit_cast( unsigned, __builtin_shufflevector( from_vector4long_to_vector4char_var, from_vector4long_to_vector4char_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x03020100 : 0x00010203)); static_assert( __builtin_bit_cast( unsigned long long, __builtin_shufflevector( from_vector4long_to_vector4short_var, from_vector4long_to_vector4short_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x0003000200010000 : 0x0000000100020003)); constexpr vector4double from_vector4int_to_vector4double_var = __builtin_convertvector((vector4int){0, 1, 2, 3}, vector4double); constexpr vector4float from_vector4int_to_vector4float_var = __builtin_convertvector((vector4int){0, 1, 2, 3}, vector4float); constexpr vector4long from_vector4int_to_vector4long_var = __builtin_convertvector((vector4int){0, 1, 2, 3}, vector4long); constexpr vector4int from_vector4int_to_vector4int_var = __builtin_convertvector((vector4int){0, 1, 2, 3}, vector4int); constexpr vector4short from_vector4int_to_vector4short_var = __builtin_convertvector((vector4int){0, 1, 2, 3}, vector4short); constexpr vector4char from_vector4int_to_vector4char_var = __builtin_convertvector((vector4int){0, 1, 2, 3}, vector4char); static_assert( __builtin_bit_cast( unsigned, __builtin_shufflevector( from_vector4int_to_vector4char_var, from_vector4int_to_vector4char_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x03020100 : 0x00010203)); static_assert( __builtin_bit_cast( unsigned long long, __builtin_shufflevector( from_vector4int_to_vector4short_var, from_vector4int_to_vector4short_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x0003000200010000 : 0x0000000100020003)); constexpr vector4double from_vector4short_to_vector4double_var = __builtin_convertvector((vector4short){0, 1, 2, 3}, vector4double); constexpr vector4float from_vector4short_to_vector4float_var = __builtin_convertvector((vector4short){0, 1, 2, 3}, vector4float); constexpr vector4long from_vector4short_to_vector4long_var = __builtin_convertvector((vector4short){0, 1, 2, 3}, vector4long); constexpr vector4int from_vector4short_to_vector4int_var = __builtin_convertvector((vector4short){0, 1, 2, 3}, vector4int); constexpr vector4short from_vector4short_to_vector4short_var = __builtin_convertvector((vector4short){0, 1, 2, 3}, vector4short); constexpr vector4char from_vector4short_to_vector4char_var = __builtin_convertvector((vector4short){0, 1, 2, 3}, vector4char); static_assert( __builtin_bit_cast( unsigned, __builtin_shufflevector( from_vector4short_to_vector4char_var, from_vector4short_to_vector4char_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x03020100 : 0x00010203)); static_assert( __builtin_bit_cast( unsigned long long, __builtin_shufflevector( from_vector4short_to_vector4short_var, from_vector4short_to_vector4short_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x0003000200010000 : 0x0000000100020003)); constexpr vector4double from_vector4char_to_vector4double_var = __builtin_convertvector((vector4char){0, 1, 2, 3}, vector4double); constexpr vector4float from_vector4char_to_vector4float_var = __builtin_convertvector((vector4char){0, 1, 2, 3}, vector4float); constexpr vector4long from_vector4char_to_vector4long_var = __builtin_convertvector((vector4char){0, 1, 2, 3}, vector4long); constexpr vector4int from_vector4char_to_vector4int_var = __builtin_convertvector((vector4char){0, 1, 2, 3}, vector4int); constexpr vector4short from_vector4char_to_vector4short_var = __builtin_convertvector((vector4char){0, 1, 2, 3}, vector4short); constexpr vector4char from_vector4char_to_vector4char_var = __builtin_convertvector((vector4char){0, 1, 2, 3}, vector4char); static_assert( __builtin_bit_cast( unsigned, __builtin_shufflevector( from_vector4char_to_vector4char_var, from_vector4char_to_vector4char_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x03020100 : 0x00010203)); static_assert( __builtin_bit_cast( unsigned long long, __builtin_shufflevector( from_vector4char_to_vector4short_var, from_vector4char_to_vector4short_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x0003000200010000 : 0x0000000100020003));;
64+
constexpr vector8double from_vector8double_to_vector8double_var = __builtin_convertvector((vector8double){0, 1, 2, 3, 4, 5, 6, 7}, vector8double); constexpr vector8float from_vector8double_to_vector8float_var = __builtin_convertvector((vector8double){0, 1, 2, 3, 4, 5, 6, 7}, vector8float); constexpr vector8long from_vector8double_to_vector8long_var = __builtin_convertvector((vector8double){0, 1, 2, 3, 4, 5, 6, 7}, vector8long); constexpr vector8int from_vector8double_to_vector8int_var = __builtin_convertvector((vector8double){0, 1, 2, 3, 4, 5, 6, 7}, vector8int); constexpr vector8short from_vector8double_to_vector8short_var = __builtin_convertvector((vector8double){0, 1, 2, 3, 4, 5, 6, 7}, vector8short); constexpr vector8char from_vector8double_to_vector8char_var = __builtin_convertvector((vector8double){0, 1, 2, 3, 4, 5, 6, 7}, vector8char); static_assert( __builtin_bit_cast( unsigned, __builtin_shufflevector( from_vector8double_to_vector8char_var, from_vector8double_to_vector8char_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x03020100 : 0x00010203)); static_assert( __builtin_bit_cast( unsigned long long, __builtin_shufflevector( from_vector8double_to_vector8short_var, from_vector8double_to_vector8short_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x0003000200010000 : 0x0000000100020003)); constexpr vector8double from_vector8float_to_vector8double_var = __builtin_convertvector((vector8float){0, 1, 2, 3, 4, 5, 6, 7}, vector8double); constexpr vector8float from_vector8float_to_vector8float_var = __builtin_convertvector((vector8float){0, 1, 2, 3, 4, 5, 6, 7}, vector8float); constexpr vector8long from_vector8float_to_vector8long_var = __builtin_convertvector((vector8float){0, 1, 2, 3, 4, 5, 6, 7}, vector8long); constexpr vector8int from_vector8float_to_vector8int_var = __builtin_convertvector((vector8float){0, 1, 2, 3, 4, 5, 6, 7}, vector8int); constexpr vector8short from_vector8float_to_vector8short_var = __builtin_convertvector((vector8float){0, 1, 2, 3, 4, 5, 6, 7}, vector8short); constexpr vector8char from_vector8float_to_vector8char_var = __builtin_convertvector((vector8float){0, 1, 2, 3, 4, 5, 6, 7}, vector8char); static_assert( __builtin_bit_cast( unsigned, __builtin_shufflevector( from_vector8float_to_vector8char_var, from_vector8float_to_vector8char_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x03020100 : 0x00010203)); static_assert( __builtin_bit_cast( unsigned long long, __builtin_shufflevector( from_vector8float_to_vector8short_var, from_vector8float_to_vector8short_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x0003000200010000 : 0x0000000100020003)); constexpr vector8double from_vector8long_to_vector8double_var = __builtin_convertvector((vector8long){0, 1, 2, 3, 4, 5, 6, 7}, vector8double); constexpr vector8float from_vector8long_to_vector8float_var = __builtin_convertvector((vector8long){0, 1, 2, 3, 4, 5, 6, 7}, vector8float); constexpr vector8long from_vector8long_to_vector8long_var = __builtin_convertvector((vector8long){0, 1, 2, 3, 4, 5, 6, 7}, vector8long); constexpr vector8int from_vector8long_to_vector8int_var = __builtin_convertvector((vector8long){0, 1, 2, 3, 4, 5, 6, 7}, vector8int); constexpr vector8short from_vector8long_to_vector8short_var = __builtin_convertvector((vector8long){0, 1, 2, 3, 4, 5, 6, 7}, vector8short); constexpr vector8char from_vector8long_to_vector8char_var = __builtin_convertvector((vector8long){0, 1, 2, 3, 4, 5, 6, 7}, vector8char); static_assert( __builtin_bit_cast( unsigned, __builtin_shufflevector( from_vector8long_to_vector8char_var, from_vector8long_to_vector8char_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x03020100 : 0x00010203)); static_assert( __builtin_bit_cast( unsigned long long, __builtin_shufflevector( from_vector8long_to_vector8short_var, from_vector8long_to_vector8short_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x0003000200010000 : 0x0000000100020003)); constexpr vector8double from_vector8int_to_vector8double_var = __builtin_convertvector((vector8int){0, 1, 2, 3, 4, 5, 6, 7}, vector8double); constexpr vector8float from_vector8int_to_vector8float_var = __builtin_convertvector((vector8int){0, 1, 2, 3, 4, 5, 6, 7}, vector8float); constexpr vector8long from_vector8int_to_vector8long_var = __builtin_convertvector((vector8int){0, 1, 2, 3, 4, 5, 6, 7}, vector8long); constexpr vector8int from_vector8int_to_vector8int_var = __builtin_convertvector((vector8int){0, 1, 2, 3, 4, 5, 6, 7}, vector8int); constexpr vector8short from_vector8int_to_vector8short_var = __builtin_convertvector((vector8int){0, 1, 2, 3, 4, 5, 6, 7}, vector8short); constexpr vector8char from_vector8int_to_vector8char_var = __builtin_convertvector((vector8int){0, 1, 2, 3, 4, 5, 6, 7}, vector8char); static_assert( __builtin_bit_cast( unsigned, __builtin_shufflevector( from_vector8int_to_vector8char_var, from_vector8int_to_vector8char_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x03020100 : 0x00010203)); static_assert( __builtin_bit_cast( unsigned long long, __builtin_shufflevector( from_vector8int_to_vector8short_var, from_vector8int_to_vector8short_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x0003000200010000 : 0x0000000100020003)); constexpr vector8double from_vector8short_to_vector8double_var = __builtin_convertvector((vector8short){0, 1, 2, 3, 4, 5, 6, 7}, vector8double); constexpr vector8float from_vector8short_to_vector8float_var = __builtin_convertvector((vector8short){0, 1, 2, 3, 4, 5, 6, 7}, vector8float); constexpr vector8long from_vector8short_to_vector8long_var = __builtin_convertvector((vector8short){0, 1, 2, 3, 4, 5, 6, 7}, vector8long); constexpr vector8int from_vector8short_to_vector8int_var = __builtin_convertvector((vector8short){0, 1, 2, 3, 4, 5, 6, 7}, vector8int); constexpr vector8short from_vector8short_to_vector8short_var = __builtin_convertvector((vector8short){0, 1, 2, 3, 4, 5, 6, 7}, vector8short); constexpr vector8char from_vector8short_to_vector8char_var = __builtin_convertvector((vector8short){0, 1, 2, 3, 4, 5, 6, 7}, vector8char); static_assert( __builtin_bit_cast( unsigned, __builtin_shufflevector( from_vector8short_to_vector8char_var, from_vector8short_to_vector8char_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x03020100 : 0x00010203)); static_assert( __builtin_bit_cast( unsigned long long, __builtin_shufflevector( from_vector8short_to_vector8short_var, from_vector8short_to_vector8short_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x0003000200010000 : 0x0000000100020003)); constexpr vector8double from_vector8char_to_vector8double_var = __builtin_convertvector((vector8char){0, 1, 2, 3, 4, 5, 6, 7}, vector8double); constexpr vector8float from_vector8char_to_vector8float_var = __builtin_convertvector((vector8char){0, 1, 2, 3, 4, 5, 6, 7}, vector8float); constexpr vector8long from_vector8char_to_vector8long_var = __builtin_convertvector((vector8char){0, 1, 2, 3, 4, 5, 6, 7}, vector8long); constexpr vector8int from_vector8char_to_vector8int_var = __builtin_convertvector((vector8char){0, 1, 2, 3, 4, 5, 6, 7}, vector8int); constexpr vector8short from_vector8char_to_vector8short_var = __builtin_convertvector((vector8char){0, 1, 2, 3, 4, 5, 6, 7}, vector8short); constexpr vector8char from_vector8char_to_vector8char_var = __builtin_convertvector((vector8char){0, 1, 2, 3, 4, 5, 6, 7}, vector8char); static_assert( __builtin_bit_cast( unsigned, __builtin_shufflevector( from_vector8char_to_vector8char_var, from_vector8char_to_vector8char_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x03020100 : 0x00010203)); static_assert( __builtin_bit_cast( unsigned long long, __builtin_shufflevector( from_vector8char_to_vector8short_var, from_vector8char_to_vector8short_var, 0, 1, 2, 3)) == (LITTLE_END ? 0x0003000200010000 : 0x0000000100020003));;
65+
/* END GENERATED TESTS */
66+
67+
// to keep these up to date, replace the above with the output of:
68+
// `clang -E -CC -DGEN_TESTS clang/test/Sema/constant_builtins_vector.cpp`
69+
70+
#else // GEN_TESTS
71+
#define START /* BEGIN GENERATED TESTS (see below) */
72+
#define END /* END GENERATED TESTS */
73+
START
2574
#define CHECK_NUM(__size, __typeFrom, __typeTo, ...) \
2675
constexpr vector##__size##__typeTo \
2776
from_##vector##__size##__typeFrom##_to_##vector##__size##__typeTo##_var = \
@@ -60,40 +109,8 @@ typedef char vector8char __attribute__((__vector_size__(8)));
60109

61110
CHECK_ALL_COMBINATIONS(4, 0, 1, 2, 3);
62111
CHECK_ALL_COMBINATIONS(8, 0, 1, 2, 3, 4, 5, 6, 7);
112+
END
63113
#undef CHECK_ALL_COMBINATIONS
64114
#undef CHECK_TO_ALL_TYPES
65115
#undef CHECK_NUM
66-
67-
// Shuffle vector
68-
constexpr vector4char vector4charConst1 = {0, 1, 2, 3};
69-
constexpr vector4char vector4charConst2 = {4, 5, 6, 7};
70-
constexpr vector8char vector8intConst = {8, 9, 10, 11, 12, 13, 14, 15};
71-
72-
constexpr vector4char vectorShuffle1 =
73-
__builtin_shufflevector(vector4charConst1, vector4charConst2, 0, 1, 2, 3);
74-
static_assert(__builtin_bit_cast(unsigned, vectorShuffle1) ==
75-
(LITTLE_END ? 0x03020100 : 0x00010203));
76-
constexpr vector4char vectorShuffle2 =
77-
__builtin_shufflevector(vector4charConst1, vector4charConst2, 4, 5, 6, 7);
78-
static_assert(__builtin_bit_cast(unsigned, vectorShuffle2) ==
79-
(LITTLE_END ? 0x07060504 : 0x04050607));
80-
constexpr vector4char vectorShuffle3 = __builtin_shufflevector(
81-
vector4charConst1, vector4charConst2, -1, -1, -1, -1);
82-
static_assert(__builtin_bit_cast(unsigned, vectorShuffle3) ==
83-
(LITTLE_END ? 0x00000000 : 0x00000000));
84-
constexpr vector4char vectorShuffle4 =
85-
__builtin_shufflevector(vector4charConst1, vector4charConst2, 0, 2, 4, 6);
86-
static_assert(__builtin_bit_cast(unsigned, vectorShuffle4) ==
87-
(LITTLE_END ? 0x06040200 : 0x00020406));
88-
constexpr vector8char vectorShuffle5 = __builtin_shufflevector(
89-
vector8intConst, vector8intConst, 0, 2, 4, 6, 8, 10, 12, 14);
90-
static_assert(__builtin_bit_cast(unsigned long long, vectorShuffle5) ==
91-
(LITTLE_END ? 0x0E0C0A080E0C0A08 : 0x080A0C0E080A0C0E));
92-
constexpr vector4char vectorShuffle6 =
93-
__builtin_shufflevector(vector8intConst, vector8intConst, 0, 2, 4, 6);
94-
static_assert(__builtin_bit_cast(unsigned, vectorShuffle6) ==
95-
(LITTLE_END ? 0x0E0C0A08 : 0x080A0C0E));
96-
constexpr vector8char vectorShuffle7 = __builtin_shufflevector(
97-
vector4charConst1, vector4charConst2, 0, 2, 4, 6, 1, 3, 5, 7);
98-
static_assert(__builtin_bit_cast(unsigned long long, vectorShuffle7) ==
99-
(LITTLE_END ? 0x0705030106040200 : 0x0002040601030507));
116+
#endif // GEN_TESTS

0 commit comments

Comments
 (0)