@@ -121,7 +121,7 @@ class BuiltInNoOp extends BuiltInOperation, @noopexpr {
121121/**
122122 * A C/C++ `__builtin_offsetof` built-in operation (used by some implementations
123123 * of `offsetof`). The operation retains its semantics even in the presence
124- * of an overloaded `operator &`). This is a GNU/Clang extension.
124+ * of an overloaded `operator &`). This is a gcc/clang extension.
125125 * ```
126126 * struct S {
127127 * int a, b;
@@ -494,6 +494,23 @@ class BuiltInOperationBuiltInShuffleVector extends BuiltInOperation, @builtinshu
494494 override string getAPrimaryQlClass ( ) { result = "BuiltInOperationBuiltInShuffleVector" }
495495}
496496
497+ /**
498+ * A gcc `__builtin_shuffle` expression.
499+ *
500+ * It outputs a permutation of elements from one or two input vectors.
501+ * Please see https://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html
502+ * for more information.
503+ * ```
504+ * // Concatenate every other element of 4-element vectors V1 and V2.
505+ * V3 = __builtin_shufflevector(V1, V2, {0, 2, 4, 6});
506+ * ```
507+ */
508+ class BuiltInOperationBuiltInShuffle extends BuiltInOperation , @builtinshuffle {
509+ override string toString ( ) { result = "__builtin_shuffle" }
510+
511+ override string getAPrimaryQlClass ( ) { result = "BuiltInOperationBuiltInShuffle" }
512+ }
513+
497514/**
498515 * A clang `__builtin_convertvector` expression.
499516 *
@@ -946,7 +963,7 @@ class BuiltInOperationIsFinal extends BuiltInOperation, @isfinalexpr {
946963}
947964
948965/**
949- * The `__builtin_choose_expr` expression. This is a GNU/Clang extension.
966+ * The `__builtin_choose_expr` expression. This is a gcc/clang extension.
950967 *
951968 * The expression functions similarly to the ternary `?:` operator, except
952969 * that it is evaluated at compile-time.
0 commit comments