* [PATCH 2/8] S/390: Limit legitimate_constant_p changes to TARGET_VX.
2015-06-24 6:57 [PATCH 0/8] S/390: z13 support fixes and improvements Andreas Krebbel
2015-06-24 6:57 ` [PATCH 7/8] S/390: Add proper comments to vpopct builtins for automated testsuite generation Andreas Krebbel
2015-06-24 6:57 ` [PATCH 3/8] S/390: Disable effect of support_vector_misalignment hook for non-z13 targets Andreas Krebbel
@ 2015-06-24 6:57 ` Andreas Krebbel
2015-06-24 6:57 ` [PATCH 1/8] S/390 Vector ABI GNU Attribute Andreas Krebbel
` (4 subsequent siblings)
7 siblings, 0 replies; 11+ messages in thread
From: Andreas Krebbel @ 2015-06-24 6:57 UTC (permalink / raw)
To: gcc-patches
gcc/ChangeLog:
* config/s390/s390.c (s390_legitimate_constant_p): Add
TARGET_VX check.
---
gcc/config/s390/s390.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 934f7c0..859ed68 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -3611,7 +3611,7 @@ legitimate_pic_operand_p (rtx op)
static bool
s390_legitimate_constant_p (machine_mode mode, rtx op)
{
- if (VECTOR_MODE_P (mode) && GET_CODE (op) == CONST_VECTOR)
+ if (TARGET_VX && VECTOR_MODE_P (mode) && GET_CODE (op) == CONST_VECTOR)
{
if (GET_MODE_SIZE (mode) != 16)
return 0;
--
1.7.9.5
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 7/8] S/390: Add proper comments to vpopct builtins for automated testsuite generation.
2015-06-24 6:57 [PATCH 0/8] S/390: z13 support fixes and improvements Andreas Krebbel
@ 2015-06-24 6:57 ` Andreas Krebbel
2015-06-24 6:57 ` [PATCH 3/8] S/390: Disable effect of support_vector_misalignment hook for non-z13 targets Andreas Krebbel
` (6 subsequent siblings)
7 siblings, 0 replies; 11+ messages in thread
From: Andreas Krebbel @ 2015-06-24 6:57 UTC (permalink / raw)
To: gcc-patches
This is a comment only change which is supposed to be used by the
autogenerated tests I run for the builtins.
gcc/ChangeLog:
* config/s390/s390-builtins.def: Fix vpopct instruction comments.
---
gcc/config/s390/s390-builtins.def | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/gcc/config/s390/s390-builtins.def b/gcc/config/s390/s390-builtins.def
index 17f9c85..0a24da9 100644
--- a/gcc/config/s390/s390-builtins.def
+++ b/gcc/config/s390/s390-builtins.def
@@ -1774,19 +1774,19 @@ OB_DEF_VAR (s390_vec_or_dbl_c, s390_vo, 0,
B_DEF (s390_vo, iorv16qi3, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
OB_DEF (s390_vec_popcnt, s390_vec_popcnt_s8, s390_vec_popcnt_u64,B_VX, BT_FN_OV4SI_OV4SI)
-OB_DEF_VAR (s390_vec_popcnt_s8, s390_vpopctb, 0, BT_OV_UV16QI_V16QI)
-OB_DEF_VAR (s390_vec_popcnt_u8, s390_vpopctb, 0, BT_OV_UV16QI_UV16QI)
-OB_DEF_VAR (s390_vec_popcnt_s16, s390_vpopcth, 0, BT_OV_UV8HI_V8HI)
-OB_DEF_VAR (s390_vec_popcnt_u16, s390_vpopcth, 0, BT_OV_UV8HI_UV8HI)
-OB_DEF_VAR (s390_vec_popcnt_s32, s390_vpopctf, 0, BT_OV_UV4SI_V4SI)
-OB_DEF_VAR (s390_vec_popcnt_u32, s390_vpopctf, 0, BT_OV_UV4SI_UV4SI)
-OB_DEF_VAR (s390_vec_popcnt_s64, s390_vpopctg, 0, BT_OV_UV2DI_V2DI)
-OB_DEF_VAR (s390_vec_popcnt_u64, s390_vpopctg, 0, BT_OV_UV2DI_UV2DI)
-
-B_DEF (s390_vpopctb, popcountv16qi2, 0, B_VX, 0, BT_FN_UV16QI_UV16QI)
-B_DEF (s390_vpopcth, popcountv8hi2, 0, B_VX, 0, BT_FN_UV8HI_UV8HI)
-B_DEF (s390_vpopctf, popcountv4si2, 0, B_VX, 0, BT_FN_UV4SI_UV4SI)
-B_DEF (s390_vpopctg, popcountv2di2, 0, B_VX, 0, BT_FN_UV2DI_UV2DI)
+OB_DEF_VAR (s390_vec_popcnt_s8, s390_vpopctb, 0, BT_OV_UV16QI_V16QI) /* vpopct */
+OB_DEF_VAR (s390_vec_popcnt_u8, s390_vpopctb, 0, BT_OV_UV16QI_UV16QI) /* vpopct */
+OB_DEF_VAR (s390_vec_popcnt_s16, s390_vpopcth, 0, BT_OV_UV8HI_V8HI) /* vpopct */
+OB_DEF_VAR (s390_vec_popcnt_u16, s390_vpopcth, 0, BT_OV_UV8HI_UV8HI) /* vpopct */
+OB_DEF_VAR (s390_vec_popcnt_s32, s390_vpopctf, 0, BT_OV_UV4SI_V4SI) /* vpopct vsumb */
+OB_DEF_VAR (s390_vec_popcnt_u32, s390_vpopctf, 0, BT_OV_UV4SI_UV4SI) /* vpopct vsumb */
+OB_DEF_VAR (s390_vec_popcnt_s64, s390_vpopctg, 0, BT_OV_UV2DI_V2DI) /* vpopct vsumb vsumgf */
+OB_DEF_VAR (s390_vec_popcnt_u64, s390_vpopctg, 0, BT_OV_UV2DI_UV2DI) /* vpopct vsumb vsumgf */
+
+B_DEF (s390_vpopctb, popcountv16qi2, 0, B_VX, 0, BT_FN_UV16QI_UV16QI) /* vpopct */
+B_DEF (s390_vpopcth, popcountv8hi2, 0, B_VX, 0, BT_FN_UV8HI_UV8HI) /* vpopct */
+B_DEF (s390_vpopctf, popcountv4si2, 0, B_VX, 0, BT_FN_UV4SI_UV4SI) /* vpopct vsumb */
+B_DEF (s390_vpopctg, popcountv2di2, 0, B_VX, 0, BT_FN_UV2DI_UV2DI) /* vpopct vsumb vsumgf */
OB_DEF (s390_vec_rl, s390_vec_rl_u8, s390_vec_rl_s64, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_rl_u8, s390_verllvb, 0, BT_OV_UV16QI_UV16QI_UV16QI)
--
1.7.9.5
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 3/8] S/390: Disable effect of support_vector_misalignment hook for non-z13 targets.
2015-06-24 6:57 [PATCH 0/8] S/390: z13 support fixes and improvements Andreas Krebbel
2015-06-24 6:57 ` [PATCH 7/8] S/390: Add proper comments to vpopct builtins for automated testsuite generation Andreas Krebbel
@ 2015-06-24 6:57 ` Andreas Krebbel
2015-06-24 6:57 ` [PATCH 2/8] S/390: Limit legitimate_constant_p changes to TARGET_VX Andreas Krebbel
` (5 subsequent siblings)
7 siblings, 0 replies; 11+ messages in thread
From: Andreas Krebbel @ 2015-06-24 6:57 UTC (permalink / raw)
To: gcc-patches
gcc/ChangeLog:
* config/s390/s390.c (s390_support_vector_misalignment): Call
default implementation for !TARGET_VX.
---
gcc/config/s390/s390.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 859ed68..80a2c89 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -13728,7 +13728,11 @@ s390_support_vector_misalignment (machine_mode mode ATTRIBUTE_UNUSED,
int misalignment ATTRIBUTE_UNUSED,
bool is_packed ATTRIBUTE_UNUSED)
{
- return true;
+ if (TARGET_VX)
+ return true;
+
+ return default_builtin_support_vector_misalignment (mode, type, misalignment,
+ is_packed);
}
/* The vector ABI requires vector types to be aligned on an 8 byte
--
1.7.9.5
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 8/8] S/390: Switch mode attribute to bhfgq for vec scatter patterns.
2015-06-24 6:57 [PATCH 0/8] S/390: z13 support fixes and improvements Andreas Krebbel
` (3 preceding siblings ...)
2015-06-24 6:57 ` [PATCH 1/8] S/390 Vector ABI GNU Attribute Andreas Krebbel
@ 2015-06-24 6:57 ` Andreas Krebbel
2015-06-24 6:58 ` [PATCH 6/8] S/390: Make builtin creation conditional Andreas Krebbel
` (2 subsequent siblings)
7 siblings, 0 replies; 11+ messages in thread
From: Andreas Krebbel @ 2015-06-24 6:57 UTC (permalink / raw)
To: gcc-patches
This fixes the mode attribute used in the vec scatter insn
definitions. vec_scatter_element<mode>_<non_vec_int> and
vec_scatter_element<V_HW_64:mode>_SI were using gf mode attribute
which does not support vector modes.
gcc/ChangeLog:
* config/s390/vx-builtins.md
("vec_scatter_element<mode>_<non_vec_int>")
("vec_scatter_element<V_HW_64:mode>_SI"): Replace gf mode
attribute with bhfgq.
---
gcc/config/s390/vx-builtins.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gcc/config/s390/vx-builtins.md b/gcc/config/s390/vx-builtins.md
index e306ee8..35ada13 100644
--- a/gcc/config/s390/vx-builtins.md
+++ b/gcc/config/s390/vx-builtins.md
@@ -414,7 +414,7 @@
(unspec:<non_vec> [(match_operand:V_HW_64 0 "register_operand" "v")
(match_dup 3)] UNSPEC_VEC_EXTRACT))]
"TARGET_VX && !TARGET_64BIT"
- "vsce<V_HW_64:gf>\t%v0,%O2(%v1,%R2),%3"
+ "vsce<V_HW_64:bhfgq>\t%v0,%O2(%v1,%R2),%3"
[(set_attr "op_type" "VRV")])
; Element size and target adress size is the same
@@ -428,7 +428,7 @@
(unspec:<non_vec> [(match_operand:V_HW_32_64 0 "register_operand" "v")
(match_dup 3)] UNSPEC_VEC_EXTRACT))]
"TARGET_VX"
- "vsce<gf>\t%v0,%O2(%v1,%R2),%3"
+ "vsce<bhfgq>\t%v0,%O2(%v1,%R2),%3"
[(set_attr "op_type" "VRV")])
; Depending on the address size we have to expand a different pattern.
--
1.7.9.5
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/8] S/390 Vector ABI GNU Attribute.
2015-06-24 6:57 [PATCH 0/8] S/390: z13 support fixes and improvements Andreas Krebbel
` (2 preceding siblings ...)
2015-06-24 6:57 ` [PATCH 2/8] S/390: Limit legitimate_constant_p changes to TARGET_VX Andreas Krebbel
@ 2015-06-24 6:57 ` Andreas Krebbel
2015-06-24 10:21 ` Richard Biener
2015-06-24 6:57 ` [PATCH 8/8] S/390: Switch mode attribute to bhfgq for vec scatter patterns Andreas Krebbel
` (3 subsequent siblings)
7 siblings, 1 reply; 11+ messages in thread
From: Andreas Krebbel @ 2015-06-24 6:57 UTC (permalink / raw)
To: gcc-patches
With this patch .gnu_attribute is used to mark binaries with a vector
ABI tag. This is required since the z13 vector support breaks the ABI
of existing vector_size attribute generated vector types:
1. vector_size(16) and bigger vectors are aligned to 8 byte
boundaries (formerly vectors were always naturally aligned)
2. vector_size(16) or smaller vectors are passed via VR if available
or by value on the stack (formerly vector were passed on the stack by
reference).
The .gnu_attribute will be used by ld to emit a warning if binaries
with incompatible ABIs are being linked together:
https://sourceware.org/ml/binutils/2015-04/msg00316.html
And it will be used by GDB to perform inferior function calls using a
vector ABI which fits to the binary being debugged:
https://sourceware.org/ml/gdb-patches/2015-04/msg00833.html
The current implementation tries to only set the attribute if the
vector types are really used in ABI relevant contexts in order to
avoid false positives during linking.
However, this unfortunately has some limitations like in the following
case where an ABI relevant context cannot be detected properly:
typedef int __attribute__((vector_size(16))) v4si;
struct A
{
char x;
v4si y;
};
char a[sizeof(struct A)];
The number of elements in a depends on the ABI (24 with -mvx and 32
with -mno-vx). However, the implementation is not able to detect this
since the struct type is not used anywhere else and consequently does
not survive until the checking code is able to see it.
Ideas about how to improve the implementation without creating too
many false postives are welcome.
In particular we do not want to set the attribute for local uses of
vector types as they would be natural for ifunc optimizations.
gcc/
* config/s390/s390.c (s390_vector_abi): New variable definition.
(s390_check_type_for_vector_abi): New function.
(TARGET_ASM_FILE_END): New macro definition.
(s390_asm_file_end): New function.
(s390_function_arg): Call s390_check_type_for_vector_abi.
(s390_gimplify_va_arg): Likewise.
* configure: Regenerate.
* configure.ac: Check for .gnu_attribute Binutils feature.
gcc/testsuite/
* gcc.target/s390/vector/vec-abi-1.c: Add gnu attribute check.
* gcc.target/s390/vector/vec-abi-attr-1.c: New test.
* gcc.target/s390/vector/vec-abi-attr-2.c: New test.
* gcc.target/s390/vector/vec-abi-attr-3.c: New test.
* gcc.target/s390/vector/vec-abi-attr-4.c: New test.
* gcc.target/s390/vector/vec-abi-attr-5.c: New test.
* gcc.target/s390/vector/vec-abi-attr-6.c: New test.
---
gcc/config/s390/s390.c | 121 ++++++++++++++++++++
gcc/configure | 36 ++++++
gcc/configure.ac | 7 ++
gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c | 1 +
.../gcc.target/s390/vector/vec-abi-attr-1.c | 18 +++
.../gcc.target/s390/vector/vec-abi-attr-2.c | 53 +++++++++
.../gcc.target/s390/vector/vec-abi-attr-3.c | 18 +++
.../gcc.target/s390/vector/vec-abi-attr-4.c | 17 +++
.../gcc.target/s390/vector/vec-abi-attr-5.c | 19 +++
.../gcc.target/s390/vector/vec-abi-attr-6.c | 24 ++++
10 files changed, 314 insertions(+)
create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-1.c
create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-2.c
create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-3.c
create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-4.c
create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-5.c
create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-6.c
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index d6ed179..934f7c0 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -461,6 +461,97 @@ struct GTY(()) machine_function
#define PREDICT_DISTANCE (TARGET_Z10 ? 384 : 2048)
+/* Indicate which ABI has been used for passing vector args.
+ 0 - no vector type arguments have been passed where the ABI is relevant
+ 1 - the old ABI has been used
+ 2 - a vector type argument has been passed either in a vector register
+ or on the stack by value */
+static int s390_vector_abi = 0;
+
+/* Set the vector ABI marker if TYPE is subject to the vector ABI
+ switch. The vector ABI affects only vector data types. There are
+ two aspects of the vector ABI relevant here:
+
+ 1. vectors >= 16 bytes have an alignment of 8 bytes with the new
+ ABI and natural alignment with the old.
+
+ 2. vector <= 16 bytes are passed in VRs or by value on the stack
+ with the new ABI but by reference on the stack with the old.
+
+ If ARG_P is true TYPE is used for a function argument or return
+ value. The ABI marker then is set for all vector data types. If
+ ARG_P is false only type 1 vectors are being checked. */
+
+static void
+s390_check_type_for_vector_abi (const_tree type, bool arg_p, bool in_struct_p)
+{
+ static hash_set<const_tree> visited_types_hash;
+
+ if (s390_vector_abi)
+ return;
+
+ if (type == NULL_TREE || TREE_CODE (type) == ERROR_MARK)
+ return;
+
+ if (visited_types_hash.contains (type))
+ return;
+
+ visited_types_hash.add (type);
+
+ if (VECTOR_TYPE_P (type))
+ {
+ int type_size = int_size_in_bytes (type);
+
+ /* Outside arguments only the alignment is changing and this
+ only happens for vector types >= 16 bytes. */
+ if (!arg_p && type_size < 16)
+ return;
+
+ /* In arguments vector types > 16 are passed as before (GCC
+ never enforced the bigger alignment for arguments which was
+ required by the old vector ABI). However, it might still be
+ ABI relevant due to the changed alignment if it is a struct
+ member. */
+ if (arg_p && type_size > 16 && !in_struct_p)
+ return;
+
+ s390_vector_abi = TARGET_VX_ABI ? 2 : 1;
+ }
+ else if (POINTER_TYPE_P (type) || TREE_CODE (type) == ARRAY_TYPE)
+ {
+ /* ARRAY_TYPE: Since with neither of the ABIs we have more than
+ natural alignment there will never be ABI dependent padding
+ in an array type. That's why we do not set in_struct_p to
+ true here. */
+ s390_check_type_for_vector_abi (TREE_TYPE (type), arg_p, in_struct_p);
+ }
+ else if (TREE_CODE (type) == FUNCTION_TYPE || TREE_CODE (type) == METHOD_TYPE)
+ {
+ tree arg_chain;
+
+ /* Check the return type. */
+ s390_check_type_for_vector_abi (TREE_TYPE (type), true, false);
+
+ for (arg_chain = TYPE_ARG_TYPES (type);
+ arg_chain;
+ arg_chain = TREE_CHAIN (arg_chain))
+ s390_check_type_for_vector_abi (TREE_VALUE (arg_chain), true, false);
+ }
+ else if (RECORD_OR_UNION_TYPE_P (type))
+ {
+ tree field;
+
+ for (field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
+ {
+ if (TREE_CODE (field) != FIELD_DECL)
+ continue;
+
+ s390_check_type_for_vector_abi (TREE_TYPE (field), arg_p, true);
+ }
+ }
+}
+
+
/* System z builtins. */
#include "s390-builtins.h"
@@ -10898,6 +10989,8 @@ s390_function_arg (cumulative_args_t cum_v, machine_mode mode,
{
CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
+ if (!named)
+ s390_check_type_for_vector_abi (type, true, false);
if (s390_function_arg_vector (mode, type))
{
@@ -11289,6 +11382,8 @@ s390_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p,
size = int_size_in_bytes (type);
+ s390_check_type_for_vector_abi (type, true, false);
+
if (pass_by_reference (NULL, TYPE_MODE (type), type, false))
{
if (TARGET_DEBUG_ARG)
@@ -13651,6 +13746,29 @@ s390_vector_alignment (const_tree type)
return MIN (64, tree_to_shwi (TYPE_SIZE (type)));
}
+/* Implement TARGET_ASM_FILE_END. */
+static void
+s390_asm_file_end (void)
+{
+#ifdef HAVE_AS_GNU_ATTRIBUTE
+ varpool_node *vnode;
+ cgraph_node *cnode;
+
+ FOR_EACH_VARIABLE (vnode)
+ if (TREE_PUBLIC (vnode->decl))
+ s390_check_type_for_vector_abi (TREE_TYPE (vnode->decl), false, false);
+
+ FOR_EACH_FUNCTION (cnode)
+ if (TREE_PUBLIC (cnode->decl))
+ s390_check_type_for_vector_abi (TREE_TYPE (cnode->decl), false, false);
+
+
+ if (s390_vector_abi != 0)
+ fprintf (asm_out_file, "\t.gnu_attribute 8, %d\n",
+ s390_vector_abi);
+#endif
+ file_end_indicate_exec_stack ();
+}
/* Return true if TYPE is a vector bool type. */
static inline bool
@@ -13927,6 +14045,9 @@ s390_invalid_binary_op (int op ATTRIBUTE_UNUSED, const_tree type1, const_tree ty
#undef TARGET_INVALID_BINARY_OP
#define TARGET_INVALID_BINARY_OP s390_invalid_binary_op
+#undef TARGET_ASM_FILE_END
+#define TARGET_ASM_FILE_END s390_asm_file_end
+
struct gcc_target targetm = TARGET_INITIALIZER;
#include "gt-s390.h"
diff --git a/gcc/configure b/gcc/configure
index b26a86f..3f3f578 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -26708,6 +26708,42 @@ fi
as_fn_error "Requesting --with-nan= requires assembler support for -mnan=" "$LINENO" 5
fi
;;
+ s390*-*-*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .gnu_attribute support" >&5
+$as_echo_n "checking assembler for .gnu_attribute support... " >&6; }
+if test "${gcc_cv_as_s390_gnu_attribute+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ gcc_cv_as_s390_gnu_attribute=no
+ if test $in_tree_gas = yes; then
+ if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 18 \) \* 1000 + 0`
+ then gcc_cv_as_s390_gnu_attribute=yes
+fi
+ elif test x$gcc_cv_as != x; then
+ $as_echo '.gnu_attribute 8,1' > conftest.s
+ if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+ then
+ gcc_cv_as_s390_gnu_attribute=yes
+ else
+ echo "configure: failed program was" >&5
+ cat conftest.s >&5
+ fi
+ rm -f conftest.o conftest.s
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_s390_gnu_attribute" >&5
+$as_echo "$gcc_cv_as_s390_gnu_attribute" >&6; }
+if test $gcc_cv_as_s390_gnu_attribute = yes; then
+
+$as_echo "#define HAVE_AS_GNU_ATTRIBUTE 1" >>confdefs.h
+
+fi
+ ;;
esac
# Mips and HP-UX need the GNU assembler.
diff --git a/gcc/configure.ac b/gcc/configure.ac
index c09f3ae5..85f72d5 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -4442,6 +4442,13 @@ pointers into PC-relative form.])
[Requesting --with-nan= requires assembler support for -mnan=])
fi
;;
+ s390*-*-*)
+ gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
+ gcc_cv_as_s390_gnu_attribute, [2,18,0],,
+ [.gnu_attribute 8,1],,
+ [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
+ [Define if your assembler supports .gnu_attribute.])])
+ ;;
esac
# Mips and HP-UX need the GNU assembler.
diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c
index 5484664..db18e5e 100644
--- a/gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c
+++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c
@@ -6,6 +6,7 @@
/* Make sure the last argument is fetched from the argument overflow area. */
/* { dg-final { scan-assembler "vl\t%v\[0-9\]*,160\\(%r15\\)" { target lp64 } } } */
/* { dg-final { scan-assembler "vl\t%v\[0-9\]*,96\\(%r15\\)" { target ilp32 } } } */
+/* { dg-final { scan-assembler "gnu_attribute 8, 2" } } */
typedef double v2df __attribute__((vector_size(16)));
diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-1.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-1.c
new file mode 100644
index 0000000..a06b338
--- /dev/null
+++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-1.c
@@ -0,0 +1,18 @@
+/* Check calling convention in the vector ABI. */
+
+/* { dg-do compile { target { s390*-*-* } } } */
+/* { dg-options "-O3 -mzarch -march=z13 -mno-vx" } */
+
+/* The function passes arguments whose calling conventions change with
+ -mvx/-mno-vx. In that case GCC has to emit the ABI attribute to
+ allow GDB and Binutils to detect this. */
+/* { dg-final { scan-assembler "gnu_attribute 8, 1" } } */
+
+typedef double v2df __attribute__((vector_size(16)));
+
+v2df
+add (v2df a, v2df b, v2df c, v2df d,
+ v2df e, v2df f, v2df g, v2df h, v2df i)
+{
+ return a + b + c + d + e + f + g + h + i;
+}
diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-2.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-2.c
new file mode 100644
index 0000000..97b9748
--- /dev/null
+++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-2.c
@@ -0,0 +1,53 @@
+/* Check calling convention in the vector ABI. */
+
+/* { dg-do compile { target { s390*-*-* } } } */
+/* { dg-options "-O3 -mzarch -march=z13" } */
+
+/* No abi attribute should be emitted when nothing relevant happened. */
+/* { dg-final { scan-assembler-not "gnu_attribute" } } */
+
+#include <stdarg.h>
+
+/* Local use is ok. */
+
+typedef int v4si __attribute__((vector_size(16)));
+
+static
+v4si __attribute__((__noinline__))
+foo (v4si a)
+{
+ return a + (v4si){ 1, 2, 3, 4 };
+}
+
+int
+bar (int a)
+{
+ return foo ((v4si){ 1, 1, 1, 1 })[1];
+}
+
+/* Big vector type only used as function argument and return value
+ without being a struct/union member. The alignment change is not
+ relevant here. */
+
+typedef double v4df __attribute__((vector_size(32)));
+
+v4df
+add (v4df a, v4df b, v4df c, v4df d,
+ v4df e, v4df f, v4df g, v4df h, v4df i)
+{
+ return a + b + c + d + e + f + g + h + i;
+}
+
+double
+bar2 (int n, ...)
+{
+ double ret;
+ v4df a;
+ va_list va;
+
+ va_start (va, n);
+ ret = va_arg (va, v4df)[2];
+ va_end (va);
+
+ return ret;
+}
diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-3.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-3.c
new file mode 100644
index 0000000..f3dc368
--- /dev/null
+++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-3.c
@@ -0,0 +1,18 @@
+/* Check calling convention in the vector ABI. */
+
+/* { dg-do compile { target { s390*-*-* } } } */
+/* { dg-options "-O3 -mzarch -march=z13" } */
+
+/* { dg-final { scan-assembler "gnu_attribute 8, 2" } } */
+
+typedef double v4df __attribute__((vector_size(32)));
+typedef struct { v4df a; } s;
+
+s
+add (v4df a, v4df b, v4df c, v4df d,
+ v4df e, v4df f, v4df g, v4df h, v4df i)
+{
+ s t;
+ t.a = a + b + c + d + e + f + g + h + i;
+ return t;
+}
diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-4.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-4.c
new file mode 100644
index 0000000..ad9b29a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-4.c
@@ -0,0 +1,17 @@
+/* Check calling convention in the vector ABI. */
+
+/* { dg-do compile { target { s390*-*-* } } } */
+/* { dg-options "-O3 -mzarch -march=z13" } */
+
+/* { dg-final { scan-assembler "gnu_attribute 8, 2" } } */
+
+typedef int __attribute__((vector_size(16))) v4si;
+
+extern void bar (v4si);
+
+void
+foo (int a)
+{
+ v4si b = (v4si){ a, a, a, a };
+ bar (b);
+}
diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-5.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-5.c
new file mode 100644
index 0000000..fb5de4e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-5.c
@@ -0,0 +1,19 @@
+/* Check calling convention in the vector ABI. */
+
+/* { dg-do compile { target { s390*-*-* } } } */
+/* { dg-options "-O3 -mzarch -march=z13" } */
+
+/* { dg-final { scan-assembler "gnu_attribute 8, 2" } } */
+
+#include <stdarg.h>
+
+typedef int __attribute__((vector_size(16))) v4si;
+
+extern void bar (int, ...);
+
+void
+foo (int a)
+{
+ v4si b = (v4si){ a, a, a, a };
+ bar (1, b);
+}
diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-6.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-6.c
new file mode 100644
index 0000000..9134fa7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-6.c
@@ -0,0 +1,24 @@
+/* Check calling convention in the vector ABI. */
+
+/* { dg-do compile { target { s390*-*-* } } } */
+/* { dg-options "-O3 -mzarch -march=z13" } */
+
+/* { dg-final { scan-assembler "gnu_attribute 8, 2" } } */
+
+#include <stdarg.h>
+
+typedef int __attribute__((vector_size(16))) v4si;
+
+int
+bar (int n, ...)
+{
+ int ret;
+ v4si a;
+ va_list va;
+
+ va_start (va, n);
+ ret = va_arg (va, v4si)[2];
+ va_end (va);
+
+ return ret;
+}
--
1.7.9.5
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 0/8] S/390: z13 support fixes and improvements
@ 2015-06-24 6:57 Andreas Krebbel
2015-06-24 6:57 ` [PATCH 7/8] S/390: Add proper comments to vpopct builtins for automated testsuite generation Andreas Krebbel
` (7 more replies)
0 siblings, 8 replies; 11+ messages in thread
From: Andreas Krebbel @ 2015-06-24 6:57 UTC (permalink / raw)
To: gcc-patches
Hi,
the following patchset consists of minor improvements and fixes. The
most notable change is the conditional builtin creation patch which
tries to limit a lot of the builtin initialization work to -march=z13.
It also includes the GNU vector ABI attribute patch from the original
series which I didn't commit until now.
They have been tested on head with --with-arch=z13 without
regressions.
Committed to mainline.
Bye,
-Andreas-
Andreas Krebbel (8):
S/390 Vector ABI GNU Attribute.
S/390: Limit legitimate_constant_p changes to TARGET_VX.
S/390: Disable effect of support_vector_misalignment hook for non-z13
targets.
S/390: Fix s390_secondary_reload register class check.
S/390: Remove internal builtins from vecintrin.h.
S/390: Make builtin creation conditional.
S/390: Add proper comments to vpopct builtins for automated testsuite
generation.
S/390: Switch mode attribute to bhfgq for vec scatter patterns.
gcc/config/s390/s390-builtin-types.def | 585 +++++-----
gcc/config/s390/s390-builtins.def | 1231 ++++++++++----------
gcc/config/s390/s390-builtins.h | 37 +-
gcc/config/s390/s390-c.c | 11 +-
gcc/config/s390/s390.c | 243 +++-
gcc/config/s390/vecintrin.h | 35 -
gcc/config/s390/vx-builtins.md | 4 +-
gcc/configure | 36 +
gcc/configure.ac | 7 +
gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c | 1 +
.../gcc.target/s390/vector/vec-abi-attr-1.c | 18 +
.../gcc.target/s390/vector/vec-abi-attr-2.c | 53 +
.../gcc.target/s390/vector/vec-abi-attr-3.c | 18 +
.../gcc.target/s390/vector/vec-abi-attr-4.c | 17 +
.../gcc.target/s390/vector/vec-abi-attr-5.c | 19 +
.../gcc.target/s390/vector/vec-abi-attr-6.c | 24 +
16 files changed, 1336 insertions(+), 1003 deletions(-)
create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-1.c
create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-2.c
create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-3.c
create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-4.c
create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-5.c
create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-6.c
--
1.7.9.5
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 5/8] S/390: Remove internal builtins from vecintrin.h.
2015-06-24 6:57 [PATCH 0/8] S/390: z13 support fixes and improvements Andreas Krebbel
` (5 preceding siblings ...)
2015-06-24 6:58 ` [PATCH 6/8] S/390: Make builtin creation conditional Andreas Krebbel
@ 2015-06-24 6:58 ` Andreas Krebbel
2015-06-24 7:10 ` [PATCH 4/8] S/390: Fix s390_secondary_reload register class check Andreas Krebbel
7 siblings, 0 replies; 11+ messages in thread
From: Andreas Krebbel @ 2015-06-24 6:58 UTC (permalink / raw)
To: gcc-patches
This patch removes a couple for builtin definitions from the
vecintrin.h file which are supposed to be used only internally.
gcc/ChangeLog:
* config/s390/vecintrin.h: Remove internal builtins.
---
gcc/config/s390/vecintrin.h | 35 -----------------------------------
1 file changed, 35 deletions(-)
diff --git a/gcc/config/s390/vecintrin.h b/gcc/config/s390/vecintrin.h
index 95851f4..2e26e3a 100644
--- a/gcc/config/s390/vecintrin.h
+++ b/gcc/config/s390/vecintrin.h
@@ -160,9 +160,6 @@ vec_any_numeric (__vector double a)
#define vec_packs __builtin_s390_vec_packs
#define vec_packs_cc __builtin_s390_vec_packs_cc
#define vec_packsu __builtin_s390_vec_packsu
-#define vec_packsu_u16 __builtin_s390_vec_packsu_u16
-#define vec_packsu_u32 __builtin_s390_vec_packsu_u32
-#define vec_packsu_u64 __builtin_s390_vec_packsu_u64
#define vec_packsu_cc __builtin_s390_vec_packsu_cc
#define vec_perm __builtin_s390_vec_perm
#define vec_permi __builtin_s390_vec_permi
@@ -179,42 +176,12 @@ vec_any_numeric (__vector double a)
#define vec_and __builtin_s390_vec_and
#define vec_andc __builtin_s390_vec_andc
#define vec_avg __builtin_s390_vec_avg
-#define vec_all_eqv16qi __builtin_vec_all_eqv16qi
-#define vec_all_eqv8hi __builtin_vec_all_eqv8hi
-#define vec_all_eqv4si __builtin_vec_all_eqv4si
-#define vec_all_eqv2di __builtin_vec_all_eqv2di
-#define vec_all_eqv2df __builtin_vec_all_eqv2df
-#define vec_all_gev16qi __builtin_vec_all_gev16qi
-#define vec_all_geuv16qi __builtin_vec_all_geuv16qi
-#define vec_all_gev8hi __builtin_vec_all_gev8hi
-#define vec_all_geuv8hi __builtin_vec_all_geuv8hi
-#define vec_all_gev4si __builtin_vec_all_gev4si
-#define vec_all_geuv4si __builtin_vec_all_geuv4si
-#define vec_all_gev2di __builtin_vec_all_gev2di
-#define vec_all_geuv2di __builtin_vec_all_geuv2di
-#define vec_all_gev2df __builtin_vec_all_gev2df
-#define vec_all_gtv2df __builtin_vec_all_gtv2df
#define vec_all_eq __builtin_s390_vec_all_eq
#define vec_all_ne __builtin_s390_vec_all_ne
#define vec_all_ge __builtin_s390_vec_all_ge
#define vec_all_gt __builtin_s390_vec_all_gt
#define vec_all_le __builtin_s390_vec_all_le
#define vec_all_lt __builtin_s390_vec_all_lt
-#define vec_any_eqv16qi __builtin_vec_any_eqv16qi
-#define vec_any_eqv8hi __builtin_vec_any_eqv8hi
-#define vec_any_eqv4si __builtin_vec_any_eqv4si
-#define vec_any_eqv2di __builtin_vec_any_eqv2di
-#define vec_any_eqv2df __builtin_vec_any_eqv2df
-#define vec_any_gev16qi __builtin_vec_any_gev16qi
-#define vec_any_geuv16qi __builtin_vec_any_geuv16qi
-#define vec_any_gev8hi __builtin_vec_any_gev8hi
-#define vec_any_geuv8hi __builtin_vec_any_geuv8hi
-#define vec_any_gev4si __builtin_vec_any_gev4si
-#define vec_any_geuv4si __builtin_vec_any_geuv4si
-#define vec_any_gev2di __builtin_vec_any_gev2di
-#define vec_any_geuv2di __builtin_vec_any_geuv2di
-#define vec_any_gev2df __builtin_vec_any_gev2df
-#define vec_any_gtv2df __builtin_vec_any_gtv2df
#define vec_any_eq __builtin_s390_vec_any_eq
#define vec_any_ne __builtin_s390_vec_any_ne
#define vec_any_ge __builtin_s390_vec_any_ge
@@ -233,9 +200,7 @@ vec_any_numeric (__vector double a)
#define vec_gfmsum_accum __builtin_s390_vec_gfmsum_accum
#define vec_abs __builtin_s390_vec_abs
#define vec_max __builtin_s390_vec_max
-#define vec_max_dbl __builtin_s390_vec_max_dbl
#define vec_min __builtin_s390_vec_min
-#define vec_min_dbl __builtin_s390_vec_min_dbl
#define vec_mladd __builtin_s390_vec_mladd
#define vec_mhadd __builtin_s390_vec_mhadd
#define vec_meadd __builtin_s390_vec_meadd
--
1.7.9.5
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 6/8] S/390: Make builtin creation conditional.
2015-06-24 6:57 [PATCH 0/8] S/390: z13 support fixes and improvements Andreas Krebbel
` (4 preceding siblings ...)
2015-06-24 6:57 ` [PATCH 8/8] S/390: Switch mode attribute to bhfgq for vec scatter patterns Andreas Krebbel
@ 2015-06-24 6:58 ` Andreas Krebbel
2015-06-24 6:58 ` [PATCH 5/8] S/390: Remove internal builtins from vecintrin.h Andreas Krebbel
2015-06-24 7:10 ` [PATCH 4/8] S/390: Fix s390_secondary_reload register class check Andreas Krebbel
7 siblings, 0 replies; 11+ messages in thread
From: Andreas Krebbel @ 2015-06-24 6:58 UTC (permalink / raw)
To: gcc-patches
With this patch builtins together with their function types are only
generated if the proper flags are enabled. This has the following
effects:
- Using builtins which aren't enabled with the current -march setting
will result in a link error.
- Variable numbering and decl UIDs aren't influenced by unused
builtins what minimizes the effect on code not using them. These
numbers otherwise affect the hash functions used in CSE, PRE, ...
- Faster initialization phase and smaller memory footprint. With z13
we have added tons of builins which should not eat up memory when
not being enabled.
gcc/ChangeLog:
* config/s390/s390-builtin-types.def: Add flag to indicate the
options under which the function type is needed.
* config/s390/s390-builtins.def: Add flag to indicate the options
under which the builtin is enabled.
* config/s390/s390-builtins.h: Add flags parameter to macro
definitions.
(bflags_for_builtin): New function.
(flags_for_builtin): Renamed to ...
(opflags_for_builtin): ... this.
* config/s390/s390-c.c (s390_resolve_overloaded_builtin): Rename
flags_for_builtin to bflags_for_builtin and
flags_overloaded_builtin_var to opflags_overloaded_builtin_var.
* config/s390/s390.c: Add initialization of bflags_builtin and
opflags_builtin arrays.
Remove code for flags_builtin.
(s390_init_builtins): Only create builtin function types if one of
their flags is active.
Only create builtins if all of their flags are active.
(s390_expand_builtin): Rename flags_for_builtin to
opflags_for_builtin.
---
gcc/config/s390/s390-builtin-types.def | 585 +++++++--------
gcc/config/s390/s390-builtins.def | 1215 ++++++++++++++++----------------
gcc/config/s390/s390-builtins.h | 37 +-
gcc/config/s390/s390-c.c | 11 +-
gcc/config/s390/s390.c | 112 ++-
5 files changed, 1005 insertions(+), 955 deletions(-)
diff --git a/gcc/config/s390/s390-builtin-types.def b/gcc/config/s390/s390-builtin-types.def
index 8c65ae6..245d538 100644
--- a/gcc/config/s390/s390-builtin-types.def
+++ b/gcc/config/s390/s390-builtin-types.def
@@ -19,309 +19,314 @@
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
-#define DEF_FN_TYPE_1(FN_TYPE, T1) \
+#define DEF_FN_TYPE_1(FN_TYPE, FLAGS, T1) \
DEF_FN_TYPE (FN_TYPE, \
+ FLAGS, \
s390_builtin_types[T1])
-#define DEF_FN_TYPE_2(FN_TYPE, T1, T2) \
+#define DEF_FN_TYPE_2(FN_TYPE, FLAGS, T1, T2) \
DEF_FN_TYPE (FN_TYPE, \
+ FLAGS, \
s390_builtin_types[T1], \
s390_builtin_types[T2])
-#define DEF_FN_TYPE_3(FN_TYPE, T1, T2, T3) \
- DEF_FN_TYPE (FN_TYPE, \
- s390_builtin_types[T1], \
- s390_builtin_types[T2], \
- s390_builtin_types[T3])
-#define DEF_FN_TYPE_4(FN_TYPE, T1, T2, T3, T4) \
- DEF_FN_TYPE (FN_TYPE, \
- s390_builtin_types[T1], \
- s390_builtin_types[T2], \
- s390_builtin_types[T3], \
- s390_builtin_types[T4])
-#define DEF_FN_TYPE_5(FN_TYPE, T1, T2, T3, T4, T5) \
+#define DEF_FN_TYPE_3(FN_TYPE, FLAGS, T1, T2, T3) \
DEF_FN_TYPE (FN_TYPE, \
+ FLAGS, \
s390_builtin_types[T1], \
s390_builtin_types[T2], \
- s390_builtin_types[T3], \
- s390_builtin_types[T4], \
- s390_builtin_types[T5])
-#define DEF_FN_TYPE_6(FN_TYPE, T1, T2, T3, T4, T5, T6) \
+ s390_builtin_types[T3])
+#define DEF_FN_TYPE_4(FN_TYPE, FLAGS, T1, T2, T3, T4) \
DEF_FN_TYPE (FN_TYPE, \
+ FLAGS, \
s390_builtin_types[T1], \
s390_builtin_types[T2], \
s390_builtin_types[T3], \
- s390_builtin_types[T4], \
- s390_builtin_types[T5], \
+ s390_builtin_types[T4])
+#define DEF_FN_TYPE_5(FN_TYPE, FLAGS, T1, T2, T3, T4, T5) \
+ DEF_FN_TYPE (FN_TYPE, \
+ FLAGS, \
+ s390_builtin_types[T1], \
+ s390_builtin_types[T2], \
+ s390_builtin_types[T3], \
+ s390_builtin_types[T4], \
+ s390_builtin_types[T5])
+#define DEF_FN_TYPE_6(FN_TYPE, FLAGS, T1, T2, T3, T4, T5, T6) \
+ DEF_FN_TYPE (FN_TYPE, \
+ FLAGS, \
+ s390_builtin_types[T1], \
+ s390_builtin_types[T2], \
+ s390_builtin_types[T3], \
+ s390_builtin_types[T4], \
+ s390_builtin_types[T5], \
s390_builtin_types[T6])
-
-DEF_TYPE (BT_DBL, double_type_node, 0)
-DEF_TYPE (BT_DBLCONST, double_type_node, 1)
-DEF_TYPE (BT_FLTCONST, float_type_node, 1)
-DEF_TYPE (BT_FLT, float_type_node, 0)
-DEF_TYPE (BT_INTCONST, integer_type_node, 1)
-DEF_TYPE (BT_INT, integer_type_node, 0)
-DEF_TYPE (BT_LONG, long_integer_type_node, 0)
-DEF_TYPE (BT_LONGLONGCONST, long_long_integer_type_node, 1)
-DEF_TYPE (BT_LONGLONG, long_long_integer_type_node, 0)
-DEF_TYPE (BT_UCHAR, unsigned_char_type_node, 0)
-DEF_TYPE (BT_SCHAR, signed_char_type_node, 0)
-DEF_TYPE (BT_SCHARCONST, signed_char_type_node, 1)
-DEF_TYPE (BT_SHORTCONST, short_integer_type_node, 1)
-DEF_TYPE (BT_SHORT, short_integer_type_node, 0)
-DEF_TYPE (BT_UINT64, c_uint64_type_node, 0)
-DEF_TYPE (BT_UINT, unsigned_type_node, 0)
-DEF_TYPE (BT_UCHARCONST, unsigned_char_type_node, 1)
-DEF_TYPE (BT_UINTCONST, unsigned_type_node, 1)
-DEF_TYPE (BT_ULONGLONGCONST, long_long_unsigned_type_node, 1)
-DEF_TYPE (BT_USHORTCONST, short_unsigned_type_node, 1)
-DEF_TYPE (BT_VOIDCONST, void_type_node, 1)
-DEF_TYPE (BT_VOID, void_type_node, 0)
-DEF_TYPE (BT_ULONG, long_unsigned_type_node, 0)
-DEF_TYPE (BT_ULONGLONG, long_long_unsigned_type_node, 0)
-DEF_TYPE (BT_USHORT, short_unsigned_type_node, 0)
-DEF_DISTINCT_TYPE (BT_BCHAR, BT_UCHAR)
-DEF_DISTINCT_TYPE (BT_BINT, BT_UINT)
-DEF_DISTINCT_TYPE (BT_BLONGLONG, BT_ULONGLONG)
-DEF_DISTINCT_TYPE (BT_BSHORT, BT_USHORT)
-DEF_POINTER_TYPE (BT_DBLPTR, BT_DBL)
-DEF_POINTER_TYPE (BT_DBLCONSTPTR, BT_DBLCONST)
-DEF_POINTER_TYPE (BT_FLTPTR, BT_FLT)
-DEF_POINTER_TYPE (BT_FLTCONSTPTR, BT_FLTCONST)
-DEF_POINTER_TYPE (BT_INTCONSTPTR, BT_INTCONST)
-DEF_POINTER_TYPE (BT_INTPTR, BT_INT)
-DEF_POINTER_TYPE (BT_LONGLONGCONSTPTR, BT_LONGLONGCONST)
-DEF_POINTER_TYPE (BT_LONGLONGPTR, BT_LONGLONG)
-DEF_POINTER_TYPE (BT_SCHARCONSTPTR, BT_SCHARCONST)
-DEF_POINTER_TYPE (BT_SCHARPTR, BT_SCHAR)
-DEF_POINTER_TYPE (BT_SHORTPTR, BT_SHORT)
-DEF_POINTER_TYPE (BT_SHORTCONSTPTR, BT_SHORTCONST)
-DEF_POINTER_TYPE (BT_UCHARPTR, BT_UCHAR)
-DEF_POINTER_TYPE (BT_UCHARCONSTPTR, BT_UCHARCONST)
-DEF_POINTER_TYPE (BT_UINTPTR, BT_UINT)
-DEF_POINTER_TYPE (BT_UINTCONSTPTR, BT_UINTCONST)
-DEF_POINTER_TYPE (BT_UINT64PTR, BT_UINT64)
-DEF_POINTER_TYPE (BT_ULONGLONGPTR, BT_ULONGLONG)
-DEF_POINTER_TYPE (BT_ULONGLONGCONSTPTR, BT_ULONGLONGCONST)
-DEF_POINTER_TYPE (BT_USHORTCONSTPTR, BT_USHORTCONST)
-DEF_POINTER_TYPE (BT_USHORTPTR, BT_USHORT)
-DEF_POINTER_TYPE (BT_VOIDPTR, BT_VOID)
-DEF_POINTER_TYPE (BT_VOIDCONSTPTR, BT_VOIDCONST)
-DEF_VECTOR_TYPE (BT_V16QI, BT_SCHAR, 16)
-DEF_VECTOR_TYPE (BT_V2DF, BT_DBL, 2)
-DEF_VECTOR_TYPE (BT_V2DI, BT_LONGLONG, 2)
-DEF_VECTOR_TYPE (BT_V4SI, BT_INT, 4)
-DEF_VECTOR_TYPE (BT_V8HI, BT_SHORT, 8)
-DEF_VECTOR_TYPE (BT_UV16QI, BT_UCHAR, 16)
-DEF_VECTOR_TYPE (BT_UV2DI, BT_ULONGLONG, 2)
-DEF_VECTOR_TYPE (BT_UV4SI, BT_UINT, 4)
-DEF_VECTOR_TYPE (BT_UV8HI, BT_USHORT, 8)
-DEF_OPAQUE_VECTOR_TYPE (BT_OV2DI, BT_LONGLONG, 2)
-DEF_OPAQUE_VECTOR_TYPE (BT_OV4SI, BT_INT, 4)
-DEF_OPAQUE_VECTOR_TYPE (BT_OUV4SI, BT_UINT, 4)
-DEF_OPAQUE_VECTOR_TYPE (BT_BV16QI, BT_BCHAR, 16)
-DEF_OPAQUE_VECTOR_TYPE (BT_BV2DI, BT_BLONGLONG, 2)
-DEF_OPAQUE_VECTOR_TYPE (BT_BV4SI, BT_BINT, 4)
-DEF_OPAQUE_VECTOR_TYPE (BT_BV8HI, BT_BSHORT, 8)
-DEF_FN_TYPE_1 (BT_FN_UINT, BT_UINT)
-DEF_FN_TYPE_1 (BT_FN_INT, BT_INT)
-DEF_FN_TYPE_2 (BT_FN_VOID_UINT, BT_VOID, BT_UINT)
-DEF_FN_TYPE_2 (BT_FN_VOID_INT, BT_VOID, BT_INT)
-DEF_FN_TYPE_2 (BT_FN_INT_INT, BT_INT, BT_INT)
-DEF_FN_TYPE_2 (BT_FN_INT_VOIDPTR, BT_INT, BT_VOIDPTR)
-DEF_FN_TYPE_2 (BT_FN_UV16QI_UCHARCONSTPTR, BT_UV16QI, BT_UCHARCONSTPTR)
-DEF_FN_TYPE_2 (BT_FN_UV16QI_USHORT, BT_UV16QI, BT_USHORT)
-DEF_FN_TYPE_2 (BT_FN_UV16QI_UCHAR, BT_UV16QI, BT_UCHAR)
-DEF_FN_TYPE_2 (BT_FN_UV16QI_UV16QI, BT_UV16QI, BT_UV16QI)
-DEF_FN_TYPE_2 (BT_FN_UV2DI_ULONGLONG, BT_UV2DI, BT_ULONGLONG)
-DEF_FN_TYPE_2 (BT_FN_UV2DI_ULONGLONGCONSTPTR, BT_UV2DI, BT_ULONGLONGCONSTPTR)
-DEF_FN_TYPE_2 (BT_FN_UV2DI_UV2DI, BT_UV2DI, BT_UV2DI)
-DEF_FN_TYPE_2 (BT_FN_UV2DI_UV4SI, BT_UV2DI, BT_UV4SI)
-DEF_FN_TYPE_2 (BT_FN_OV4SI_INTCONSTPTR, BT_OV4SI, BT_INTCONSTPTR)
-DEF_FN_TYPE_2 (BT_FN_UV4SI_UV4SI, BT_UV4SI, BT_UV4SI)
-DEF_FN_TYPE_2 (BT_FN_OV4SI_INT, BT_OV4SI, BT_INT)
-DEF_FN_TYPE_2 (BT_FN_OV4SI_OV4SI, BT_OV4SI, BT_OV4SI)
-DEF_FN_TYPE_2 (BT_FN_UV4SI_UINTCONSTPTR, BT_UV4SI, BT_UINTCONSTPTR)
-DEF_FN_TYPE_2 (BT_FN_UV4SI_UV8HI, BT_UV4SI, BT_UV8HI)
-DEF_FN_TYPE_2 (BT_FN_UV4SI_UINT, BT_UV4SI, BT_UINT)
-DEF_FN_TYPE_2 (BT_FN_UV8HI_USHORT, BT_UV8HI, BT_USHORT)
-DEF_FN_TYPE_2 (BT_FN_UV8HI_UV16QI, BT_UV8HI, BT_UV16QI)
-DEF_FN_TYPE_2 (BT_FN_UV8HI_UV8HI, BT_UV8HI, BT_UV8HI)
-DEF_FN_TYPE_2 (BT_FN_UV8HI_USHORTCONSTPTR, BT_UV8HI, BT_USHORTCONSTPTR)
-DEF_FN_TYPE_2 (BT_FN_V16QI_UCHAR, BT_V16QI, BT_UCHAR)
-DEF_FN_TYPE_2 (BT_FN_V16QI_V16QI, BT_V16QI, BT_V16QI)
-DEF_FN_TYPE_2 (BT_FN_V2DI_V16QI, BT_V2DI, BT_V16QI)
-DEF_FN_TYPE_2 (BT_FN_V2DI_V2DI, BT_V2DI, BT_V2DI)
-DEF_FN_TYPE_2 (BT_FN_V2DI_SHORT, BT_V2DI, BT_SHORT)
-DEF_FN_TYPE_2 (BT_FN_V2DF_V2DF, BT_V2DF, BT_V2DF)
-DEF_FN_TYPE_2 (BT_FN_V2DI_V8HI, BT_V2DI, BT_V8HI)
-DEF_FN_TYPE_2 (BT_FN_V2DF_FLTCONSTPTR, BT_V2DF, BT_FLTCONSTPTR)
-DEF_FN_TYPE_2 (BT_FN_V2DI_V4SI, BT_V2DI, BT_V4SI)
-DEF_FN_TYPE_2 (BT_FN_V2DF_DBL, BT_V2DF, BT_DBL)
-DEF_FN_TYPE_2 (BT_FN_V4SI_V8HI, BT_V4SI, BT_V8HI)
-DEF_FN_TYPE_2 (BT_FN_V4SI_V4SI, BT_V4SI, BT_V4SI)
-DEF_FN_TYPE_2 (BT_FN_V4SI_SHORT, BT_V4SI, BT_SHORT)
-DEF_FN_TYPE_2 (BT_FN_V8HI_V16QI, BT_V8HI, BT_V16QI)
-DEF_FN_TYPE_2 (BT_FN_V8HI_V8HI, BT_V8HI, BT_V8HI)
-DEF_FN_TYPE_2 (BT_FN_V8HI_SHORT, BT_V8HI, BT_SHORT)
-DEF_FN_TYPE_3 (BT_FN_INT_V2DI_V2DI, BT_INT, BT_V2DI, BT_V2DI)
-DEF_FN_TYPE_3 (BT_FN_INT_OV4SI_OV4SI, BT_INT, BT_OV4SI, BT_OV4SI)
-DEF_FN_TYPE_3 (BT_FN_INT_V2DF_V2DF, BT_INT, BT_V2DF, BT_V2DF)
-DEF_FN_TYPE_3 (BT_FN_USHORT_UV8HI_INT, BT_USHORT, BT_UV8HI, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_INT_UV2DI_UV2DI, BT_INT, BT_UV2DI, BT_UV2DI)
-DEF_FN_TYPE_3 (BT_FN_ULONGLONG_UV2DI_INT, BT_ULONGLONG, BT_UV2DI, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_INT_UV4SI_UV4SI, BT_INT, BT_UV4SI, BT_UV4SI)
-DEF_FN_TYPE_3 (BT_FN_UCHAR_UV16QI_INT, BT_UCHAR, BT_UV16QI, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_INT_UV8HI_UV8HI, BT_INT, BT_UV8HI, BT_UV8HI)
-DEF_FN_TYPE_3 (BT_FN_INT_V4SI_V4SI, BT_INT, BT_V4SI, BT_V4SI)
-DEF_FN_TYPE_3 (BT_FN_INT_UV16QI_UV16QI, BT_INT, BT_UV16QI, BT_UV16QI)
-DEF_FN_TYPE_3 (BT_FN_INT_V16QI_V16QI, BT_INT, BT_V16QI, BT_V16QI)
-DEF_FN_TYPE_3 (BT_FN_INT_VOIDPTR_INT, BT_INT, BT_VOIDPTR, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_DBL_V2DF_INT, BT_DBL, BT_V2DF, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_VOID_UINT64PTR_UINT64, BT_VOID, BT_UINT64PTR, BT_UINT64)
-DEF_FN_TYPE_3 (BT_FN_INT_V8HI_V8HI, BT_INT, BT_V8HI, BT_V8HI)
-DEF_FN_TYPE_3 (BT_FN_UINT_VOIDCONSTPTR_INT, BT_UINT, BT_VOIDCONSTPTR, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_INT_OV4SI_INT, BT_INT, BT_OV4SI, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_VOID_V2DF_FLTPTR, BT_VOID, BT_V2DF, BT_FLTPTR)
-DEF_FN_TYPE_3 (BT_FN_UINT_UV4SI_INT, BT_UINT, BT_UV4SI, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_UV16QI_UV8HI_UV8HI, BT_UV16QI, BT_UV8HI, BT_UV8HI)
-DEF_FN_TYPE_3 (BT_FN_UV16QI_UCHARCONSTPTR_USHORT, BT_UV16QI, BT_UCHARCONSTPTR, BT_USHORT)
-DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI)
-DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_UCHAR, BT_UV16QI, BT_UV16QI, BT_UCHAR)
-DEF_FN_TYPE_3 (BT_FN_UV16QI_UV4SI_UV4SI, BT_UV16QI, BT_UV4SI, BT_UV4SI)
-DEF_FN_TYPE_3 (BT_FN_UV16QI_UCHAR_UCHAR, BT_UV16QI, BT_UCHAR, BT_UCHAR)
-DEF_FN_TYPE_3 (BT_FN_UV16QI_UCHAR_INT, BT_UV16QI, BT_UCHAR, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_UV16QI_UV2DI_UV2DI, BT_UV16QI, BT_UV2DI, BT_UV2DI)
-DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_UINT, BT_UV16QI, BT_UV16QI, BT_UINT)
-DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_INTPTR, BT_UV16QI, BT_UV16QI, BT_INTPTR)
-DEF_FN_TYPE_3 (BT_FN_UV2DI_V2DF_INT, BT_UV2DI, BT_V2DF, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_UV2DI_UV2DI_UINT, BT_UV2DI, BT_UV2DI, BT_UINT)
-DEF_FN_TYPE_3 (BT_FN_OV2DI_LONGLONG_LONGLONG, BT_OV2DI, BT_LONGLONG, BT_LONGLONG)
-DEF_FN_TYPE_3 (BT_FN_UV2DI_UV2DI_UV2DI, BT_UV2DI, BT_UV2DI, BT_UV2DI)
-DEF_FN_TYPE_3 (BT_FN_UV2DI_UV2DI_UCHAR, BT_UV2DI, BT_UV2DI, BT_UCHAR)
-DEF_FN_TYPE_3 (BT_FN_UV2DI_ULONGLONG_INT, BT_UV2DI, BT_ULONGLONG, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_UV2DI_UV8HI_UV8HI, BT_UV2DI, BT_UV8HI, BT_UV8HI)
-DEF_FN_TYPE_3 (BT_FN_UV2DI_UCHAR_UCHAR, BT_UV2DI, BT_UCHAR, BT_UCHAR)
-DEF_FN_TYPE_3 (BT_FN_UV2DI_UV4SI_UV4SI, BT_UV2DI, BT_UV4SI, BT_UV4SI)
-DEF_FN_TYPE_3 (BT_FN_OV4SI_INT_INT, BT_OV4SI, BT_INT, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_UV4SI_UINT_INT, BT_UV4SI, BT_UINT, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_UV4SI_UV4SI_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI)
-DEF_FN_TYPE_3 (BT_FN_UV4SI_UV4SI_UCHAR, BT_UV4SI, BT_UV4SI, BT_UCHAR)
-DEF_FN_TYPE_3 (BT_FN_UV4SI_UV8HI_UV8HI, BT_UV4SI, BT_UV8HI, BT_UV8HI)
-DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_UCHAR, BT_OV4SI, BT_OV4SI, BT_UCHAR)
-DEF_FN_TYPE_3 (BT_FN_UV4SI_UV4SI_UINT, BT_UV4SI, BT_UV4SI, BT_UINT)
-DEF_FN_TYPE_3 (BT_FN_UV4SI_UV16QI_UV16QI, BT_UV4SI, BT_UV16QI, BT_UV16QI)
-DEF_FN_TYPE_3 (BT_FN_OV4SI_INTCONSTPTR_INT, BT_OV4SI, BT_INTCONSTPTR, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_INTPTR, BT_OV4SI, BT_OV4SI, BT_INTPTR)
-DEF_FN_TYPE_3 (BT_FN_UV4SI_UV2DI_UV2DI, BT_UV4SI, BT_UV2DI, BT_UV2DI)
-DEF_FN_TYPE_3 (BT_FN_OV4SI_INTCONSTPTR_UINT, BT_OV4SI, BT_INTCONSTPTR, BT_UINT)
-DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_ULONG, BT_OV4SI, BT_OV4SI, BT_ULONG)
-DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_OV4SI, BT_OV4SI, BT_OV4SI, BT_OV4SI)
-DEF_FN_TYPE_3 (BT_FN_UV4SI_UCHAR_UCHAR, BT_UV4SI, BT_UCHAR, BT_UCHAR)
-DEF_FN_TYPE_3 (BT_FN_UV4SI_UV4SI_INTPTR, BT_UV4SI, BT_UV4SI, BT_INTPTR)
-DEF_FN_TYPE_3 (BT_FN_UV8HI_UV4SI_UV4SI, BT_UV8HI, BT_UV4SI, BT_UV4SI)
-DEF_FN_TYPE_3 (BT_FN_UV8HI_UV16QI_UV16QI, BT_UV8HI, BT_UV16QI, BT_UV16QI)
-DEF_FN_TYPE_3 (BT_FN_UV8HI_UCHAR_UCHAR, BT_UV8HI, BT_UCHAR, BT_UCHAR)
-DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI)
-DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_UCHAR, BT_UV8HI, BT_UV8HI, BT_UCHAR)
-DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_INTPTR, BT_UV8HI, BT_UV8HI, BT_INTPTR)
-DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_UINT, BT_UV8HI, BT_UV8HI, BT_UINT)
-DEF_FN_TYPE_3 (BT_FN_UV8HI_USHORT_INT, BT_UV8HI, BT_USHORT, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_V16QI_UV16QI_UV16QI, BT_V16QI, BT_UV16QI, BT_UV16QI)
-DEF_FN_TYPE_3 (BT_FN_V16QI_UINT_VOIDCONSTPTR, BT_V16QI, BT_UINT, BT_VOIDCONSTPTR)
-DEF_FN_TYPE_3 (BT_FN_V16QI_V8HI_V8HI, BT_V16QI, BT_V8HI, BT_V8HI)
-DEF_FN_TYPE_3 (BT_FN_V16QI_BV16QI_V16QI, BT_V16QI, BT_BV16QI, BT_V16QI)
-DEF_FN_TYPE_3 (BT_FN_V16QI_V16QI_V16QI, BT_V16QI, BT_V16QI, BT_V16QI)
-DEF_FN_TYPE_3 (BT_FN_V2DI_V2DF_INT, BT_V2DI, BT_V2DF, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_V2DI_V2DF_V2DF, BT_V2DI, BT_V2DF, BT_V2DF)
-DEF_FN_TYPE_3 (BT_FN_V2DI_V4SI_V4SI, BT_V2DI, BT_V4SI, BT_V4SI)
-DEF_FN_TYPE_3 (BT_FN_V2DI_UV2DI_UV2DI, BT_V2DI, BT_UV2DI, BT_UV2DI)
-DEF_FN_TYPE_3 (BT_FN_V2DI_V2DI_V2DI, BT_V2DI, BT_V2DI, BT_V2DI)
-DEF_FN_TYPE_3 (BT_FN_V2DF_V2DI_INT, BT_V2DF, BT_V2DI, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_V2DF_UV2DI_INT, BT_V2DF, BT_UV2DI, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_V2DF_V2DF_V2DF, BT_V2DF, BT_V2DF, BT_V2DF)
-DEF_FN_TYPE_3 (BT_FN_V2DF_DBL_INT, BT_V2DF, BT_DBL, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_V2DI_BV2DI_V2DI, BT_V2DI, BT_BV2DI, BT_V2DI)
-DEF_FN_TYPE_3 (BT_FN_V2DF_UV4SI_INT, BT_V2DF, BT_UV4SI, BT_INT)
-DEF_FN_TYPE_3 (BT_FN_V4SI_V4SI_V4SI, BT_V4SI, BT_V4SI, BT_V4SI)
-DEF_FN_TYPE_3 (BT_FN_V4SI_V8HI_V8HI, BT_V4SI, BT_V8HI, BT_V8HI)
-DEF_FN_TYPE_3 (BT_FN_V4SI_INT_VOIDPTR, BT_V4SI, BT_INT, BT_VOIDPTR)
-DEF_FN_TYPE_3 (BT_FN_V4SI_V2DI_V2DI, BT_V4SI, BT_V2DI, BT_V2DI)
-DEF_FN_TYPE_3 (BT_FN_V4SI_UV4SI_UV4SI, BT_V4SI, BT_UV4SI, BT_UV4SI)
-DEF_FN_TYPE_3 (BT_FN_V4SI_BV4SI_V4SI, BT_V4SI, BT_BV4SI, BT_V4SI)
-DEF_FN_TYPE_3 (BT_FN_V8HI_BV8HI_V8HI, BT_V8HI, BT_BV8HI, BT_V8HI)
-DEF_FN_TYPE_3 (BT_FN_V8HI_V16QI_V16QI, BT_V8HI, BT_V16QI, BT_V16QI)
-DEF_FN_TYPE_3 (BT_FN_V8HI_V4SI_V4SI, BT_V8HI, BT_V4SI, BT_V4SI)
-DEF_FN_TYPE_3 (BT_FN_V8HI_UV8HI_UV8HI, BT_V8HI, BT_UV8HI, BT_UV8HI)
-DEF_FN_TYPE_3 (BT_FN_V8HI_V8HI_V8HI, BT_V8HI, BT_V8HI, BT_V8HI)
-DEF_FN_TYPE_4 (BT_FN_VOID_OV4SI_VOIDPTR_UINT, BT_VOID, BT_OV4SI, BT_VOIDPTR, BT_UINT)
-DEF_FN_TYPE_4 (BT_FN_INT_OV4SI_OV4SI_INTPTR, BT_INT, BT_OV4SI, BT_OV4SI, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_VOID_V16QI_UINT_VOIDPTR, BT_VOID, BT_V16QI, BT_UINT, BT_VOIDPTR)
-DEF_FN_TYPE_4 (BT_FN_VOID_OV4SI_INT_VOIDPTR, BT_VOID, BT_OV4SI, BT_INT, BT_VOIDPTR)
-DEF_FN_TYPE_4 (BT_FN_UV16QI_UV16QI_UV16QI_INTPTR, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_UV16QI_UV16QI_UV16QI_INT, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INT)
-DEF_FN_TYPE_4 (BT_FN_UV16QI_UV16QI_UCHAR_INT, BT_UV16QI, BT_UV16QI, BT_UCHAR, BT_INT)
-DEF_FN_TYPE_4 (BT_FN_UV16QI_UV16QI_UV16QI_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI)
-DEF_FN_TYPE_4 (BT_FN_UV16QI_UV8HI_UV8HI_INTPTR, BT_UV16QI, BT_UV8HI, BT_UV8HI, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_UV16QI_UV2DI_UV2DI_UV16QI, BT_UV16QI, BT_UV2DI, BT_UV2DI, BT_UV16QI)
-DEF_FN_TYPE_4 (BT_FN_UV2DI_UV2DI_UV2DI_INT, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_INT)
-DEF_FN_TYPE_4 (BT_FN_UV2DI_UV4SI_UV4SI_UV2DI, BT_UV2DI, BT_UV4SI, BT_UV4SI, BT_UV2DI)
-DEF_FN_TYPE_4 (BT_FN_UV2DI_UV2DI_ULONGLONG_INT, BT_UV2DI, BT_UV2DI, BT_ULONGLONG, BT_INT)
-DEF_FN_TYPE_4 (BT_FN_UV4SI_UV2DI_UV2DI_INTPTR, BT_UV4SI, BT_UV2DI, BT_UV2DI, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI)
-DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_INTPTR, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_INT, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_INT)
-DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_INTPTR, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_OV4SI_INT_OV4SI_INT, BT_OV4SI, BT_INT, BT_OV4SI, BT_INT)
-DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_INT, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INT)
-DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_ULONGLONG, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_ULONGLONG)
-DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_OV4SI, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_OV4SI)
-DEF_FN_TYPE_4 (BT_FN_UV4SI_UV8HI_UV8HI_UV4SI, BT_UV4SI, BT_UV8HI, BT_UV8HI, BT_UV4SI)
-DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UINT_INT, BT_UV4SI, BT_UV4SI, BT_UINT, BT_INT)
-DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_UCHAR, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_UCHAR)
-DEF_FN_TYPE_4 (BT_FN_UV8HI_UV4SI_UV4SI_INTPTR, BT_UV8HI, BT_UV4SI, BT_UV4SI, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_UV8HI_INT, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT)
-DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_UV8HI_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI)
-DEF_FN_TYPE_4 (BT_FN_UV8HI_UV16QI_UV16QI_UV8HI, BT_UV8HI, BT_UV16QI, BT_UV16QI, BT_UV8HI)
-DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_UV8HI_INTPTR, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_USHORT_INT, BT_UV8HI, BT_UV8HI, BT_USHORT, BT_INT)
-DEF_FN_TYPE_4 (BT_FN_V16QI_V8HI_V8HI_INTPTR, BT_V16QI, BT_V8HI, BT_V8HI, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_V16QI_V16QI_V16QI_INTPTR, BT_V16QI, BT_V16QI, BT_V16QI, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_V16QI_UV16QI_UV16QI_INTPTR, BT_V16QI, BT_UV16QI, BT_UV16QI, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_V16QI_V16QI_V16QI_V16QI, BT_V16QI, BT_V16QI, BT_V16QI, BT_V16QI)
-DEF_FN_TYPE_4 (BT_FN_V2DI_V2DF_INT_INTPTR, BT_V2DI, BT_V2DF, BT_INT, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_V2DI_V2DI_V2DI_INTPTR, BT_V2DI, BT_V2DI, BT_V2DI, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_V2DF_V2DF_DBL_INT, BT_V2DF, BT_V2DF, BT_DBL, BT_INT)
-DEF_FN_TYPE_4 (BT_FN_V2DF_V2DF_UCHAR_UCHAR, BT_V2DF, BT_V2DF, BT_UCHAR, BT_UCHAR)
-DEF_FN_TYPE_4 (BT_FN_V2DI_V2DF_V2DF_INTPTR, BT_V2DI, BT_V2DF, BT_V2DF, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_V2DI_V4SI_V4SI_V2DI, BT_V2DI, BT_V4SI, BT_V4SI, BT_V2DI)
-DEF_FN_TYPE_4 (BT_FN_V2DF_V2DF_V2DF_V2DF, BT_V2DF, BT_V2DF, BT_V2DF, BT_V2DF)
-DEF_FN_TYPE_4 (BT_FN_V2DI_UV2DI_UV2DI_INTPTR, BT_V2DI, BT_UV2DI, BT_UV2DI, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_V4SI_V8HI_V8HI_V4SI, BT_V4SI, BT_V8HI, BT_V8HI, BT_V4SI)
-DEF_FN_TYPE_4 (BT_FN_V4SI_UV4SI_UV4SI_INTPTR, BT_V4SI, BT_UV4SI, BT_UV4SI, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_V4SI_V2DI_V2DI_INTPTR, BT_V4SI, BT_V2DI, BT_V2DI, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_V4SI_V4SI_V4SI_INTPTR, BT_V4SI, BT_V4SI, BT_V4SI, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_V4SI_V4SI_V4SI_V4SI, BT_V4SI, BT_V4SI, BT_V4SI, BT_V4SI)
-DEF_FN_TYPE_4 (BT_FN_V8HI_V8HI_V8HI_V8HI, BT_V8HI, BT_V8HI, BT_V8HI, BT_V8HI)
-DEF_FN_TYPE_4 (BT_FN_V8HI_UV8HI_UV8HI_INTPTR, BT_V8HI, BT_UV8HI, BT_UV8HI, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_V8HI_V16QI_V16QI_V8HI, BT_V8HI, BT_V16QI, BT_V16QI, BT_V8HI)
-DEF_FN_TYPE_4 (BT_FN_V8HI_V8HI_V8HI_INTPTR, BT_V8HI, BT_V8HI, BT_V8HI, BT_INTPTR)
-DEF_FN_TYPE_4 (BT_FN_V8HI_V4SI_V4SI_INTPTR, BT_V8HI, BT_V4SI, BT_V4SI, BT_INTPTR)
-DEF_FN_TYPE_5 (BT_FN_VOID_UV4SI_UV4SI_UINTPTR_ULONGLONG, BT_VOID, BT_UV4SI, BT_UV4SI, BT_UINTPTR, BT_ULONGLONG)
-DEF_FN_TYPE_5 (BT_FN_VOID_UV2DI_UV2DI_ULONGLONGPTR_ULONGLONG, BT_VOID, BT_UV2DI, BT_UV2DI, BT_ULONGLONGPTR, BT_ULONGLONG)
-DEF_FN_TYPE_5 (BT_FN_VOID_V4SI_V4SI_INTPTR_ULONGLONG, BT_VOID, BT_V4SI, BT_V4SI, BT_INTPTR, BT_ULONGLONG)
-DEF_FN_TYPE_5 (BT_FN_UV16QI_UV16QI_UV16QI_INT_INTPTR, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INT, BT_INTPTR)
-DEF_FN_TYPE_5 (BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INT, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INT)
-DEF_FN_TYPE_5 (BT_FN_UV2DI_UV2DI_UV2DI_UV2DI_INT, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_INT)
-DEF_FN_TYPE_5 (BT_FN_UV2DI_UV2DI_UV2DI_ULONGLONGCONSTPTR_UCHAR, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_ULONGLONGCONSTPTR, BT_UCHAR)
-DEF_FN_TYPE_5 (BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INT)
-DEF_FN_TYPE_5 (BT_FN_UV4SI_UV4SI_UV4SI_INT_INTPTR, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INT, BT_INTPTR)
-DEF_FN_TYPE_5 (BT_FN_OV4SI_OV4SI_OV4SI_OV4SI_INTPTR, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_INTPTR)
-DEF_FN_TYPE_5 (BT_FN_OV4SI_OV4SI_OUV4SI_INTCONSTPTR_UCHAR, BT_OV4SI, BT_OV4SI, BT_OUV4SI, BT_INTCONSTPTR, BT_UCHAR)
-DEF_FN_TYPE_5 (BT_FN_UV4SI_UV4SI_UV4SI_UINTCONSTPTR_UCHAR, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UINTCONSTPTR, BT_UCHAR)
-DEF_FN_TYPE_5 (BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT)
-DEF_FN_TYPE_5 (BT_FN_UV8HI_UV8HI_UV8HI_INT_INTPTR, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT, BT_INTPTR)
-DEF_FN_TYPE_6 (BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INT_INTPTR, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INT, BT_INTPTR)
-DEF_FN_TYPE_6 (BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT_INTPTR, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INT, BT_INTPTR)
-DEF_FN_TYPE_6 (BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT_INTPTR, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT, BT_INTPTR)
+DEF_TYPE (BT_DBL, B_VX, double_type_node, 0)
+DEF_TYPE (BT_DBLCONST, B_VX, double_type_node, 1)
+DEF_TYPE (BT_FLT, B_VX, float_type_node, 0)
+DEF_TYPE (BT_FLTCONST, B_VX, float_type_node, 1)
+DEF_TYPE (BT_INTCONST, B_VX, integer_type_node, 1)
+DEF_TYPE (BT_INT, B_HTM | B_VX, integer_type_node, 0)
+DEF_TYPE (BT_LONGLONGCONST, B_VX, long_long_integer_type_node, 1)
+DEF_TYPE (BT_LONGLONG, B_VX, long_long_integer_type_node, 0)
+DEF_TYPE (BT_LONG, B_VX, long_integer_type_node, 0)
+DEF_TYPE (BT_UCHAR, B_VX, unsigned_char_type_node, 0)
+DEF_TYPE (BT_SCHAR, B_VX, signed_char_type_node, 0)
+DEF_TYPE (BT_SCHARCONST, B_VX, signed_char_type_node, 1)
+DEF_TYPE (BT_SHORTCONST, B_VX, short_integer_type_node, 1)
+DEF_TYPE (BT_SHORT, B_VX, short_integer_type_node, 0)
+DEF_TYPE (BT_UINT, 0, unsigned_type_node, 0)
+DEF_TYPE (BT_UINT64, B_HTM, c_uint64_type_node, 0)
+DEF_TYPE (BT_UCHARCONST, B_VX, unsigned_char_type_node, 1)
+DEF_TYPE (BT_UINTCONST, B_VX, unsigned_type_node, 1)
+DEF_TYPE (BT_ULONGLONGCONST, B_VX, long_long_unsigned_type_node, 1)
+DEF_TYPE (BT_USHORTCONST, B_VX, short_unsigned_type_node, 1)
+DEF_TYPE (BT_VOIDCONST, B_VX, void_type_node, 1)
+DEF_TYPE (BT_VOID, 0, void_type_node, 0)
+DEF_TYPE (BT_ULONG, B_VX, long_unsigned_type_node, 0)
+DEF_TYPE (BT_ULONGLONG, B_VX, long_long_unsigned_type_node, 0)
+DEF_TYPE (BT_USHORT, B_VX, short_unsigned_type_node, 0)
+DEF_DISTINCT_TYPE (BT_BCHAR, B_VX, BT_UCHAR)
+DEF_DISTINCT_TYPE (BT_BINT, B_VX, BT_UINT)
+DEF_DISTINCT_TYPE (BT_BLONGLONG, B_VX, BT_ULONGLONG)
+DEF_DISTINCT_TYPE (BT_BSHORT, B_VX, BT_USHORT)
+DEF_POINTER_TYPE (BT_DBLPTR, B_VX, BT_DBL)
+DEF_POINTER_TYPE (BT_DBLCONSTPTR, B_VX, BT_DBLCONST)
+DEF_POINTER_TYPE (BT_FLTPTR, B_VX, BT_FLT)
+DEF_POINTER_TYPE (BT_FLTCONSTPTR, B_VX, BT_FLTCONST)
+DEF_POINTER_TYPE (BT_INTCONSTPTR, B_VX, BT_INTCONST)
+DEF_POINTER_TYPE (BT_INTPTR, B_VX, BT_INT)
+DEF_POINTER_TYPE (BT_LONGLONGCONSTPTR, B_VX, BT_LONGLONGCONST)
+DEF_POINTER_TYPE (BT_LONGLONGPTR, B_VX, BT_LONGLONG)
+DEF_POINTER_TYPE (BT_SCHARCONSTPTR, B_VX, BT_SCHARCONST)
+DEF_POINTER_TYPE (BT_SCHARPTR, B_VX, BT_SCHAR)
+DEF_POINTER_TYPE (BT_SHORTCONSTPTR, B_VX, BT_SHORTCONST)
+DEF_POINTER_TYPE (BT_SHORTPTR, B_VX, BT_SHORT)
+DEF_POINTER_TYPE (BT_UCHARCONSTPTR, B_VX, BT_UCHARCONST)
+DEF_POINTER_TYPE (BT_UCHARPTR, B_VX, BT_UCHAR)
+DEF_POINTER_TYPE (BT_UINTPTR, B_VX, BT_UINT)
+DEF_POINTER_TYPE (BT_UINTCONSTPTR, B_VX, BT_UINTCONST)
+DEF_POINTER_TYPE (BT_UINT64PTR, B_HTM, BT_UINT64)
+DEF_POINTER_TYPE (BT_ULONGLONGCONSTPTR, B_VX, BT_ULONGLONGCONST)
+DEF_POINTER_TYPE (BT_ULONGLONGPTR, B_VX, BT_ULONGLONG)
+DEF_POINTER_TYPE (BT_USHORTPTR, B_VX, BT_USHORT)
+DEF_POINTER_TYPE (BT_USHORTCONSTPTR, B_VX, BT_USHORTCONST)
+DEF_POINTER_TYPE (BT_VOIDPTR, B_HTM | B_VX, BT_VOID)
+DEF_POINTER_TYPE (BT_VOIDCONSTPTR, B_VX, BT_VOIDCONST)
+DEF_VECTOR_TYPE (BT_V16QI, B_VX, BT_SCHAR, 16)
+DEF_VECTOR_TYPE (BT_V2DI, B_VX, BT_LONGLONG, 2)
+DEF_VECTOR_TYPE (BT_V2DF, B_VX, BT_DBL, 2)
+DEF_VECTOR_TYPE (BT_V4SI, B_VX, BT_INT, 4)
+DEF_VECTOR_TYPE (BT_V8HI, B_VX, BT_SHORT, 8)
+DEF_VECTOR_TYPE (BT_UV16QI, B_VX, BT_UCHAR, 16)
+DEF_VECTOR_TYPE (BT_UV2DI, B_VX, BT_ULONGLONG, 2)
+DEF_VECTOR_TYPE (BT_UV4SI, B_VX, BT_UINT, 4)
+DEF_VECTOR_TYPE (BT_UV8HI, B_VX, BT_USHORT, 8)
+DEF_OPAQUE_VECTOR_TYPE (BT_OV2DI, B_VX, BT_LONGLONG, 2)
+DEF_OPAQUE_VECTOR_TYPE (BT_OV4SI, B_VX, BT_INT, 4)
+DEF_OPAQUE_VECTOR_TYPE (BT_OUV4SI, B_VX, BT_UINT, 4)
+DEF_OPAQUE_VECTOR_TYPE (BT_BV16QI, B_VX, BT_BCHAR, 16)
+DEF_OPAQUE_VECTOR_TYPE (BT_BV2DI, B_VX, BT_BLONGLONG, 2)
+DEF_OPAQUE_VECTOR_TYPE (BT_BV4SI, B_VX, BT_BINT, 4)
+DEF_OPAQUE_VECTOR_TYPE (BT_BV8HI, B_VX, BT_BSHORT, 8)
+DEF_FN_TYPE_1 (BT_FN_UINT, 0, BT_UINT)
+DEF_FN_TYPE_1 (BT_FN_INT, B_HTM, BT_INT)
+DEF_FN_TYPE_2 (BT_FN_VOID_UINT, 0, BT_VOID, BT_UINT)
+DEF_FN_TYPE_2 (BT_FN_VOID_INT, B_HTM, BT_VOID, BT_INT)
+DEF_FN_TYPE_2 (BT_FN_INT_INT, B_VX, BT_INT, BT_INT)
+DEF_FN_TYPE_2 (BT_FN_INT_VOIDPTR, B_HTM, BT_INT, BT_VOIDPTR)
+DEF_FN_TYPE_2 (BT_FN_UV16QI_UCHARCONSTPTR, B_VX, BT_UV16QI, BT_UCHARCONSTPTR)
+DEF_FN_TYPE_2 (BT_FN_UV16QI_USHORT, B_VX, BT_UV16QI, BT_USHORT)
+DEF_FN_TYPE_2 (BT_FN_UV16QI_UCHAR, B_VX, BT_UV16QI, BT_UCHAR)
+DEF_FN_TYPE_2 (BT_FN_UV16QI_UV16QI, B_VX, BT_UV16QI, BT_UV16QI)
+DEF_FN_TYPE_2 (BT_FN_UV2DI_ULONGLONG, B_VX, BT_UV2DI, BT_ULONGLONG)
+DEF_FN_TYPE_2 (BT_FN_UV2DI_ULONGLONGCONSTPTR, B_VX, BT_UV2DI, BT_ULONGLONGCONSTPTR)
+DEF_FN_TYPE_2 (BT_FN_UV2DI_UV2DI, B_VX, BT_UV2DI, BT_UV2DI)
+DEF_FN_TYPE_2 (BT_FN_UV2DI_UV4SI, B_VX, BT_UV2DI, BT_UV4SI)
+DEF_FN_TYPE_2 (BT_FN_OV4SI_INTCONSTPTR, B_VX, BT_OV4SI, BT_INTCONSTPTR)
+DEF_FN_TYPE_2 (BT_FN_UV4SI_UV4SI, B_VX, BT_UV4SI, BT_UV4SI)
+DEF_FN_TYPE_2 (BT_FN_OV4SI_INT, B_VX, BT_OV4SI, BT_INT)
+DEF_FN_TYPE_2 (BT_FN_OV4SI_OV4SI, B_VX, BT_OV4SI, BT_OV4SI)
+DEF_FN_TYPE_2 (BT_FN_UV4SI_UINTCONSTPTR, B_VX, BT_UV4SI, BT_UINTCONSTPTR)
+DEF_FN_TYPE_2 (BT_FN_UV4SI_UV8HI, B_VX, BT_UV4SI, BT_UV8HI)
+DEF_FN_TYPE_2 (BT_FN_UV4SI_UINT, B_VX, BT_UV4SI, BT_UINT)
+DEF_FN_TYPE_2 (BT_FN_UV8HI_USHORT, B_VX, BT_UV8HI, BT_USHORT)
+DEF_FN_TYPE_2 (BT_FN_UV8HI_UV16QI, B_VX, BT_UV8HI, BT_UV16QI)
+DEF_FN_TYPE_2 (BT_FN_UV8HI_UV8HI, B_VX, BT_UV8HI, BT_UV8HI)
+DEF_FN_TYPE_2 (BT_FN_UV8HI_USHORTCONSTPTR, B_VX, BT_UV8HI, BT_USHORTCONSTPTR)
+DEF_FN_TYPE_2 (BT_FN_V16QI_UCHAR, B_VX, BT_V16QI, BT_UCHAR)
+DEF_FN_TYPE_2 (BT_FN_V16QI_V16QI, B_VX, BT_V16QI, BT_V16QI)
+DEF_FN_TYPE_2 (BT_FN_V2DI_V16QI, B_VX, BT_V2DI, BT_V16QI)
+DEF_FN_TYPE_2 (BT_FN_V2DI_V2DI, B_VX, BT_V2DI, BT_V2DI)
+DEF_FN_TYPE_2 (BT_FN_V2DI_SHORT, B_VX, BT_V2DI, BT_SHORT)
+DEF_FN_TYPE_2 (BT_FN_V2DF_V2DF, B_VX, BT_V2DF, BT_V2DF)
+DEF_FN_TYPE_2 (BT_FN_V2DI_V8HI, B_VX, BT_V2DI, BT_V8HI)
+DEF_FN_TYPE_2 (BT_FN_V2DF_FLTCONSTPTR, B_VX, BT_V2DF, BT_FLTCONSTPTR)
+DEF_FN_TYPE_2 (BT_FN_V2DI_V4SI, B_VX, BT_V2DI, BT_V4SI)
+DEF_FN_TYPE_2 (BT_FN_V2DF_DBL, B_VX, BT_V2DF, BT_DBL)
+DEF_FN_TYPE_2 (BT_FN_V4SI_V8HI, B_VX, BT_V4SI, BT_V8HI)
+DEF_FN_TYPE_2 (BT_FN_V4SI_V4SI, B_VX, BT_V4SI, BT_V4SI)
+DEF_FN_TYPE_2 (BT_FN_V4SI_SHORT, B_VX, BT_V4SI, BT_SHORT)
+DEF_FN_TYPE_2 (BT_FN_V8HI_V16QI, B_VX, BT_V8HI, BT_V16QI)
+DEF_FN_TYPE_2 (BT_FN_V8HI_V8HI, B_VX, BT_V8HI, BT_V8HI)
+DEF_FN_TYPE_2 (BT_FN_V8HI_SHORT, B_VX, BT_V8HI, BT_SHORT)
+DEF_FN_TYPE_3 (BT_FN_INT_V2DI_V2DI, B_VX, BT_INT, BT_V2DI, BT_V2DI)
+DEF_FN_TYPE_3 (BT_FN_INT_OV4SI_OV4SI, B_VX, BT_INT, BT_OV4SI, BT_OV4SI)
+DEF_FN_TYPE_3 (BT_FN_INT_V2DF_V2DF, B_VX, BT_INT, BT_V2DF, BT_V2DF)
+DEF_FN_TYPE_3 (BT_FN_USHORT_UV8HI_INT, B_VX, BT_USHORT, BT_UV8HI, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_INT_UV2DI_UV2DI, B_VX, BT_INT, BT_UV2DI, BT_UV2DI)
+DEF_FN_TYPE_3 (BT_FN_ULONGLONG_UV2DI_INT, B_VX, BT_ULONGLONG, BT_UV2DI, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_INT_UV4SI_UV4SI, B_VX, BT_INT, BT_UV4SI, BT_UV4SI)
+DEF_FN_TYPE_3 (BT_FN_UCHAR_UV16QI_INT, B_VX, BT_UCHAR, BT_UV16QI, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_INT_UV8HI_UV8HI, B_VX, BT_INT, BT_UV8HI, BT_UV8HI)
+DEF_FN_TYPE_3 (BT_FN_INT_V4SI_V4SI, B_VX, BT_INT, BT_V4SI, BT_V4SI)
+DEF_FN_TYPE_3 (BT_FN_INT_UV16QI_UV16QI, B_VX, BT_INT, BT_UV16QI, BT_UV16QI)
+DEF_FN_TYPE_3 (BT_FN_INT_V16QI_V16QI, B_VX, BT_INT, BT_V16QI, BT_V16QI)
+DEF_FN_TYPE_3 (BT_FN_INT_VOIDPTR_INT, B_HTM, BT_INT, BT_VOIDPTR, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_DBL_V2DF_INT, B_VX, BT_DBL, BT_V2DF, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_VOID_UINT64PTR_UINT64, B_HTM, BT_VOID, BT_UINT64PTR, BT_UINT64)
+DEF_FN_TYPE_3 (BT_FN_INT_V8HI_V8HI, B_VX, BT_INT, BT_V8HI, BT_V8HI)
+DEF_FN_TYPE_3 (BT_FN_UINT_VOIDCONSTPTR_INT, B_VX, BT_UINT, BT_VOIDCONSTPTR, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_INT_OV4SI_INT, B_VX, BT_INT, BT_OV4SI, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_VOID_V2DF_FLTPTR, B_VX, BT_VOID, BT_V2DF, BT_FLTPTR)
+DEF_FN_TYPE_3 (BT_FN_UINT_UV4SI_INT, B_VX, BT_UINT, BT_UV4SI, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_UV16QI_UV8HI_UV8HI, B_VX, BT_UV16QI, BT_UV8HI, BT_UV8HI)
+DEF_FN_TYPE_3 (BT_FN_UV16QI_UCHARCONSTPTR_USHORT, B_VX, BT_UV16QI, BT_UCHARCONSTPTR, BT_USHORT)
+DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_UV16QI, B_VX, BT_UV16QI, BT_UV16QI, BT_UV16QI)
+DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_UCHAR, B_VX, BT_UV16QI, BT_UV16QI, BT_UCHAR)
+DEF_FN_TYPE_3 (BT_FN_UV16QI_UV4SI_UV4SI, B_VX, BT_UV16QI, BT_UV4SI, BT_UV4SI)
+DEF_FN_TYPE_3 (BT_FN_UV16QI_UCHAR_UCHAR, B_VX, BT_UV16QI, BT_UCHAR, BT_UCHAR)
+DEF_FN_TYPE_3 (BT_FN_UV16QI_UCHAR_INT, B_VX, BT_UV16QI, BT_UCHAR, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_UV16QI_UV2DI_UV2DI, B_VX, BT_UV16QI, BT_UV2DI, BT_UV2DI)
+DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_UINT, B_VX, BT_UV16QI, BT_UV16QI, BT_UINT)
+DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_INTPTR, B_VX, BT_UV16QI, BT_UV16QI, BT_INTPTR)
+DEF_FN_TYPE_3 (BT_FN_UV2DI_V2DF_INT, B_VX, BT_UV2DI, BT_V2DF, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_UV2DI_UV2DI_UINT, B_VX, BT_UV2DI, BT_UV2DI, BT_UINT)
+DEF_FN_TYPE_3 (BT_FN_OV2DI_LONGLONG_LONGLONG, B_VX, BT_OV2DI, BT_LONGLONG, BT_LONGLONG)
+DEF_FN_TYPE_3 (BT_FN_UV2DI_UV2DI_UV2DI, B_VX, BT_UV2DI, BT_UV2DI, BT_UV2DI)
+DEF_FN_TYPE_3 (BT_FN_UV2DI_UV2DI_UCHAR, B_VX, BT_UV2DI, BT_UV2DI, BT_UCHAR)
+DEF_FN_TYPE_3 (BT_FN_UV2DI_ULONGLONG_INT, B_VX, BT_UV2DI, BT_ULONGLONG, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_UV2DI_UV8HI_UV8HI, B_VX, BT_UV2DI, BT_UV8HI, BT_UV8HI)
+DEF_FN_TYPE_3 (BT_FN_UV2DI_UCHAR_UCHAR, B_VX, BT_UV2DI, BT_UCHAR, BT_UCHAR)
+DEF_FN_TYPE_3 (BT_FN_UV2DI_UV4SI_UV4SI, B_VX, BT_UV2DI, BT_UV4SI, BT_UV4SI)
+DEF_FN_TYPE_3 (BT_FN_OV4SI_INT_INT, B_VX, BT_OV4SI, BT_INT, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_UV4SI_UINT_INT, B_VX, BT_UV4SI, BT_UINT, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_UV4SI_UV4SI_UV4SI, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI)
+DEF_FN_TYPE_3 (BT_FN_UV4SI_UV4SI_UCHAR, B_VX, BT_UV4SI, BT_UV4SI, BT_UCHAR)
+DEF_FN_TYPE_3 (BT_FN_UV4SI_UV8HI_UV8HI, B_VX, BT_UV4SI, BT_UV8HI, BT_UV8HI)
+DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_UCHAR, B_VX, BT_OV4SI, BT_OV4SI, BT_UCHAR)
+DEF_FN_TYPE_3 (BT_FN_UV4SI_UV4SI_UINT, B_VX, BT_UV4SI, BT_UV4SI, BT_UINT)
+DEF_FN_TYPE_3 (BT_FN_UV4SI_UV16QI_UV16QI, B_VX, BT_UV4SI, BT_UV16QI, BT_UV16QI)
+DEF_FN_TYPE_3 (BT_FN_OV4SI_INTCONSTPTR_INT, B_VX, BT_OV4SI, BT_INTCONSTPTR, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_INTPTR, B_VX, BT_OV4SI, BT_OV4SI, BT_INTPTR)
+DEF_FN_TYPE_3 (BT_FN_UV4SI_UV2DI_UV2DI, B_VX, BT_UV4SI, BT_UV2DI, BT_UV2DI)
+DEF_FN_TYPE_3 (BT_FN_OV4SI_INTCONSTPTR_UINT, B_VX, BT_OV4SI, BT_INTCONSTPTR, BT_UINT)
+DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_ULONG, B_VX, BT_OV4SI, BT_OV4SI, BT_ULONG)
+DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_OV4SI, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI)
+DEF_FN_TYPE_3 (BT_FN_UV4SI_UCHAR_UCHAR, B_VX, BT_UV4SI, BT_UCHAR, BT_UCHAR)
+DEF_FN_TYPE_3 (BT_FN_UV4SI_UV4SI_INTPTR, B_VX, BT_UV4SI, BT_UV4SI, BT_INTPTR)
+DEF_FN_TYPE_3 (BT_FN_UV8HI_UV4SI_UV4SI, B_VX, BT_UV8HI, BT_UV4SI, BT_UV4SI)
+DEF_FN_TYPE_3 (BT_FN_UV8HI_UV16QI_UV16QI, B_VX, BT_UV8HI, BT_UV16QI, BT_UV16QI)
+DEF_FN_TYPE_3 (BT_FN_UV8HI_UCHAR_UCHAR, B_VX, BT_UV8HI, BT_UCHAR, BT_UCHAR)
+DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_UV8HI, B_VX, BT_UV8HI, BT_UV8HI, BT_UV8HI)
+DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_UCHAR, B_VX, BT_UV8HI, BT_UV8HI, BT_UCHAR)
+DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_INTPTR, B_VX, BT_UV8HI, BT_UV8HI, BT_INTPTR)
+DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_UINT, B_VX, BT_UV8HI, BT_UV8HI, BT_UINT)
+DEF_FN_TYPE_3 (BT_FN_UV8HI_USHORT_INT, B_VX, BT_UV8HI, BT_USHORT, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_V16QI_UV16QI_UV16QI, B_VX, BT_V16QI, BT_UV16QI, BT_UV16QI)
+DEF_FN_TYPE_3 (BT_FN_V16QI_UINT_VOIDCONSTPTR, B_VX, BT_V16QI, BT_UINT, BT_VOIDCONSTPTR)
+DEF_FN_TYPE_3 (BT_FN_V16QI_V8HI_V8HI, B_VX, BT_V16QI, BT_V8HI, BT_V8HI)
+DEF_FN_TYPE_3 (BT_FN_V16QI_BV16QI_V16QI, B_VX, BT_V16QI, BT_BV16QI, BT_V16QI)
+DEF_FN_TYPE_3 (BT_FN_V16QI_V16QI_V16QI, B_VX, BT_V16QI, BT_V16QI, BT_V16QI)
+DEF_FN_TYPE_3 (BT_FN_V2DI_V2DF_INT, B_VX, BT_V2DI, BT_V2DF, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_V2DI_V2DF_V2DF, B_VX, BT_V2DI, BT_V2DF, BT_V2DF)
+DEF_FN_TYPE_3 (BT_FN_V2DI_V4SI_V4SI, B_VX, BT_V2DI, BT_V4SI, BT_V4SI)
+DEF_FN_TYPE_3 (BT_FN_V2DI_UV2DI_UV2DI, B_VX, BT_V2DI, BT_UV2DI, BT_UV2DI)
+DEF_FN_TYPE_3 (BT_FN_V2DI_V2DI_V2DI, B_VX, BT_V2DI, BT_V2DI, BT_V2DI)
+DEF_FN_TYPE_3 (BT_FN_V2DF_V2DI_INT, B_VX, BT_V2DF, BT_V2DI, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_V2DF_UV2DI_INT, B_VX, BT_V2DF, BT_UV2DI, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_V2DF_V2DF_V2DF, B_VX, BT_V2DF, BT_V2DF, BT_V2DF)
+DEF_FN_TYPE_3 (BT_FN_V2DF_DBL_INT, B_VX, BT_V2DF, BT_DBL, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_V2DI_BV2DI_V2DI, B_VX, BT_V2DI, BT_BV2DI, BT_V2DI)
+DEF_FN_TYPE_3 (BT_FN_V2DF_UV4SI_INT, B_VX, BT_V2DF, BT_UV4SI, BT_INT)
+DEF_FN_TYPE_3 (BT_FN_V4SI_V4SI_V4SI, B_VX, BT_V4SI, BT_V4SI, BT_V4SI)
+DEF_FN_TYPE_3 (BT_FN_V4SI_V8HI_V8HI, B_VX, BT_V4SI, BT_V8HI, BT_V8HI)
+DEF_FN_TYPE_3 (BT_FN_V4SI_INT_VOIDPTR, B_VX, BT_V4SI, BT_INT, BT_VOIDPTR)
+DEF_FN_TYPE_3 (BT_FN_V4SI_V2DI_V2DI, B_VX, BT_V4SI, BT_V2DI, BT_V2DI)
+DEF_FN_TYPE_3 (BT_FN_V4SI_UV4SI_UV4SI, B_VX, BT_V4SI, BT_UV4SI, BT_UV4SI)
+DEF_FN_TYPE_3 (BT_FN_V4SI_BV4SI_V4SI, B_VX, BT_V4SI, BT_BV4SI, BT_V4SI)
+DEF_FN_TYPE_3 (BT_FN_V8HI_BV8HI_V8HI, B_VX, BT_V8HI, BT_BV8HI, BT_V8HI)
+DEF_FN_TYPE_3 (BT_FN_V8HI_V16QI_V16QI, B_VX, BT_V8HI, BT_V16QI, BT_V16QI)
+DEF_FN_TYPE_3 (BT_FN_V8HI_V4SI_V4SI, B_VX, BT_V8HI, BT_V4SI, BT_V4SI)
+DEF_FN_TYPE_3 (BT_FN_V8HI_UV8HI_UV8HI, B_VX, BT_V8HI, BT_UV8HI, BT_UV8HI)
+DEF_FN_TYPE_3 (BT_FN_V8HI_V8HI_V8HI, B_VX, BT_V8HI, BT_V8HI, BT_V8HI)
+DEF_FN_TYPE_4 (BT_FN_VOID_OV4SI_VOIDPTR_UINT, B_VX, BT_VOID, BT_OV4SI, BT_VOIDPTR, BT_UINT)
+DEF_FN_TYPE_4 (BT_FN_INT_OV4SI_OV4SI_INTPTR, B_VX, BT_INT, BT_OV4SI, BT_OV4SI, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_VOID_V16QI_UINT_VOIDPTR, B_VX, BT_VOID, BT_V16QI, BT_UINT, BT_VOIDPTR)
+DEF_FN_TYPE_4 (BT_FN_VOID_OV4SI_INT_VOIDPTR, B_VX, BT_VOID, BT_OV4SI, BT_INT, BT_VOIDPTR)
+DEF_FN_TYPE_4 (BT_FN_UV16QI_UV16QI_UV16QI_INTPTR, B_VX, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_UV16QI_UV16QI_UV16QI_INT, B_VX, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INT)
+DEF_FN_TYPE_4 (BT_FN_UV16QI_UV16QI_UCHAR_INT, B_VX, BT_UV16QI, BT_UV16QI, BT_UCHAR, BT_INT)
+DEF_FN_TYPE_4 (BT_FN_UV16QI_UV16QI_UV16QI_UV16QI, B_VX, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI)
+DEF_FN_TYPE_4 (BT_FN_UV16QI_UV8HI_UV8HI_INTPTR, B_VX, BT_UV16QI, BT_UV8HI, BT_UV8HI, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_UV16QI_UV2DI_UV2DI_UV16QI, B_VX, BT_UV16QI, BT_UV2DI, BT_UV2DI, BT_UV16QI)
+DEF_FN_TYPE_4 (BT_FN_UV2DI_UV2DI_UV2DI_INT, B_VX, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_INT)
+DEF_FN_TYPE_4 (BT_FN_UV2DI_UV4SI_UV4SI_UV2DI, B_VX, BT_UV2DI, BT_UV4SI, BT_UV4SI, BT_UV2DI)
+DEF_FN_TYPE_4 (BT_FN_UV2DI_UV2DI_ULONGLONG_INT, B_VX, BT_UV2DI, BT_UV2DI, BT_ULONGLONG, BT_INT)
+DEF_FN_TYPE_4 (BT_FN_UV4SI_UV2DI_UV2DI_INTPTR, B_VX, BT_UV4SI, BT_UV2DI, BT_UV2DI, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_UV4SI, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI)
+DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_INTPTR, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_INT, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_INT)
+DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_INTPTR, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_OV4SI_INT_OV4SI_INT, B_VX, BT_OV4SI, BT_INT, BT_OV4SI, BT_INT)
+DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_INT, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INT)
+DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_ULONGLONG, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_ULONGLONG)
+DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_OV4SI, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_OV4SI)
+DEF_FN_TYPE_4 (BT_FN_UV4SI_UV8HI_UV8HI_UV4SI, B_VX, BT_UV4SI, BT_UV8HI, BT_UV8HI, BT_UV4SI)
+DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UINT_INT, B_VX, BT_UV4SI, BT_UV4SI, BT_UINT, BT_INT)
+DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_UCHAR, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_UCHAR)
+DEF_FN_TYPE_4 (BT_FN_UV8HI_UV4SI_UV4SI_INTPTR, B_VX, BT_UV8HI, BT_UV4SI, BT_UV4SI, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_UV8HI_INT, B_VX, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT)
+DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_UV8HI_UV8HI, B_VX, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI)
+DEF_FN_TYPE_4 (BT_FN_UV8HI_UV16QI_UV16QI_UV8HI, B_VX, BT_UV8HI, BT_UV16QI, BT_UV16QI, BT_UV8HI)
+DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_UV8HI_INTPTR, B_VX, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_USHORT_INT, B_VX, BT_UV8HI, BT_UV8HI, BT_USHORT, BT_INT)
+DEF_FN_TYPE_4 (BT_FN_V16QI_V8HI_V8HI_INTPTR, B_VX, BT_V16QI, BT_V8HI, BT_V8HI, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_V16QI_V16QI_V16QI_INTPTR, B_VX, BT_V16QI, BT_V16QI, BT_V16QI, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_V16QI_UV16QI_UV16QI_INTPTR, B_VX, BT_V16QI, BT_UV16QI, BT_UV16QI, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_V16QI_V16QI_V16QI_V16QI, B_VX, BT_V16QI, BT_V16QI, BT_V16QI, BT_V16QI)
+DEF_FN_TYPE_4 (BT_FN_V2DI_V2DF_INT_INTPTR, B_VX, BT_V2DI, BT_V2DF, BT_INT, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_V2DI_V2DI_V2DI_INTPTR, B_VX, BT_V2DI, BT_V2DI, BT_V2DI, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_V2DF_V2DF_DBL_INT, B_VX, BT_V2DF, BT_V2DF, BT_DBL, BT_INT)
+DEF_FN_TYPE_4 (BT_FN_V2DF_V2DF_UCHAR_UCHAR, B_VX, BT_V2DF, BT_V2DF, BT_UCHAR, BT_UCHAR)
+DEF_FN_TYPE_4 (BT_FN_V2DI_V2DF_V2DF_INTPTR, B_VX, BT_V2DI, BT_V2DF, BT_V2DF, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_V2DI_V4SI_V4SI_V2DI, B_VX, BT_V2DI, BT_V4SI, BT_V4SI, BT_V2DI)
+DEF_FN_TYPE_4 (BT_FN_V2DF_V2DF_V2DF_V2DF, B_VX, BT_V2DF, BT_V2DF, BT_V2DF, BT_V2DF)
+DEF_FN_TYPE_4 (BT_FN_V2DI_UV2DI_UV2DI_INTPTR, B_VX, BT_V2DI, BT_UV2DI, BT_UV2DI, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_V4SI_V8HI_V8HI_V4SI, B_VX, BT_V4SI, BT_V8HI, BT_V8HI, BT_V4SI)
+DEF_FN_TYPE_4 (BT_FN_V4SI_UV4SI_UV4SI_INTPTR, B_VX, BT_V4SI, BT_UV4SI, BT_UV4SI, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_V4SI_V2DI_V2DI_INTPTR, B_VX, BT_V4SI, BT_V2DI, BT_V2DI, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_V4SI_V4SI_V4SI_INTPTR, B_VX, BT_V4SI, BT_V4SI, BT_V4SI, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_V4SI_V4SI_V4SI_V4SI, B_VX, BT_V4SI, BT_V4SI, BT_V4SI, BT_V4SI)
+DEF_FN_TYPE_4 (BT_FN_V8HI_V8HI_V8HI_V8HI, B_VX, BT_V8HI, BT_V8HI, BT_V8HI, BT_V8HI)
+DEF_FN_TYPE_4 (BT_FN_V8HI_UV8HI_UV8HI_INTPTR, B_VX, BT_V8HI, BT_UV8HI, BT_UV8HI, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_V8HI_V16QI_V16QI_V8HI, B_VX, BT_V8HI, BT_V16QI, BT_V16QI, BT_V8HI)
+DEF_FN_TYPE_4 (BT_FN_V8HI_V8HI_V8HI_INTPTR, B_VX, BT_V8HI, BT_V8HI, BT_V8HI, BT_INTPTR)
+DEF_FN_TYPE_4 (BT_FN_V8HI_V4SI_V4SI_INTPTR, B_VX, BT_V8HI, BT_V4SI, BT_V4SI, BT_INTPTR)
+DEF_FN_TYPE_5 (BT_FN_VOID_UV4SI_UV4SI_UINTPTR_ULONGLONG, B_VX, BT_VOID, BT_UV4SI, BT_UV4SI, BT_UINTPTR, BT_ULONGLONG)
+DEF_FN_TYPE_5 (BT_FN_VOID_UV2DI_UV2DI_ULONGLONGPTR_ULONGLONG, B_VX, BT_VOID, BT_UV2DI, BT_UV2DI, BT_ULONGLONGPTR, BT_ULONGLONG)
+DEF_FN_TYPE_5 (BT_FN_VOID_V4SI_V4SI_INTPTR_ULONGLONG, B_VX, BT_VOID, BT_V4SI, BT_V4SI, BT_INTPTR, BT_ULONGLONG)
+DEF_FN_TYPE_5 (BT_FN_UV16QI_UV16QI_UV16QI_INT_INTPTR, B_VX, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INT, BT_INTPTR)
+DEF_FN_TYPE_5 (BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INT, B_VX, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INT)
+DEF_FN_TYPE_5 (BT_FN_UV2DI_UV2DI_UV2DI_UV2DI_INT, B_VX, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_INT)
+DEF_FN_TYPE_5 (BT_FN_UV2DI_UV2DI_UV2DI_ULONGLONGCONSTPTR_UCHAR, B_VX, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_ULONGLONGCONSTPTR, BT_UCHAR)
+DEF_FN_TYPE_5 (BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INT)
+DEF_FN_TYPE_5 (BT_FN_UV4SI_UV4SI_UV4SI_INT_INTPTR, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INT, BT_INTPTR)
+DEF_FN_TYPE_5 (BT_FN_OV4SI_OV4SI_OV4SI_OV4SI_INTPTR, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_INTPTR)
+DEF_FN_TYPE_5 (BT_FN_OV4SI_OV4SI_OUV4SI_INTCONSTPTR_UCHAR, B_VX, BT_OV4SI, BT_OV4SI, BT_OUV4SI, BT_INTCONSTPTR, BT_UCHAR)
+DEF_FN_TYPE_5 (BT_FN_UV4SI_UV4SI_UV4SI_UINTCONSTPTR_UCHAR, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UINTCONSTPTR, BT_UCHAR)
+DEF_FN_TYPE_5 (BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT, B_VX, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT)
+DEF_FN_TYPE_5 (BT_FN_UV8HI_UV8HI_UV8HI_INT_INTPTR, B_VX, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT, BT_INTPTR)
+DEF_FN_TYPE_6 (BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INT_INTPTR, B_VX, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INT, BT_INTPTR)
+DEF_FN_TYPE_6 (BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT_INTPTR, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INT, BT_INTPTR)
+DEF_FN_TYPE_6 (BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT_INTPTR, B_VX, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT, BT_INTPTR)
DEF_OV_TYPE (BT_OV_BV16QI_BV16QI, BT_BV16QI, BT_BV16QI)
DEF_OV_TYPE (BT_OV_UV16QI_UV16QI, BT_UV16QI, BT_UV16QI)
DEF_OV_TYPE (BT_OV_UV16QI_UCHAR, BT_UV16QI, BT_UCHAR)
diff --git a/gcc/config/s390/s390-builtins.def b/gcc/config/s390/s390-builtins.def
index 357be2a..17f9c85 100644
--- a/gcc/config/s390/s390-builtins.def
+++ b/gcc/config/s390/s390-builtins.def
@@ -268,37 +268,44 @@
/* Builtin flags. Flags applying to the whole builtin definition. */
#undef B_INT
+#undef B_HTM
+#undef B_VX
-#define B_INT (1 << (4 * O_SHIFT)) /* Internal builtins. This builtin cannot be used in user programs. */
+#undef BFLAGS_MASK_INIT
+#define BFLAGS_MASK_INIT (B_INT)
+
+#define B_INT (1 << 0) /* Internal builtins. This builtin cannot be used in user programs. */
+#define B_HTM (1 << 1) /* Builtins requiring the transactional execution facility. */
+#define B_VX (1 << 2) /* Builtins requiring the z13 vector extensions. */
/* B_DEF defines a standard (not overloaded) builtin
- B_DEF (<builtin name>, <RTL expander name>, <function attributes>, <flags, see above>, <fntype>)
+ B_DEF (<builtin name>, <RTL expander name>, <function attributes>, <builtin flags>, <operand flags, see above>, <fntype>)
OB_DEF defines an overloaded builtin
- OB_DEF (<builtin name>, <start variant>, <end variant>, <flags>, <fntype>)
+ OB_DEF (<builtin name>, <start variant>, <end variant>, <builtin flags>, <fntype>)
OB_DEF_VAR defines a variant of an overloaded builtin
OB_DEF_VAR (<variant name>, <standard builtin name>, <flags>, <fntype>) */
-B_DEF (tbeginc, tbeginc, 0, 0, BT_FN_INT)
-B_DEF (tbegin, tbegin, returns_twice_attr, 0, BT_FN_INT_VOIDPTR)
-B_DEF (tbegin_nofloat, tbegin_nofloat, returns_twice_attr, 0, BT_FN_INT_VOIDPTR)
-B_DEF (tbegin_retry, tbegin_retry, returns_twice_attr, 0, BT_FN_INT_VOIDPTR_INT)
-B_DEF (tbegin_retry_nofloat, tbegin_retry_nofloat,returns_twice_attr,0, BT_FN_INT_VOIDPTR_INT)
-B_DEF (tend, tend, 0, 0, BT_FN_INT)
-B_DEF (tabort, tabort, noreturn_attr, 0, BT_FN_VOID_INT)
-B_DEF (tx_nesting_depth, etnd, 0, 0, BT_FN_INT)
-B_DEF (non_tx_store, ntstg, 0, 0, BT_FN_VOID_UINT64PTR_UINT64)
-B_DEF (tx_assist, tx_assist, 0, 0, BT_FN_VOID_INT)
-B_DEF (s390_sfpc, sfpc, 0, 0, BT_FN_VOID_UINT)
-B_DEF (s390_efpc, efpc, 0, 0, BT_FN_UINT)
-B_DEF (s390_lcbb, lcbb, 0, O2_U4, BT_FN_UINT_VOIDCONSTPTR_INT)
+B_DEF (tbeginc, tbeginc, 0, B_HTM, 0, BT_FN_INT)
+B_DEF (tbegin, tbegin, returns_twice_attr, B_HTM, 0, BT_FN_INT_VOIDPTR)
+B_DEF (tbegin_nofloat, tbegin_nofloat, returns_twice_attr, B_HTM, 0, BT_FN_INT_VOIDPTR)
+B_DEF (tbegin_retry, tbegin_retry, returns_twice_attr, B_HTM, 0, BT_FN_INT_VOIDPTR_INT)
+B_DEF (tbegin_retry_nofloat, tbegin_retry_nofloat,returns_twice_attr,B_HTM, 0, BT_FN_INT_VOIDPTR_INT)
+B_DEF (tend, tend, 0, B_HTM, 0, BT_FN_INT)
+B_DEF (tabort, tabort, noreturn_attr, B_HTM, 0, BT_FN_VOID_INT)
+B_DEF (tx_nesting_depth, etnd, 0, B_HTM, 0, BT_FN_INT)
+B_DEF (non_tx_store, ntstg, 0, B_HTM, 0, BT_FN_VOID_UINT64PTR_UINT64)
+B_DEF (tx_assist, tx_assist, 0, B_HTM, 0, BT_FN_VOID_INT)
+B_DEF (s390_sfpc, sfpc, 0, 0, 0, BT_FN_VOID_UINT)
+B_DEF (s390_efpc, efpc, 0, 0, 0, BT_FN_UINT)
+B_DEF (s390_lcbb, lcbb, 0, B_VX, O2_U4, BT_FN_UINT_VOIDCONSTPTR_INT)
-OB_DEF (s390_vec_step, MAX, MAX, BT_FN_INT_INT)
+OB_DEF (s390_vec_step, MAX, MAX, B_VX, BT_FN_INT_INT)
-OB_DEF (s390_vec_gather_element, s390_vec_gather_element_s32,s390_vec_gather_element_dbl,BT_FN_OV4SI_OV4SI_OUV4SI_INTCONSTPTR_UCHAR)
+OB_DEF (s390_vec_gather_element, s390_vec_gather_element_s32,s390_vec_gather_element_dbl,B_VX,BT_FN_OV4SI_OV4SI_OUV4SI_INTCONSTPTR_UCHAR)
OB_DEF_VAR (s390_vec_gather_element_s32,s390_vgef, O4_U2, BT_OV_V4SI_V4SI_UV4SI_INTCONSTPTR_UCHAR)
OB_DEF_VAR (s390_vec_gather_element_b32,s390_vgef, O4_U2, BT_OV_BV4SI_BV4SI_UV4SI_UINTCONSTPTR_UCHAR)
OB_DEF_VAR (s390_vec_gather_element_u32,s390_vgef, O4_U2, BT_OV_UV4SI_UV4SI_UV4SI_UINTCONSTPTR_UCHAR)
@@ -307,15 +314,15 @@ OB_DEF_VAR (s390_vec_gather_element_b64,s390_vgeg, O4_U1,
OB_DEF_VAR (s390_vec_gather_element_u64,s390_vgeg, O4_U1, BT_OV_UV2DI_UV2DI_UV2DI_ULONGLONGCONSTPTR_UCHAR)
OB_DEF_VAR (s390_vec_gather_element_dbl,s390_vgeg, O4_U1, BT_OV_V2DF_V2DF_UV2DI_DBLCONSTPTR_UCHAR)
-B_DEF (s390_vgef, vec_gather_elementv4si,0, O4_U2, BT_FN_UV4SI_UV4SI_UV4SI_UINTCONSTPTR_UCHAR)
-B_DEF (s390_vgeg, vec_gather_elementv2di,0, O4_U1, BT_FN_UV2DI_UV2DI_UV2DI_ULONGLONGCONSTPTR_UCHAR)
-B_DEF (s390_vgbm, vec_genbytemaskv16qi,0, O1_U16, BT_FN_UV16QI_USHORT)
-B_DEF (s390_vgmb, vec_genmaskv16qi, 0, O1_U8 | O2_U8, BT_FN_UV16QI_UCHAR_UCHAR)
-B_DEF (s390_vgmh, vec_genmaskv8hi, 0, O1_U8 | O2_U8, BT_FN_UV8HI_UCHAR_UCHAR)
-B_DEF (s390_vgmf, vec_genmaskv4si, 0, O1_U8 | O2_U8, BT_FN_UV4SI_UCHAR_UCHAR)
-B_DEF (s390_vgmg, vec_genmaskv2di, 0, O1_U8 | O2_U8, BT_FN_UV2DI_UCHAR_UCHAR)
+B_DEF (s390_vgef, vec_gather_elementv4si,0, B_VX, O4_U2, BT_FN_UV4SI_UV4SI_UV4SI_UINTCONSTPTR_UCHAR)
+B_DEF (s390_vgeg, vec_gather_elementv2di,0, B_VX, O4_U1, BT_FN_UV2DI_UV2DI_UV2DI_ULONGLONGCONSTPTR_UCHAR)
+B_DEF (s390_vgbm, vec_genbytemaskv16qi,0, B_VX, O1_U16, BT_FN_UV16QI_USHORT)
+B_DEF (s390_vgmb, vec_genmaskv16qi, 0, B_VX, O1_U8 | O2_U8, BT_FN_UV16QI_UCHAR_UCHAR)
+B_DEF (s390_vgmh, vec_genmaskv8hi, 0, B_VX, O1_U8 | O2_U8, BT_FN_UV8HI_UCHAR_UCHAR)
+B_DEF (s390_vgmf, vec_genmaskv4si, 0, B_VX, O1_U8 | O2_U8, BT_FN_UV4SI_UCHAR_UCHAR)
+B_DEF (s390_vgmg, vec_genmaskv2di, 0, B_VX, O1_U8 | O2_U8, BT_FN_UV2DI_UCHAR_UCHAR)
-OB_DEF (s390_vec_xld2, s390_vec_xld2_s8, s390_vec_xld2_dbl, BT_FN_V4SI_INT_VOIDPTR)
+OB_DEF (s390_vec_xld2, s390_vec_xld2_s8, s390_vec_xld2_dbl, B_VX, BT_FN_V4SI_INT_VOIDPTR)
OB_DEF_VAR (s390_vec_xld2_s8, MAX, O1_LIT, BT_OV_V16QI_LONG_SCHARPTR) /* vl */
OB_DEF_VAR (s390_vec_xld2_u8, MAX, O1_LIT, BT_OV_UV16QI_LONG_UCHARPTR) /* vl */
OB_DEF_VAR (s390_vec_xld2_s16, MAX, O1_LIT, BT_OV_V8HI_LONG_SHORTPTR) /* vl */
@@ -326,7 +333,7 @@ OB_DEF_VAR (s390_vec_xld2_s64, MAX, O1_LIT,
OB_DEF_VAR (s390_vec_xld2_u64, MAX, O1_LIT, BT_OV_UV2DI_LONG_ULONGLONGPTR) /* vl */
OB_DEF_VAR (s390_vec_xld2_dbl, MAX, O1_LIT, BT_OV_V2DF_LONG_DBLPTR) /* vl */
-OB_DEF (s390_vec_xlw4, s390_vec_xlw4_s8, s390_vec_xlw4_u32, BT_FN_V4SI_INT_VOIDPTR)
+OB_DEF (s390_vec_xlw4, s390_vec_xlw4_s8, s390_vec_xlw4_u32, B_VX, BT_FN_V4SI_INT_VOIDPTR)
OB_DEF_VAR (s390_vec_xlw4_s8, MAX, O1_LIT, BT_OV_V16QI_LONG_SCHARPTR) /* vl */
OB_DEF_VAR (s390_vec_xlw4_u8, MAX, O1_LIT, BT_OV_UV16QI_LONG_UCHARPTR) /* vl */
OB_DEF_VAR (s390_vec_xlw4_s16, MAX, O1_LIT, BT_OV_V8HI_LONG_SHORTPTR) /* vl */
@@ -334,7 +341,7 @@ OB_DEF_VAR (s390_vec_xlw4_u16, MAX, O1_LIT,
OB_DEF_VAR (s390_vec_xlw4_s32, MAX, O1_LIT, BT_OV_V4SI_LONG_INTPTR) /* vl */
OB_DEF_VAR (s390_vec_xlw4_u32, MAX, O1_LIT, BT_OV_UV4SI_LONG_UINTPTR) /* vl */
-OB_DEF (s390_vec_splats, s390_vec_splats_s8, s390_vec_splats_dbl,BT_FN_OV4SI_INT)
+OB_DEF (s390_vec_splats, s390_vec_splats_s8, s390_vec_splats_dbl,B_VX, BT_FN_OV4SI_INT)
OB_DEF_VAR (s390_vec_splats_s8, s390_vlrepb, 0, BT_OV_V16QI_SCHAR)
OB_DEF_VAR (s390_vec_splats_u8, s390_vlrepb, 0, BT_OV_UV16QI_UCHAR)
OB_DEF_VAR (s390_vec_splats_s16, s390_vlreph, 0, BT_OV_V8HI_SHORT)
@@ -345,17 +352,17 @@ OB_DEF_VAR (s390_vec_splats_s64, s390_vlrepg, 0,
OB_DEF_VAR (s390_vec_splats_u64, s390_vlrepg, 0, BT_OV_UV2DI_ULONGLONG)
OB_DEF_VAR (s390_vec_splats_dbl, s390_vlrepg_dbl, 0, BT_OV_V2DF_DBL) /* vlrepg */
-B_DEF (s390_vlrepb, vec_splatsv16qi, 0, 0, BT_FN_UV16QI_UCHAR)
-B_DEF (s390_vlreph, vec_splatsv8hi, 0, 0, BT_FN_UV8HI_USHORT)
-B_DEF (s390_vlrepf, vec_splatsv4si, 0, 0, BT_FN_UV4SI_UINT)
-B_DEF (s390_vlrepg, vec_splatsv2di, 0, 0, BT_FN_UV2DI_ULONGLONG)
-B_DEF (s390_vlrepg_dbl, vec_splatsv2df, 0, B_INT, BT_FN_V2DF_DBL)
-B_DEF (s390_vrepib, vec_splatsv16qi, 0, O1_U8, BT_FN_V16QI_UCHAR)
-B_DEF (s390_vrepih, vec_splatsv8hi, 0, O1_S16, BT_FN_V8HI_SHORT)
-B_DEF (s390_vrepif, vec_splatsv4si, 0, O1_S16, BT_FN_V4SI_SHORT)
-B_DEF (s390_vrepig, vec_splatsv2di, 0, O1_S16, BT_FN_V2DI_SHORT)
-
-OB_DEF (s390_vec_insert, s390_vec_insert_s8, s390_vec_insert_dbl,BT_FN_OV4SI_INT_OV4SI_INT)
+B_DEF (s390_vlrepb, vec_splatsv16qi, 0, B_VX, 0, BT_FN_UV16QI_UCHAR)
+B_DEF (s390_vlreph, vec_splatsv8hi, 0, B_VX, 0, BT_FN_UV8HI_USHORT)
+B_DEF (s390_vlrepf, vec_splatsv4si, 0, B_VX, 0, BT_FN_UV4SI_UINT)
+B_DEF (s390_vlrepg, vec_splatsv2di, 0, B_VX, 0, BT_FN_UV2DI_ULONGLONG)
+B_DEF (s390_vlrepg_dbl, vec_splatsv2df, 0, B_VX | B_INT, 0, BT_FN_V2DF_DBL)
+B_DEF (s390_vrepib, vec_splatsv16qi, 0, B_VX, O1_U8, BT_FN_V16QI_UCHAR)
+B_DEF (s390_vrepih, vec_splatsv8hi, 0, B_VX, O1_S16, BT_FN_V8HI_SHORT)
+B_DEF (s390_vrepif, vec_splatsv4si, 0, B_VX, O1_S16, BT_FN_V4SI_SHORT)
+B_DEF (s390_vrepig, vec_splatsv2di, 0, B_VX, O1_S16, BT_FN_V2DI_SHORT)
+
+OB_DEF (s390_vec_insert, s390_vec_insert_s8, s390_vec_insert_dbl,B_VX, BT_FN_OV4SI_INT_OV4SI_INT)
OB_DEF_VAR (s390_vec_insert_s8, s390_vlvgb, O3_ELEM, BT_OV_V16QI_SCHAR_V16QI_INT)
OB_DEF_VAR (s390_vec_insert_u8, s390_vlvgb, O3_ELEM, BT_OV_UV16QI_UCHAR_UV16QI_INT)
OB_DEF_VAR (s390_vec_insert_b8, s390_vlvgb, O3_ELEM, BT_OV_UV16QI_UCHAR_BV16QI_INT)
@@ -370,13 +377,13 @@ OB_DEF_VAR (s390_vec_insert_u64, s390_vlvgg, O3_ELEM,
OB_DEF_VAR (s390_vec_insert_b64, s390_vlvgg, O3_ELEM, BT_OV_UV2DI_ULONGLONG_BV2DI_INT)
OB_DEF_VAR (s390_vec_insert_dbl, s390_vlvgg_dbl, O3_ELEM, BT_OV_V2DF_DBL_V2DF_INT)
-B_DEF (s390_vlvgb, vec_insertv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UCHAR_INT)
-B_DEF (s390_vlvgh, vec_insertv8hi, 0, 0, BT_FN_UV8HI_UV8HI_USHORT_INT)
-B_DEF (s390_vlvgf, vec_insertv4si, 0, 0, BT_FN_UV4SI_UV4SI_UINT_INT)
-B_DEF (s390_vlvgg, vec_insertv2di, 0, 0, BT_FN_UV2DI_UV2DI_ULONGLONG_INT)
-B_DEF (s390_vlvgg_dbl, vec_insertv2df, 0, B_INT, BT_FN_V2DF_V2DF_DBL_INT)
+B_DEF (s390_vlvgb, vec_insertv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UCHAR_INT)
+B_DEF (s390_vlvgh, vec_insertv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_USHORT_INT)
+B_DEF (s390_vlvgf, vec_insertv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UINT_INT)
+B_DEF (s390_vlvgg, vec_insertv2di, 0, B_VX, 0, BT_FN_UV2DI_UV2DI_ULONGLONG_INT)
+B_DEF (s390_vlvgg_dbl, vec_insertv2df, 0, B_VX | B_INT, 0, BT_FN_V2DF_V2DF_DBL_INT)
-OB_DEF (s390_vec_promote, s390_vec_promote_s8,s390_vec_promote_dbl,BT_FN_OV4SI_INT_INT)
+OB_DEF (s390_vec_promote, s390_vec_promote_s8,s390_vec_promote_dbl,B_VX, BT_FN_OV4SI_INT_INT)
OB_DEF_VAR (s390_vec_promote_s8, s390_vlvgb_noin, O2_ELEM, BT_OV_V16QI_SCHAR_INT) /* vlvgb */
OB_DEF_VAR (s390_vec_promote_u8, s390_vlvgb_noin, O2_ELEM, BT_OV_UV16QI_UCHAR_INT) /* vlvgb */
OB_DEF_VAR (s390_vec_promote_s16, s390_vlvgh_noin, O2_ELEM, BT_OV_V8HI_SHORT_INT) /* vlvgh */
@@ -387,13 +394,13 @@ OB_DEF_VAR (s390_vec_promote_s64, s390_vlvgg_noin, O2_ELEM,
OB_DEF_VAR (s390_vec_promote_u64, s390_vlvgg_noin, O2_ELEM, BT_OV_UV2DI_ULONGLONG_INT) /* vlvgg */
OB_DEF_VAR (s390_vec_promote_dbl, s390_vlvgg_dbl_noin,O2_ELEM, BT_OV_V2DF_DBL_INT) /* vlvgg */
-B_DEF (s390_vlvgb_noin, vec_promotev16qi, 0, B_INT, BT_FN_UV16QI_UCHAR_INT)
-B_DEF (s390_vlvgh_noin, vec_promotev8hi, 0, B_INT, BT_FN_UV8HI_USHORT_INT)
-B_DEF (s390_vlvgf_noin, vec_promotev4si, 0, B_INT, BT_FN_UV4SI_UINT_INT)
-B_DEF (s390_vlvgg_noin, vec_promotev2di, 0, B_INT, BT_FN_UV2DI_ULONGLONG_INT)
-B_DEF (s390_vlvgg_dbl_noin, vec_promotev2df, 0, B_INT, BT_FN_V2DF_DBL_INT)
+B_DEF (s390_vlvgb_noin, vec_promotev16qi, 0, B_VX | B_INT, 0, BT_FN_UV16QI_UCHAR_INT)
+B_DEF (s390_vlvgh_noin, vec_promotev8hi, 0, B_VX | B_INT, 0, BT_FN_UV8HI_USHORT_INT)
+B_DEF (s390_vlvgf_noin, vec_promotev4si, 0, B_VX | B_INT, 0, BT_FN_UV4SI_UINT_INT)
+B_DEF (s390_vlvgg_noin, vec_promotev2di, 0, B_VX | B_INT, 0, BT_FN_UV2DI_ULONGLONG_INT)
+B_DEF (s390_vlvgg_dbl_noin, vec_promotev2df, 0, B_VX | B_INT, 0, BT_FN_V2DF_DBL_INT)
-OB_DEF (s390_vec_extract, s390_vec_extract_s8,s390_vec_extract_dbl,BT_FN_INT_OV4SI_INT)
+OB_DEF (s390_vec_extract, s390_vec_extract_s8,s390_vec_extract_dbl,B_VX, BT_FN_INT_OV4SI_INT)
OB_DEF_VAR (s390_vec_extract_s8, s390_vlgvb, O2_ELEM, BT_OV_SCHAR_V16QI_INT)
OB_DEF_VAR (s390_vec_extract_u8, s390_vlgvb, O2_ELEM, BT_OV_UCHAR_UV16QI_INT)
OB_DEF_VAR (s390_vec_extract_b8, s390_vlgvb, O2_ELEM, BT_OV_UCHAR_BV16QI_INT)
@@ -408,13 +415,13 @@ OB_DEF_VAR (s390_vec_extract_u64, s390_vlgvg, O2_ELEM,
OB_DEF_VAR (s390_vec_extract_b64, s390_vlgvg, O2_ELEM, BT_OV_ULONGLONG_BV2DI_INT)
OB_DEF_VAR (s390_vec_extract_dbl, s390_vlgvg_dbl, O2_ELEM, BT_OV_DBL_V2DF_INT) /* vlgvg */
-B_DEF (s390_vlgvb, vec_extractv16qi, 0, 0, BT_FN_UCHAR_UV16QI_INT)
-B_DEF (s390_vlgvh, vec_extractv8hi, 0, 0, BT_FN_USHORT_UV8HI_INT)
-B_DEF (s390_vlgvf, vec_extractv4si, 0, 0, BT_FN_UINT_UV4SI_INT)
-B_DEF (s390_vlgvg, vec_extractv2di, 0, 0, BT_FN_ULONGLONG_UV2DI_INT)
-B_DEF (s390_vlgvg_dbl, vec_extractv2df, 0, B_INT, BT_FN_DBL_V2DF_INT)
+B_DEF (s390_vlgvb, vec_extractv16qi, 0, B_VX, 0, BT_FN_UCHAR_UV16QI_INT)
+B_DEF (s390_vlgvh, vec_extractv8hi, 0, B_VX, 0, BT_FN_USHORT_UV8HI_INT)
+B_DEF (s390_vlgvf, vec_extractv4si, 0, B_VX, 0, BT_FN_UINT_UV4SI_INT)
+B_DEF (s390_vlgvg, vec_extractv2di, 0, B_VX, 0, BT_FN_ULONGLONG_UV2DI_INT)
+B_DEF (s390_vlgvg_dbl, vec_extractv2df, 0, B_VX | B_INT, 0, BT_FN_DBL_V2DF_INT)
-OB_DEF (s390_vec_insert_and_zero, s390_vec_insert_and_zero_s8,s390_vec_insert_and_zero_dbl,BT_FN_OV4SI_INTCONSTPTR)
+OB_DEF (s390_vec_insert_and_zero, s390_vec_insert_and_zero_s8,s390_vec_insert_and_zero_dbl,B_VX,BT_FN_OV4SI_INTCONSTPTR)
OB_DEF_VAR (s390_vec_insert_and_zero_s8,s390_vllezb, 0, BT_OV_V16QI_SCHARCONSTPTR)
OB_DEF_VAR (s390_vec_insert_and_zero_u8,s390_vllezb, 0, BT_OV_UV16QI_UCHARCONSTPTR)
OB_DEF_VAR (s390_vec_insert_and_zero_s16,s390_vllezh, 0, BT_OV_V8HI_SHORTCONSTPTR)
@@ -425,12 +432,12 @@ OB_DEF_VAR (s390_vec_insert_and_zero_s64,s390_vllezg, 0,
OB_DEF_VAR (s390_vec_insert_and_zero_u64,s390_vllezg, 0, BT_OV_UV2DI_ULONGLONGCONSTPTR)
OB_DEF_VAR (s390_vec_insert_and_zero_dbl,s390_vllezg, 0, BT_OV_V2DF_DBLCONSTPTR)
-B_DEF (s390_vllezb, vec_insert_and_zerov16qi,0, 0, BT_FN_UV16QI_UCHARCONSTPTR)
-B_DEF (s390_vllezh, vec_insert_and_zerov8hi,0, 0, BT_FN_UV8HI_USHORTCONSTPTR)
-B_DEF (s390_vllezf, vec_insert_and_zerov4si,0, 0, BT_FN_UV4SI_UINTCONSTPTR)
-B_DEF (s390_vllezg, vec_insert_and_zerov2di,0, 0, BT_FN_UV2DI_ULONGLONGCONSTPTR)
+B_DEF (s390_vllezb, vec_insert_and_zerov16qi,0, B_VX, 0, BT_FN_UV16QI_UCHARCONSTPTR)
+B_DEF (s390_vllezh, vec_insert_and_zerov8hi,0, B_VX, 0, BT_FN_UV8HI_USHORTCONSTPTR)
+B_DEF (s390_vllezf, vec_insert_and_zerov4si,0, B_VX, 0, BT_FN_UV4SI_UINTCONSTPTR)
+B_DEF (s390_vllezg, vec_insert_and_zerov2di,0, B_VX, 0, BT_FN_UV2DI_ULONGLONGCONSTPTR)
-OB_DEF (s390_vec_load_bndry, s390_vec_load_bndry_s8,s390_vec_load_bndry_dbl,BT_FN_OV4SI_INTCONSTPTR_INT)
+OB_DEF (s390_vec_load_bndry, s390_vec_load_bndry_s8,s390_vec_load_bndry_dbl,B_VX, BT_FN_OV4SI_INTCONSTPTR_INT)
OB_DEF_VAR (s390_vec_load_bndry_s8, s390_vlbb, O2_U3, BT_OV_V16QI_SCHARCONSTPTR_USHORT)
OB_DEF_VAR (s390_vec_load_bndry_u8, s390_vlbb, O2_U3, BT_OV_UV16QI_UCHARCONSTPTR_USHORT)
OB_DEF_VAR (s390_vec_load_bndry_s16, s390_vlbb, O2_U3, BT_OV_V8HI_SHORTCONSTPTR_USHORT)
@@ -441,13 +448,13 @@ OB_DEF_VAR (s390_vec_load_bndry_s64, s390_vlbb, O2_U3,
OB_DEF_VAR (s390_vec_load_bndry_u64, s390_vlbb, O2_U3, BT_OV_UV2DI_ULONGLONGCONSTPTR_USHORT)
OB_DEF_VAR (s390_vec_load_bndry_dbl, s390_vlbb, O2_U3, BT_OV_V2DF_DBLCONSTPTR_USHORT)
-B_DEF (s390_vlbb, vlbb, 0, O2_U3, BT_FN_UV16QI_UCHARCONSTPTR_USHORT)
+B_DEF (s390_vlbb, vlbb, 0, B_VX, O2_U3, BT_FN_UV16QI_UCHARCONSTPTR_USHORT)
-OB_DEF (s390_vec_load_pair, s390_vec_load_pair_s64,s390_vec_load_pair_u64,BT_FN_OV2DI_LONGLONG_LONGLONG)
+OB_DEF (s390_vec_load_pair, s390_vec_load_pair_s64,s390_vec_load_pair_u64,B_VX, BT_FN_OV2DI_LONGLONG_LONGLONG)
OB_DEF_VAR (s390_vec_load_pair_s64, MAX, 0, BT_OV_V2DI_LONGLONG_LONGLONG) /* vlvgp */
OB_DEF_VAR (s390_vec_load_pair_u64, MAX, 0, BT_OV_UV2DI_ULONGLONG_ULONGLONG) /* vlvgp */
-OB_DEF (s390_vec_load_len, s390_vec_load_len_s8,s390_vec_load_len_dbl,BT_FN_OV4SI_INTCONSTPTR_UINT)
+OB_DEF (s390_vec_load_len, s390_vec_load_len_s8,s390_vec_load_len_dbl,B_VX, BT_FN_OV4SI_INTCONSTPTR_UINT)
OB_DEF_VAR (s390_vec_load_len_s8, s390_vll, 0, BT_OV_V16QI_SCHARCONSTPTR_UINT)
OB_DEF_VAR (s390_vec_load_len_u8, s390_vll, 0, BT_OV_UV16QI_UCHARCONSTPTR_UINT)
OB_DEF_VAR (s390_vec_load_len_s16, s390_vll, 0, BT_OV_V8HI_SHORTCONSTPTR_UINT)
@@ -458,9 +465,9 @@ OB_DEF_VAR (s390_vec_load_len_s64, s390_vll, 0,
OB_DEF_VAR (s390_vec_load_len_u64, s390_vll, 0, BT_OV_UV2DI_ULONGLONGCONSTPTR_UINT)
OB_DEF_VAR (s390_vec_load_len_dbl, s390_vll, 0, BT_OV_V2DF_DBLCONSTPTR_UINT)
-B_DEF (s390_vll, vllv16qi, 0, 0, BT_FN_V16QI_UINT_VOIDCONSTPTR)
+B_DEF (s390_vll, vllv16qi, 0, B_VX, 0, BT_FN_V16QI_UINT_VOIDCONSTPTR)
-OB_DEF (s390_vec_mergeh, s390_vec_mergeh_s8, s390_vec_mergeh_dbl,BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_mergeh, s390_vec_mergeh_s8, s390_vec_mergeh_dbl,B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_mergeh_s8, s390_vmrhb, 0, BT_OV_V16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vec_mergeh_u8, s390_vmrhb, 0, BT_OV_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_mergeh_b8, s390_vmrhb, 0, BT_OV_BV16QI_BV16QI_BV16QI)
@@ -475,12 +482,12 @@ OB_DEF_VAR (s390_vec_mergeh_u64, s390_vmrhg, 0,
OB_DEF_VAR (s390_vec_mergeh_b64, s390_vmrhg, 0, BT_OV_BV2DI_BV2DI_BV2DI)
OB_DEF_VAR (s390_vec_mergeh_dbl, s390_vmrhg, 0, BT_OV_V2DF_V2DF_V2DF)
-B_DEF (s390_vmrhb, vec_mergehv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vmrhh, vec_mergehv8hi, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI)
-B_DEF (s390_vmrhf, vec_mergehv4si, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI)
-B_DEF (s390_vmrhg, vec_mergehv2di, 0, 0, BT_FN_UV2DI_UV2DI_UV2DI)
+B_DEF (s390_vmrhb, vec_mergehv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vmrhh, vec_mergehv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI)
+B_DEF (s390_vmrhf, vec_mergehv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI)
+B_DEF (s390_vmrhg, vec_mergehv2di, 0, B_VX, 0, BT_FN_UV2DI_UV2DI_UV2DI)
-OB_DEF (s390_vec_mergel, s390_vec_mergel_s8, s390_vec_mergel_dbl,BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_mergel, s390_vec_mergel_s8, s390_vec_mergel_dbl,B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_mergel_s8, s390_vmrlb, 0, BT_OV_V16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vec_mergel_u8, s390_vmrlb, 0, BT_OV_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_mergel_b8, s390_vmrlb, 0, BT_OV_BV16QI_BV16QI_BV16QI)
@@ -495,12 +502,12 @@ OB_DEF_VAR (s390_vec_mergel_u64, s390_vmrlg, 0,
OB_DEF_VAR (s390_vec_mergel_b64, s390_vmrlg, 0, BT_OV_BV2DI_BV2DI_BV2DI)
OB_DEF_VAR (s390_vec_mergel_dbl, s390_vmrlg, 0, BT_OV_V2DF_V2DF_V2DF)
-B_DEF (s390_vmrlb, vec_mergelv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vmrlh, vec_mergelv8hi, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI)
-B_DEF (s390_vmrlf, vec_mergelv4si, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI)
-B_DEF (s390_vmrlg, vec_mergelv2di, 0, 0, BT_FN_UV2DI_UV2DI_UV2DI)
+B_DEF (s390_vmrlb, vec_mergelv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vmrlh, vec_mergelv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI)
+B_DEF (s390_vmrlf, vec_mergelv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI)
+B_DEF (s390_vmrlg, vec_mergelv2di, 0, B_VX, 0, BT_FN_UV2DI_UV2DI_UV2DI)
-OB_DEF (s390_vec_pack, s390_vec_pack_s16, s390_vec_pack_b64, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_pack, s390_vec_pack_s16, s390_vec_pack_b64, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_pack_s16, s390_vpkh, 0, BT_OV_V16QI_V8HI_V8HI)
OB_DEF_VAR (s390_vec_pack_u16, s390_vpkh, 0, BT_OV_UV16QI_UV8HI_UV8HI)
OB_DEF_VAR (s390_vec_pack_b16, s390_vpkh, 0, BT_OV_BV16QI_BV8HI_BV8HI)
@@ -511,11 +518,11 @@ OB_DEF_VAR (s390_vec_pack_s64, s390_vpkg, 0,
OB_DEF_VAR (s390_vec_pack_u64, s390_vpkg, 0, BT_OV_UV4SI_UV2DI_UV2DI)
OB_DEF_VAR (s390_vec_pack_b64, s390_vpkg, 0, BT_OV_BV4SI_BV2DI_BV2DI)
-B_DEF (s390_vpkh, vec_packv8hi, 0, 0, BT_FN_UV16QI_UV8HI_UV8HI)
-B_DEF (s390_vpkf, vec_packv4si, 0, 0, BT_FN_UV8HI_UV4SI_UV4SI)
-B_DEF (s390_vpkg, vec_packv2di, 0, 0, BT_FN_UV4SI_UV2DI_UV2DI)
+B_DEF (s390_vpkh, vec_packv8hi, 0, B_VX, 0, BT_FN_UV16QI_UV8HI_UV8HI)
+B_DEF (s390_vpkf, vec_packv4si, 0, B_VX, 0, BT_FN_UV8HI_UV4SI_UV4SI)
+B_DEF (s390_vpkg, vec_packv2di, 0, B_VX, 0, BT_FN_UV4SI_UV2DI_UV2DI)
-OB_DEF (s390_vec_packs, s390_vec_packs_s16, s390_vec_packs_u64, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_packs, s390_vec_packs_s16, s390_vec_packs_u64, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_packs_s16, s390_vpksh, 0, BT_OV_V16QI_V8HI_V8HI)
OB_DEF_VAR (s390_vec_packs_u16, s390_vpklsh, 0, BT_OV_UV16QI_UV8HI_UV8HI)
OB_DEF_VAR (s390_vec_packs_s32, s390_vpksf, 0, BT_OV_V8HI_V4SI_V4SI)
@@ -523,14 +530,14 @@ OB_DEF_VAR (s390_vec_packs_u32, s390_vpklsf, 0,
OB_DEF_VAR (s390_vec_packs_s64, s390_vpksg, 0, BT_OV_V4SI_V2DI_V2DI)
OB_DEF_VAR (s390_vec_packs_u64, s390_vpklsg, 0, BT_OV_UV4SI_UV2DI_UV2DI)
-B_DEF (s390_vpksh, vec_packsv8hi, 0, 0, BT_FN_V16QI_V8HI_V8HI)
-B_DEF (s390_vpklsh, vec_packsuv8hi, 0, 0, BT_FN_UV16QI_UV8HI_UV8HI)
-B_DEF (s390_vpksf, vec_packsv4si, 0, 0, BT_FN_V8HI_V4SI_V4SI)
-B_DEF (s390_vpklsf, vec_packsuv4si, 0, 0, BT_FN_UV8HI_UV4SI_UV4SI)
-B_DEF (s390_vpksg, vec_packsv2di, 0, 0, BT_FN_V4SI_V2DI_V2DI)
-B_DEF (s390_vpklsg, vec_packsuv2di, 0, 0, BT_FN_UV4SI_UV2DI_UV2DI)
+B_DEF (s390_vpksh, vec_packsv8hi, 0, B_VX, 0, BT_FN_V16QI_V8HI_V8HI)
+B_DEF (s390_vpklsh, vec_packsuv8hi, 0, B_VX, 0, BT_FN_UV16QI_UV8HI_UV8HI)
+B_DEF (s390_vpksf, vec_packsv4si, 0, B_VX, 0, BT_FN_V8HI_V4SI_V4SI)
+B_DEF (s390_vpklsf, vec_packsuv4si, 0, B_VX, 0, BT_FN_UV8HI_UV4SI_UV4SI)
+B_DEF (s390_vpksg, vec_packsv2di, 0, B_VX, 0, BT_FN_V4SI_V2DI_V2DI)
+B_DEF (s390_vpklsg, vec_packsuv2di, 0, B_VX, 0, BT_FN_UV4SI_UV2DI_UV2DI)
-OB_DEF (s390_vec_packs_cc, s390_vec_packs_cc_s16,s390_vec_packs_cc_u64,BT_FN_OV4SI_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_packs_cc, s390_vec_packs_cc_s16,s390_vec_packs_cc_u64,B_VX, BT_FN_OV4SI_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vec_packs_cc_s16, s390_vpkshs, 0, BT_OV_V16QI_V8HI_V8HI_INTPTR)
OB_DEF_VAR (s390_vec_packs_cc_u16, s390_vpklshs, 0, BT_OV_UV16QI_UV8HI_UV8HI_INTPTR)
OB_DEF_VAR (s390_vec_packs_cc_s32, s390_vpksfs, 0, BT_OV_V8HI_V4SI_V4SI_INTPTR)
@@ -538,14 +545,14 @@ OB_DEF_VAR (s390_vec_packs_cc_u32, s390_vpklsfs, 0,
OB_DEF_VAR (s390_vec_packs_cc_s64, s390_vpksgs, 0, BT_OV_V4SI_V2DI_V2DI_INTPTR)
OB_DEF_VAR (s390_vec_packs_cc_u64, s390_vpklsgs, 0, BT_OV_UV4SI_UV2DI_UV2DI_INTPTR)
-B_DEF (s390_vpkshs, vec_packs_ccv8hi, 0, 0, BT_FN_V16QI_V8HI_V8HI_INTPTR)
-B_DEF (s390_vpklshs, vec_packsu_ccv8hi, 0, 0, BT_FN_UV16QI_UV8HI_UV8HI_INTPTR)
-B_DEF (s390_vpksfs, vec_packs_ccv4si, 0, 0, BT_FN_V8HI_V4SI_V4SI_INTPTR)
-B_DEF (s390_vpklsfs, vec_packsu_ccv4si, 0, 0, BT_FN_UV8HI_UV4SI_UV4SI_INTPTR)
-B_DEF (s390_vpksgs, vec_packs_ccv2di, 0, 0, BT_FN_V4SI_V2DI_V2DI_INTPTR)
-B_DEF (s390_vpklsgs, vec_packsu_ccv2di, 0, 0, BT_FN_UV4SI_UV2DI_UV2DI_INTPTR)
+B_DEF (s390_vpkshs, vec_packs_ccv8hi, 0, B_VX, 0, BT_FN_V16QI_V8HI_V8HI_INTPTR)
+B_DEF (s390_vpklshs, vec_packsu_ccv8hi, 0, B_VX, 0, BT_FN_UV16QI_UV8HI_UV8HI_INTPTR)
+B_DEF (s390_vpksfs, vec_packs_ccv4si, 0, B_VX, 0, BT_FN_V8HI_V4SI_V4SI_INTPTR)
+B_DEF (s390_vpklsfs, vec_packsu_ccv4si, 0, B_VX, 0, BT_FN_UV8HI_UV4SI_UV4SI_INTPTR)
+B_DEF (s390_vpksgs, vec_packs_ccv2di, 0, B_VX, 0, BT_FN_V4SI_V2DI_V2DI_INTPTR)
+B_DEF (s390_vpklsgs, vec_packsu_ccv2di, 0, B_VX, 0, BT_FN_UV4SI_UV2DI_UV2DI_INTPTR)
-OB_DEF (s390_vec_packsu, s390_vec_packsu_s16,s390_vec_packsu_u64,BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_packsu, s390_vec_packsu_s16,s390_vec_packsu_u64,B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_packsu_s16, s390_vec_packsu_u16,0, BT_OV_UV16QI_V8HI_V8HI) /* vpklsh */
OB_DEF_VAR (s390_vec_packsu_u16, s390_vpklsh, 0, BT_OV_UV16QI_UV8HI_UV8HI)
OB_DEF_VAR (s390_vec_packsu_s32, s390_vec_packsu_u32,0, BT_OV_UV8HI_V4SI_V4SI) /* vpklsf */
@@ -553,16 +560,16 @@ OB_DEF_VAR (s390_vec_packsu_u32, s390_vpklsf, 0,
OB_DEF_VAR (s390_vec_packsu_s64, s390_vec_packsu_u64,0, BT_OV_UV4SI_V2DI_V2DI) /* vpklsg */
OB_DEF_VAR (s390_vec_packsu_u64, s390_vpklsg, 0, BT_OV_UV4SI_UV2DI_UV2DI)
-B_DEF (s390_vec_packsu_u16, vec_packsu_uv8hi, 0, B_INT, BT_FN_UV16QI_UV8HI_UV8HI) /* vpklsh */
-B_DEF (s390_vec_packsu_u32, vec_packsu_uv4si, 0, B_INT, BT_FN_UV8HI_UV4SI_UV4SI) /* vpklsf */
-B_DEF (s390_vec_packsu_u64, vec_packsu_uv2di, 0, B_INT, BT_FN_UV4SI_UV2DI_UV2DI) /* vpklsg */
+B_DEF (s390_vec_packsu_u16, vec_packsu_uv8hi, 0, B_VX | B_INT, 0, BT_FN_UV16QI_UV8HI_UV8HI) /* vpklsh */
+B_DEF (s390_vec_packsu_u32, vec_packsu_uv4si, 0, B_VX | B_INT, 0, BT_FN_UV8HI_UV4SI_UV4SI) /* vpklsf */
+B_DEF (s390_vec_packsu_u64, vec_packsu_uv2di, 0, B_VX | B_INT, 0, BT_FN_UV4SI_UV2DI_UV2DI) /* vpklsg */
-OB_DEF (s390_vec_packsu_cc, s390_vec_packsu_cc_u16,s390_vec_packsu_cc_u64,BT_FN_OV4SI_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_packsu_cc, s390_vec_packsu_cc_u16,s390_vec_packsu_cc_u64,B_VX, BT_FN_OV4SI_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vec_packsu_cc_u16, s390_vpklshs, 0, BT_OV_UV16QI_UV8HI_UV8HI_INTPTR)
OB_DEF_VAR (s390_vec_packsu_cc_u32, s390_vpklsfs, 0, BT_OV_UV8HI_UV4SI_UV4SI_INTPTR)
OB_DEF_VAR (s390_vec_packsu_cc_u64, s390_vpklsgs, 0, BT_OV_UV4SI_UV2DI_UV2DI_INTPTR)
-OB_DEF (s390_vec_perm, s390_vec_perm_s8, s390_vec_perm_dbl, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_perm, s390_vec_perm_s8, s390_vec_perm_dbl, B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_perm_s8, s390_vperm, 0, BT_OV_V16QI_V16QI_V16QI_UV16QI)
OB_DEF_VAR (s390_vec_perm_b8, s390_vperm, 0, BT_OV_BV16QI_BV16QI_BV16QI_UV16QI)
OB_DEF_VAR (s390_vec_perm_u8, s390_vperm, 0, BT_OV_UV16QI_UV16QI_UV16QI_UV16QI)
@@ -577,17 +584,17 @@ OB_DEF_VAR (s390_vec_perm_b64, s390_vperm, 0,
OB_DEF_VAR (s390_vec_perm_u64, s390_vperm, 0, BT_OV_UV2DI_UV2DI_UV2DI_UV16QI)
OB_DEF_VAR (s390_vec_perm_dbl, s390_vperm, 0, BT_OV_V2DF_V2DF_V2DF_UV16QI)
-B_DEF (s390_vperm, vec_permv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vperm, vec_permv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI)
-OB_DEF (s390_vec_permi, s390_vec_permi_s64, s390_vec_permi_dbl, BT_FN_OV4SI_OV4SI_OV4SI_INT)
+OB_DEF (s390_vec_permi, s390_vec_permi_s64, s390_vec_permi_dbl, B_VX, BT_FN_OV4SI_OV4SI_OV4SI_INT)
OB_DEF_VAR (s390_vec_permi_s64, s390_vpdi, O3_U2, BT_OV_V2DI_V2DI_V2DI_INT)
OB_DEF_VAR (s390_vec_permi_b64, s390_vpdi, O3_U2, BT_OV_BV2DI_BV2DI_BV2DI_INT)
OB_DEF_VAR (s390_vec_permi_u64, s390_vpdi, O3_U2, BT_OV_UV2DI_UV2DI_UV2DI_INT)
OB_DEF_VAR (s390_vec_permi_dbl, s390_vpdi, O3_U2, BT_OV_V2DF_V2DF_V2DF_INT)
-B_DEF (s390_vpdi, vec_permiv2di, 0, O3_U2, BT_FN_UV2DI_UV2DI_UV2DI_INT)
+B_DEF (s390_vpdi, vec_permiv2di, 0, B_VX, O3_U2, BT_FN_UV2DI_UV2DI_UV2DI_INT)
-OB_DEF (s390_vec_splat, s390_vec_splat2_s8, s390_vec_splat2_dbl,BT_FN_OV4SI_OV4SI_UCHAR)
+OB_DEF (s390_vec_splat, s390_vec_splat2_s8, s390_vec_splat2_dbl,B_VX, BT_FN_OV4SI_OV4SI_UCHAR)
OB_DEF_VAR (s390_vec_splat2_s8, s390_vrepb, O2_U4, BT_OV_V16QI_V16QI_UCHAR)
OB_DEF_VAR (s390_vec_splat2_b8, s390_vrepb, O2_U4, BT_OV_BV16QI_BV16QI_UCHAR)
OB_DEF_VAR (s390_vec_splat2_u8, s390_vrepb, O2_U4, BT_OV_UV16QI_UV16QI_UCHAR)
@@ -602,12 +609,12 @@ OB_DEF_VAR (s390_vec_splat2_b64, s390_vrepg, O2_U1,
OB_DEF_VAR (s390_vec_splat2_u64, s390_vrepg, O2_U1, BT_OV_UV2DI_UV2DI_UCHAR)
OB_DEF_VAR (s390_vec_splat2_dbl, s390_vrepg, O2_U1, BT_OV_V2DF_V2DF_UCHAR)
-B_DEF (s390_vrepb, vec_splatv16qi, 0, O2_U4, BT_FN_UV16QI_UV16QI_UCHAR)
-B_DEF (s390_vreph, vec_splatv8hi, 0, O2_U3, BT_FN_UV8HI_UV8HI_UCHAR)
-B_DEF (s390_vrepf, vec_splatv4si, 0, O2_U2, BT_FN_UV4SI_UV4SI_UCHAR)
-B_DEF (s390_vrepg, vec_splatv2di, 0, O2_U1, BT_FN_UV2DI_UV2DI_UCHAR)
+B_DEF (s390_vrepb, vec_splatv16qi, 0, B_VX, O2_U4, BT_FN_UV16QI_UV16QI_UCHAR)
+B_DEF (s390_vreph, vec_splatv8hi, 0, B_VX, O2_U3, BT_FN_UV8HI_UV8HI_UCHAR)
+B_DEF (s390_vrepf, vec_splatv4si, 0, B_VX, O2_U2, BT_FN_UV4SI_UV4SI_UCHAR)
+B_DEF (s390_vrepg, vec_splatv2di, 0, B_VX, O2_U1, BT_FN_UV2DI_UV2DI_UCHAR)
-OB_DEF (s390_vec_scatter_element, s390_vec_scatter_element_s32,s390_vec_scatter_element_dbl,BT_FN_VOID_V4SI_V4SI_INTPTR_ULONGLONG)
+OB_DEF (s390_vec_scatter_element, s390_vec_scatter_element_s32,s390_vec_scatter_element_dbl,B_VX,BT_FN_VOID_V4SI_V4SI_INTPTR_ULONGLONG)
OB_DEF_VAR (s390_vec_scatter_element_s32,s390_vscef, O4_U2, BT_OV_VOID_V4SI_UV4SI_INTPTR_ULONGLONG)
OB_DEF_VAR (s390_vec_scatter_element_b32,s390_vscef, O4_U2, BT_OV_VOID_BV4SI_UV4SI_UINTPTR_ULONGLONG)
OB_DEF_VAR (s390_vec_scatter_element_u32,s390_vscef, O4_U2, BT_OV_VOID_UV4SI_UV4SI_UINTPTR_ULONGLONG)
@@ -616,10 +623,10 @@ OB_DEF_VAR (s390_vec_scatter_element_b64,s390_vsceg, O4_U1,
OB_DEF_VAR (s390_vec_scatter_element_u64,s390_vsceg, O4_U1, BT_OV_VOID_UV2DI_UV2DI_ULONGLONGPTR_ULONGLONG)
OB_DEF_VAR (s390_vec_scatter_element_dbl,s390_vsceg, O4_U1, BT_OV_VOID_V2DF_UV2DI_DBLPTR_ULONGLONG)
-B_DEF (s390_vscef, vec_scatter_elementv4si,0, O4_U2, BT_FN_VOID_UV4SI_UV4SI_UINTPTR_ULONGLONG)
-B_DEF (s390_vsceg, vec_scatter_elementv2di,0, O4_U1, BT_FN_VOID_UV2DI_UV2DI_ULONGLONGPTR_ULONGLONG)
+B_DEF (s390_vscef, vec_scatter_elementv4si,0, B_VX, O4_U2, BT_FN_VOID_UV4SI_UV4SI_UINTPTR_ULONGLONG)
+B_DEF (s390_vsceg, vec_scatter_elementv2di,0, B_VX, O4_U1, BT_FN_VOID_UV2DI_UV2DI_ULONGLONGPTR_ULONGLONG)
-OB_DEF (s390_vec_sel, s390_vec_sel_b8_a, s390_vec_sel_dbl_b, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_sel, s390_vec_sel_b8_a, s390_vec_sel_dbl_b, B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_sel_b8_a, s390_vsel, 0, BT_OV_BV16QI_BV16QI_BV16QI_UV16QI)
OB_DEF_VAR (s390_vec_sel_b8_b, s390_vsel, 0, BT_OV_BV16QI_BV16QI_BV16QI_BV16QI)
OB_DEF_VAR (s390_vec_sel_s8_a, s390_vsel, 0, BT_OV_V16QI_V16QI_V16QI_UV16QI)
@@ -647,18 +654,18 @@ OB_DEF_VAR (s390_vec_sel_u64_b, s390_vsel, 0,
OB_DEF_VAR (s390_vec_sel_dbl_a, s390_vsel, 0, BT_OV_V2DF_V2DF_V2DF_UV2DI)
OB_DEF_VAR (s390_vec_sel_dbl_b, s390_vsel, 0, BT_OV_V2DF_V2DF_V2DF_BV2DI)
-B_DEF (s390_vsel, vec_selv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vsel, vec_selv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI)
-OB_DEF (s390_vec_extend_s64, s390_vec_extend_s64_s8,s390_vec_extend_s64_s32,BT_FN_OV4SI_OV4SI)
+OB_DEF (s390_vec_extend_s64, s390_vec_extend_s64_s8,s390_vec_extend_s64_s32,B_VX, BT_FN_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_extend_s64_s8, s390_vsegb, 0, BT_OV_V2DI_V16QI)
OB_DEF_VAR (s390_vec_extend_s64_s16, s390_vsegh, 0, BT_OV_V2DI_V8HI)
OB_DEF_VAR (s390_vec_extend_s64_s32, s390_vsegf, 0, BT_OV_V2DI_V4SI)
-B_DEF (s390_vsegb, vec_extendv16qi, 0, 0, BT_FN_V2DI_V16QI)
-B_DEF (s390_vsegh, vec_extendv8hi, 0, 0, BT_FN_V2DI_V8HI)
-B_DEF (s390_vsegf, vec_extendv4si, 0, 0, BT_FN_V2DI_V4SI)
+B_DEF (s390_vsegb, vec_extendv16qi, 0, B_VX, 0, BT_FN_V2DI_V16QI)
+B_DEF (s390_vsegh, vec_extendv8hi, 0, B_VX, 0, BT_FN_V2DI_V8HI)
+B_DEF (s390_vsegf, vec_extendv4si, 0, B_VX, 0, BT_FN_V2DI_V4SI)
-OB_DEF (s390_vec_xstd2, s390_vec_xstd2_s8, s390_vec_xstd2_dbl, BT_FN_VOID_OV4SI_INT_VOIDPTR)
+OB_DEF (s390_vec_xstd2, s390_vec_xstd2_s8, s390_vec_xstd2_dbl, B_VX, BT_FN_VOID_OV4SI_INT_VOIDPTR)
OB_DEF_VAR (s390_vec_xstd2_s8, MAX, O2_LIT, BT_OV_VOID_V16QI_LONG_SCHARPTR) /* vst */
OB_DEF_VAR (s390_vec_xstd2_u8, MAX, O2_LIT, BT_OV_VOID_UV16QI_LONG_UCHARPTR) /* vst */
OB_DEF_VAR (s390_vec_xstd2_s16, MAX, O2_LIT, BT_OV_VOID_V8HI_LONG_SHORTPTR) /* vst */
@@ -669,7 +676,7 @@ OB_DEF_VAR (s390_vec_xstd2_s64, MAX, O2_LIT,
OB_DEF_VAR (s390_vec_xstd2_u64, MAX, O2_LIT, BT_OV_VOID_UV2DI_LONG_ULONGLONGPTR) /* vst */
OB_DEF_VAR (s390_vec_xstd2_dbl, MAX, O2_LIT, BT_OV_VOID_V2DF_LONG_DBLPTR) /* vst */
-OB_DEF (s390_vec_xstw4, s390_vec_xstw4_s8, s390_vec_xstw4_u32, BT_FN_VOID_OV4SI_INT_VOIDPTR)
+OB_DEF (s390_vec_xstw4, s390_vec_xstw4_s8, s390_vec_xstw4_u32, B_VX, BT_FN_VOID_OV4SI_INT_VOIDPTR)
OB_DEF_VAR (s390_vec_xstw4_s8, MAX, O2_LIT, BT_OV_VOID_V16QI_LONG_SCHARPTR) /* vst */
OB_DEF_VAR (s390_vec_xstw4_u8, MAX, O2_LIT, BT_OV_VOID_UV16QI_LONG_UCHARPTR) /* vst */
OB_DEF_VAR (s390_vec_xstw4_s16, MAX, O2_LIT, BT_OV_VOID_V8HI_LONG_SHORTPTR) /* vst */
@@ -677,7 +684,7 @@ OB_DEF_VAR (s390_vec_xstw4_u16, MAX, O2_LIT,
OB_DEF_VAR (s390_vec_xstw4_s32, MAX, O2_LIT, BT_OV_VOID_V4SI_LONG_INTPTR) /* vst */
OB_DEF_VAR (s390_vec_xstw4_u32, MAX, O2_LIT, BT_OV_VOID_UV4SI_LONG_UINTPTR) /* vst */
-OB_DEF (s390_vec_store_len, s390_vec_store_len_s8,s390_vec_store_len_dbl,BT_FN_VOID_OV4SI_VOIDPTR_UINT)
+OB_DEF (s390_vec_store_len, s390_vec_store_len_s8,s390_vec_store_len_dbl,B_VX, BT_FN_VOID_OV4SI_VOIDPTR_UINT)
OB_DEF_VAR (s390_vec_store_len_s8, s390_vstl, 0, BT_OV_VOID_V16QI_SCHARPTR_UINT)
OB_DEF_VAR (s390_vec_store_len_u8, s390_vstl, 0, BT_OV_VOID_UV16QI_UCHARPTR_UINT)
OB_DEF_VAR (s390_vec_store_len_s16, s390_vstl, 0, BT_OV_VOID_V8HI_SHORTPTR_UINT)
@@ -688,9 +695,9 @@ OB_DEF_VAR (s390_vec_store_len_s64, s390_vstl, 0,
OB_DEF_VAR (s390_vec_store_len_u64, s390_vstl, 0, BT_OV_VOID_UV2DI_ULONGLONGPTR_UINT)
OB_DEF_VAR (s390_vec_store_len_dbl, s390_vstl, 0, BT_OV_VOID_V2DF_DBLPTR_UINT)
-B_DEF (s390_vstl, vstlv16qi, 0, 0, BT_FN_VOID_V16QI_UINT_VOIDPTR)
+B_DEF (s390_vstl, vstlv16qi, 0, B_VX, 0, BT_FN_VOID_V16QI_UINT_VOIDPTR)
-OB_DEF (s390_vec_unpackh, s390_vec_unpackh_s8,s390_vec_unpackh_u32,BT_FN_OV4SI_OV4SI)
+OB_DEF (s390_vec_unpackh, s390_vec_unpackh_s8,s390_vec_unpackh_u32,B_VX, BT_FN_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_unpackh_s8, s390_vuphb, 0, BT_OV_V8HI_V16QI)
OB_DEF_VAR (s390_vec_unpackh_b8, s390_vuphb, 0, BT_OV_BV8HI_BV16QI)
OB_DEF_VAR (s390_vec_unpackh_u8, s390_vuplhb, 0, BT_OV_UV8HI_UV16QI)
@@ -701,14 +708,14 @@ OB_DEF_VAR (s390_vec_unpackh_s32, s390_vuphf, 0,
OB_DEF_VAR (s390_vec_unpackh_b32, s390_vuphf, 0, BT_OV_BV2DI_BV4SI)
OB_DEF_VAR (s390_vec_unpackh_u32, s390_vuplhf, 0, BT_OV_UV2DI_UV4SI)
-B_DEF (s390_vuphb, vec_unpackhv16qi, 0, 0, BT_FN_V8HI_V16QI)
-B_DEF (s390_vuplhb, vec_unpackh_lv16qi, 0, 0, BT_FN_UV8HI_UV16QI)
-B_DEF (s390_vuphh, vec_unpackhv8hi, 0, 0, BT_FN_V4SI_V8HI)
-B_DEF (s390_vuplhh, vec_unpackh_lv8hi, 0, 0, BT_FN_UV4SI_UV8HI)
-B_DEF (s390_vuphf, vec_unpackhv4si, 0, 0, BT_FN_V2DI_V4SI)
-B_DEF (s390_vuplhf, vec_unpackh_lv4si, 0, 0, BT_FN_UV2DI_UV4SI)
+B_DEF (s390_vuphb, vec_unpackhv16qi, 0, B_VX, 0, BT_FN_V8HI_V16QI)
+B_DEF (s390_vuplhb, vec_unpackh_lv16qi, 0, B_VX, 0, BT_FN_UV8HI_UV16QI)
+B_DEF (s390_vuphh, vec_unpackhv8hi, 0, B_VX, 0, BT_FN_V4SI_V8HI)
+B_DEF (s390_vuplhh, vec_unpackh_lv8hi, 0, B_VX, 0, BT_FN_UV4SI_UV8HI)
+B_DEF (s390_vuphf, vec_unpackhv4si, 0, B_VX, 0, BT_FN_V2DI_V4SI)
+B_DEF (s390_vuplhf, vec_unpackh_lv4si, 0, B_VX, 0, BT_FN_UV2DI_UV4SI)
-OB_DEF (s390_vec_unpackl, s390_vec_unpackl_s8,s390_vec_unpackl_u32,BT_FN_OV4SI_OV4SI)
+OB_DEF (s390_vec_unpackl, s390_vec_unpackl_s8,s390_vec_unpackl_u32,B_VX, BT_FN_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_unpackl_s8, s390_vuplb, 0, BT_OV_V8HI_V16QI)
OB_DEF_VAR (s390_vec_unpackl_b8, s390_vuplb, 0, BT_OV_BV8HI_BV16QI)
OB_DEF_VAR (s390_vec_unpackl_u8, s390_vupllb, 0, BT_OV_UV8HI_UV16QI)
@@ -719,29 +726,29 @@ OB_DEF_VAR (s390_vec_unpackl_s32, s390_vuplf, 0,
OB_DEF_VAR (s390_vec_unpackl_b32, s390_vuplf, 0, BT_OV_BV2DI_BV4SI)
OB_DEF_VAR (s390_vec_unpackl_u32, s390_vupllf, 0, BT_OV_UV2DI_UV4SI)
-B_DEF (s390_vuplb, vec_unpacklv16qi, 0, 0, BT_FN_V8HI_V16QI)
-B_DEF (s390_vupllb, vec_unpackl_lv16qi, 0, 0, BT_FN_UV8HI_UV16QI)
-B_DEF (s390_vuplhw, vec_unpacklv8hi, 0, 0, BT_FN_V4SI_V8HI)
-B_DEF (s390_vupllh, vec_unpackl_lv8hi, 0, 0, BT_FN_UV4SI_UV8HI)
-B_DEF (s390_vuplf, vec_unpacklv4si, 0, 0, BT_FN_V2DI_V4SI)
-B_DEF (s390_vupllf, vec_unpackl_lv4si, 0, 0, BT_FN_UV2DI_UV4SI)
-B_DEF (s390_vaq, vec_add_u128, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vuplb, vec_unpacklv16qi, 0, B_VX, 0, BT_FN_V8HI_V16QI)
+B_DEF (s390_vupllb, vec_unpackl_lv16qi, 0, B_VX, 0, BT_FN_UV8HI_UV16QI)
+B_DEF (s390_vuplhw, vec_unpacklv8hi, 0, B_VX, 0, BT_FN_V4SI_V8HI)
+B_DEF (s390_vupllh, vec_unpackl_lv8hi, 0, B_VX, 0, BT_FN_UV4SI_UV8HI)
+B_DEF (s390_vuplf, vec_unpacklv4si, 0, B_VX, 0, BT_FN_V2DI_V4SI)
+B_DEF (s390_vupllf, vec_unpackl_lv4si, 0, B_VX, 0, BT_FN_UV2DI_UV4SI)
+B_DEF (s390_vaq, vec_add_u128, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-OB_DEF (s390_vec_addc, s390_vec_addc_u8, s390_vec_addc_u64, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_addc, s390_vec_addc_u8, s390_vec_addc_u64, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_addc_u8, s390_vaccb, 0, BT_OV_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_addc_u16, s390_vacch, 0, BT_OV_UV8HI_UV8HI_UV8HI)
OB_DEF_VAR (s390_vec_addc_u32, s390_vaccf, 0, BT_OV_UV4SI_UV4SI_UV4SI)
OB_DEF_VAR (s390_vec_addc_u64, s390_vaccg, 0, BT_OV_UV2DI_UV2DI_UV2DI)
-B_DEF (s390_vaccb, vec_addcv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vacch, vec_addcv8hi, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI)
-B_DEF (s390_vaccf, vec_addcv4si, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI)
-B_DEF (s390_vaccg, vec_addcv2di, 0, 0, BT_FN_UV2DI_UV2DI_UV2DI)
-B_DEF (s390_vaccq, vec_addc_u128, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vacq, vec_adde_u128, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vacccq, vec_addec_u128, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vaccb, vec_addcv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vacch, vec_addcv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI)
+B_DEF (s390_vaccf, vec_addcv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI)
+B_DEF (s390_vaccg, vec_addcv2di, 0, B_VX, 0, BT_FN_UV2DI_UV2DI_UV2DI)
+B_DEF (s390_vaccq, vec_addc_u128, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vacq, vec_adde_u128, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vacccq, vec_addec_u128, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI)
-OB_DEF (s390_vec_and, s390_vec_and_b8, s390_vec_and_dbl_c, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_and, s390_vec_and_b8, s390_vec_and_dbl_c, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_and_b8, s390_vn, 0, BT_OV_BV16QI_BV16QI_BV16QI)
OB_DEF_VAR (s390_vec_and_s8_a, s390_vn, 0, BT_OV_V16QI_BV16QI_V16QI)
OB_DEF_VAR (s390_vec_and_s8_b, s390_vn, 0, BT_OV_V16QI_V16QI_V16QI)
@@ -774,9 +781,9 @@ OB_DEF_VAR (s390_vec_and_dbl_a, s390_vn, 0,
OB_DEF_VAR (s390_vec_and_dbl_b, s390_vn, 0, BT_OV_V2DF_V2DF_V2DF)
OB_DEF_VAR (s390_vec_and_dbl_c, s390_vn, 0, BT_OV_V2DF_V2DF_BV2DI)
-B_DEF (s390_vn, andv16qi3, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vn, andv16qi3, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-OB_DEF (s390_vec_andc, s390_vec_andc_b8, s390_vec_andc_dbl_c,BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_andc, s390_vec_andc_b8, s390_vec_andc_dbl_c,B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_andc_b8, s390_vnc, 0, BT_OV_BV16QI_BV16QI_BV16QI)
OB_DEF_VAR (s390_vec_andc_s8_a, s390_vnc, 0, BT_OV_V16QI_BV16QI_V16QI)
OB_DEF_VAR (s390_vec_andc_s8_b, s390_vnc, 0, BT_OV_V16QI_V16QI_V16QI)
@@ -809,9 +816,9 @@ OB_DEF_VAR (s390_vec_andc_dbl_a, s390_vnc, 0,
OB_DEF_VAR (s390_vec_andc_dbl_b, s390_vnc, 0, BT_OV_V2DF_V2DF_V2DF)
OB_DEF_VAR (s390_vec_andc_dbl_c, s390_vnc, 0, BT_OV_V2DF_V2DF_BV2DI)
-B_DEF (s390_vnc, vec_andcv16qi3, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vnc, vec_andcv16qi3, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-OB_DEF (s390_vec_avg, s390_vec_avg_s8, s390_vec_avg_u64, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_avg, s390_vec_avg_s8, s390_vec_avg_u64, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_avg_s8, s390_vavgb, 0, BT_OV_V16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vec_avg_u8, s390_vavglb, 0, BT_OV_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_avg_s16, s390_vavgh, 0, BT_OV_V8HI_V8HI_V8HI)
@@ -821,87 +828,78 @@ OB_DEF_VAR (s390_vec_avg_u32, s390_vavglf, 0,
OB_DEF_VAR (s390_vec_avg_s64, s390_vavgg, 0, BT_OV_V2DI_V2DI_V2DI)
OB_DEF_VAR (s390_vec_avg_u64, s390_vavglg, 0, BT_OV_UV2DI_UV2DI_UV2DI)
-B_DEF (s390_vavgb, vec_avgv16qi, 0, 0, BT_FN_V16QI_V16QI_V16QI)
-B_DEF (s390_vavglb, vec_avguv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vavgh, vec_avgv8hi, 0, 0, BT_FN_V8HI_V8HI_V8HI)
-B_DEF (s390_vavglh, vec_avguv8hi, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI)
-B_DEF (s390_vavgf, vec_avgv4si, 0, 0, BT_FN_V4SI_V4SI_V4SI)
-B_DEF (s390_vavglf, vec_avguv4si, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI)
-B_DEF (s390_vavgg, vec_avgv2di, 0, 0, BT_FN_V2DI_V2DI_V2DI)
-B_DEF (s390_vavglg, vec_avguv2di, 0, 0, BT_FN_UV2DI_UV2DI_UV2DI)
-
-B_DEF (s390_vcksm, vec_checksum, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI)
-
-B_DEF (s390_vceqbs, vec_cmpeqv16qi_cc, 0, 0, BT_FN_V16QI_UV16QI_UV16QI_INTPTR)
-B_DEF (s390_vceqhs, vec_cmpeqv8hi_cc, 0, 0, BT_FN_V8HI_UV8HI_UV8HI_INTPTR)
-B_DEF (s390_vceqfs, vec_cmpeqv4si_cc, 0, 0, BT_FN_V4SI_UV4SI_UV4SI_INTPTR)
-B_DEF (s390_vceqgs, vec_cmpeqv2di_cc, 0, 0, BT_FN_V2DI_UV2DI_UV2DI_INTPTR)
-B_DEF (s390_vfcedbs, vec_cmpeqv2df_cc, 0, 0, BT_FN_V2DI_V2DF_V2DF_INTPTR)
-
-B_DEF (s390_vchbs, vec_cmphv16qi_cc, 0, 0, BT_FN_V16QI_V16QI_V16QI_INTPTR)
-B_DEF (s390_vchlbs, vec_cmphlv16qi_cc, 0, 0, BT_FN_V16QI_UV16QI_UV16QI_INTPTR)
-B_DEF (s390_vchhs, vec_cmphv8hi_cc, 0, 0, BT_FN_V8HI_V8HI_V8HI_INTPTR)
-B_DEF (s390_vchlhs, vec_cmphlv8hi_cc, 0, 0, BT_FN_V8HI_UV8HI_UV8HI_INTPTR)
-B_DEF (s390_vchfs, vec_cmphv4si_cc, 0, 0, BT_FN_V4SI_V4SI_V4SI_INTPTR)
-B_DEF (s390_vchlfs, vec_cmphlv4si_cc, 0, 0, BT_FN_V4SI_UV4SI_UV4SI_INTPTR)
-B_DEF (s390_vchgs, vec_cmphv2di_cc, 0, 0, BT_FN_V2DI_V2DI_V2DI_INTPTR)
-B_DEF (s390_vchlgs, vec_cmphlv2di_cc, 0, 0, BT_FN_V2DI_UV2DI_UV2DI_INTPTR)
-B_DEF (s390_vfchdbs, vec_cmphv2df_cc, 0, 0, BT_FN_V2DI_V2DF_V2DF_INTPTR)
-B_DEF (s390_vfchedbs, vec_cmphev2df_cc, 0, 0, BT_FN_V2DI_V2DF_V2DF_INTPTR)
-
-B_DEF (vec_all_eqv16qi, vec_all_eqv16qi, 0, B_INT, BT_FN_INT_UV16QI_UV16QI)
-B_DEF (vec_all_eqv8hi, vec_all_eqv8hi, 0, B_INT, BT_FN_INT_UV8HI_UV8HI)
-B_DEF (vec_all_eqv4si, vec_all_eqv4si, 0, B_INT, BT_FN_INT_UV4SI_UV4SI)
-B_DEF (vec_all_eqv2di, vec_all_eqv2di, 0, B_INT, BT_FN_INT_UV2DI_UV2DI)
-B_DEF (vec_all_eqv2df, vec_all_eqv2df, 0, B_INT, BT_FN_INT_V2DF_V2DF)
-
-B_DEF (vec_all_nev16qi, vec_all_nev16qi, 0, B_INT, BT_FN_INT_UV16QI_UV16QI)
-B_DEF (vec_all_nev8hi, vec_all_nev8hi, 0, B_INT, BT_FN_INT_UV8HI_UV8HI)
-B_DEF (vec_all_nev4si, vec_all_nev4si, 0, B_INT, BT_FN_INT_UV4SI_UV4SI)
-B_DEF (vec_all_nev2di, vec_all_nev2di, 0, B_INT, BT_FN_INT_UV2DI_UV2DI)
-B_DEF (vec_all_nev2df, vec_all_nev2df, 0, B_INT, BT_FN_INT_V2DF_V2DF)
-
-B_DEF (vec_all_gev16qi, vec_all_gev16qi, 0, B_INT, BT_FN_INT_V16QI_V16QI)
-B_DEF (vec_all_geuv16qi, vec_all_geuv16qi, 0, B_INT, BT_FN_INT_UV16QI_UV16QI)
-B_DEF (vec_all_gev8hi, vec_all_gev8hi, 0, B_INT, BT_FN_INT_V8HI_V8HI)
-B_DEF (vec_all_geuv8hi, vec_all_geuv8hi, 0, B_INT, BT_FN_INT_UV8HI_UV8HI)
-B_DEF (vec_all_gev4si, vec_all_gev4si, 0, B_INT, BT_FN_INT_V4SI_V4SI)
-B_DEF (vec_all_geuv4si, vec_all_geuv4si, 0, B_INT, BT_FN_INT_UV4SI_UV4SI)
-B_DEF (vec_all_gev2di, vec_all_gev2di, 0, B_INT, BT_FN_INT_V2DI_V2DI)
-B_DEF (vec_all_geuv2di, vec_all_geuv2di, 0, B_INT, BT_FN_INT_UV2DI_UV2DI)
-B_DEF (vec_all_gev2df, vec_all_gev2df, 0, B_INT, BT_FN_INT_V2DF_V2DF)
-
-B_DEF (vec_all_gtv16qi, vec_all_gtv16qi, 0, B_INT, BT_FN_INT_V16QI_V16QI)
-B_DEF (vec_all_gtuv16qi, vec_all_gtuv16qi, 0, B_INT, BT_FN_INT_UV16QI_UV16QI)
-B_DEF (vec_all_gtv8hi, vec_all_gtv8hi, 0, B_INT, BT_FN_INT_V8HI_V8HI)
-B_DEF (vec_all_gtuv8hi, vec_all_gtuv8hi, 0, B_INT, BT_FN_INT_UV8HI_UV8HI)
-B_DEF (vec_all_gtv4si, vec_all_gtv4si, 0, B_INT, BT_FN_INT_V4SI_V4SI)
-B_DEF (vec_all_gtuv4si, vec_all_gtuv4si, 0, B_INT, BT_FN_INT_UV4SI_UV4SI)
-B_DEF (vec_all_gtv2di, vec_all_gtv2di, 0, B_INT, BT_FN_INT_V2DI_V2DI)
-B_DEF (vec_all_gtuv2di, vec_all_gtuv2di, 0, B_INT, BT_FN_INT_UV2DI_UV2DI)
-B_DEF (vec_all_gtv2df, vec_all_gtv2df, 0, B_INT, BT_FN_INT_V2DF_V2DF)
-
-B_DEF (vec_all_lev16qi, vec_all_lev16qi, 0, B_INT, BT_FN_INT_V16QI_V16QI)
-B_DEF (vec_all_leuv16qi, vec_all_leuv16qi, 0, B_INT, BT_FN_INT_UV16QI_UV16QI)
-B_DEF (vec_all_lev8hi, vec_all_lev8hi, 0, B_INT, BT_FN_INT_V8HI_V8HI)
-B_DEF (vec_all_leuv8hi, vec_all_leuv8hi, 0, B_INT, BT_FN_INT_UV8HI_UV8HI)
-B_DEF (vec_all_lev4si, vec_all_lev4si, 0, B_INT, BT_FN_INT_V4SI_V4SI)
-B_DEF (vec_all_leuv4si, vec_all_leuv4si, 0, B_INT, BT_FN_INT_UV4SI_UV4SI)
-B_DEF (vec_all_lev2di, vec_all_lev2di, 0, B_INT, BT_FN_INT_V2DI_V2DI)
-B_DEF (vec_all_leuv2di, vec_all_leuv2di, 0, B_INT, BT_FN_INT_UV2DI_UV2DI)
-B_DEF (vec_all_lev2df, vec_all_lev2df, 0, B_INT, BT_FN_INT_V2DF_V2DF)
-
-B_DEF (vec_all_ltv16qi, vec_all_ltv16qi, 0, B_INT, BT_FN_INT_V16QI_V16QI)
-B_DEF (vec_all_ltuv16qi, vec_all_ltuv16qi, 0, B_INT, BT_FN_INT_UV16QI_UV16QI)
-B_DEF (vec_all_ltv8hi, vec_all_ltv8hi, 0, B_INT, BT_FN_INT_V8HI_V8HI)
-B_DEF (vec_all_ltuv8hi, vec_all_ltuv8hi, 0, B_INT, BT_FN_INT_UV8HI_UV8HI)
-B_DEF (vec_all_ltv4si, vec_all_ltv4si, 0, B_INT, BT_FN_INT_V4SI_V4SI)
-B_DEF (vec_all_ltuv4si, vec_all_ltuv4si, 0, B_INT, BT_FN_INT_UV4SI_UV4SI)
-B_DEF (vec_all_ltv2di, vec_all_ltv2di, 0, B_INT, BT_FN_INT_V2DI_V2DI)
-B_DEF (vec_all_ltuv2di, vec_all_ltuv2di, 0, B_INT, BT_FN_INT_UV2DI_UV2DI)
-B_DEF (vec_all_ltv2df, vec_all_ltv2df, 0, B_INT, BT_FN_INT_V2DF_V2DF)
-
-OB_DEF (s390_vec_all_eq, s390_vec_all_eq_s8_a,s390_vec_all_eq_dbl,BT_FN_INT_OV4SI_OV4SI)
+B_DEF (s390_vavgb, vec_avgv16qi, 0, B_VX, 0, BT_FN_V16QI_V16QI_V16QI)
+B_DEF (s390_vavglb, vec_avguv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vavgh, vec_avgv8hi, 0, B_VX, 0, BT_FN_V8HI_V8HI_V8HI)
+B_DEF (s390_vavglh, vec_avguv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI)
+B_DEF (s390_vavgf, vec_avgv4si, 0, B_VX, 0, BT_FN_V4SI_V4SI_V4SI)
+B_DEF (s390_vavglf, vec_avguv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI)
+B_DEF (s390_vavgg, vec_avgv2di, 0, B_VX, 0, BT_FN_V2DI_V2DI_V2DI)
+B_DEF (s390_vavglg, vec_avguv2di, 0, B_VX, 0, BT_FN_UV2DI_UV2DI_UV2DI)
+B_DEF (s390_vcksm, vec_checksum, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI)
+B_DEF (s390_vceqbs, vec_cmpeqv16qi_cc, 0, B_VX, 0, BT_FN_V16QI_UV16QI_UV16QI_INTPTR)
+B_DEF (s390_vceqhs, vec_cmpeqv8hi_cc, 0, B_VX, 0, BT_FN_V8HI_UV8HI_UV8HI_INTPTR)
+B_DEF (s390_vceqfs, vec_cmpeqv4si_cc, 0, B_VX, 0, BT_FN_V4SI_UV4SI_UV4SI_INTPTR)
+B_DEF (s390_vceqgs, vec_cmpeqv2di_cc, 0, B_VX, 0, BT_FN_V2DI_UV2DI_UV2DI_INTPTR)
+B_DEF (s390_vfcedbs, vec_cmpeqv2df_cc, 0, B_VX, 0, BT_FN_V2DI_V2DF_V2DF_INTPTR)
+B_DEF (s390_vchbs, vec_cmphv16qi_cc, 0, B_VX, 0, BT_FN_V16QI_V16QI_V16QI_INTPTR)
+B_DEF (s390_vchlbs, vec_cmphlv16qi_cc, 0, B_VX, 0, BT_FN_V16QI_UV16QI_UV16QI_INTPTR)
+B_DEF (s390_vchhs, vec_cmphv8hi_cc, 0, B_VX, 0, BT_FN_V8HI_V8HI_V8HI_INTPTR)
+B_DEF (s390_vchlhs, vec_cmphlv8hi_cc, 0, B_VX, 0, BT_FN_V8HI_UV8HI_UV8HI_INTPTR)
+B_DEF (s390_vchfs, vec_cmphv4si_cc, 0, B_VX, 0, BT_FN_V4SI_V4SI_V4SI_INTPTR)
+B_DEF (s390_vchlfs, vec_cmphlv4si_cc, 0, B_VX, 0, BT_FN_V4SI_UV4SI_UV4SI_INTPTR)
+B_DEF (s390_vchgs, vec_cmphv2di_cc, 0, B_VX, 0, BT_FN_V2DI_V2DI_V2DI_INTPTR)
+B_DEF (s390_vchlgs, vec_cmphlv2di_cc, 0, B_VX, 0, BT_FN_V2DI_UV2DI_UV2DI_INTPTR)
+B_DEF (s390_vfchdbs, vec_cmphv2df_cc, 0, B_VX, 0, BT_FN_V2DI_V2DF_V2DF_INTPTR)
+B_DEF (s390_vfchedbs, vec_cmphev2df_cc, 0, B_VX, 0, BT_FN_V2DI_V2DF_V2DF_INTPTR)
+B_DEF (vec_all_eqv16qi, vec_all_eqv16qi, 0, B_VX | B_INT, 0, BT_FN_INT_UV16QI_UV16QI)
+B_DEF (vec_all_eqv8hi, vec_all_eqv8hi, 0, B_VX | B_INT, 0, BT_FN_INT_UV8HI_UV8HI)
+B_DEF (vec_all_eqv4si, vec_all_eqv4si, 0, B_VX | B_INT, 0, BT_FN_INT_UV4SI_UV4SI)
+B_DEF (vec_all_eqv2di, vec_all_eqv2di, 0, B_VX | B_INT, 0, BT_FN_INT_UV2DI_UV2DI)
+B_DEF (vec_all_eqv2df, vec_all_eqv2df, 0, B_VX | B_INT, 0, BT_FN_INT_V2DF_V2DF)
+B_DEF (vec_all_nev16qi, vec_all_nev16qi, 0, B_VX | B_INT, 0, BT_FN_INT_UV16QI_UV16QI)
+B_DEF (vec_all_nev8hi, vec_all_nev8hi, 0, B_VX | B_INT, 0, BT_FN_INT_UV8HI_UV8HI)
+B_DEF (vec_all_nev4si, vec_all_nev4si, 0, B_VX | B_INT, 0, BT_FN_INT_UV4SI_UV4SI)
+B_DEF (vec_all_nev2di, vec_all_nev2di, 0, B_VX | B_INT, 0, BT_FN_INT_UV2DI_UV2DI)
+B_DEF (vec_all_nev2df, vec_all_nev2df, 0, B_VX | B_INT, 0, BT_FN_INT_V2DF_V2DF)
+B_DEF (vec_all_gev16qi, vec_all_gev16qi, 0, B_VX | B_INT, 0, BT_FN_INT_V16QI_V16QI)
+B_DEF (vec_all_geuv16qi, vec_all_geuv16qi, 0, B_VX | B_INT, 0, BT_FN_INT_UV16QI_UV16QI)
+B_DEF (vec_all_gev8hi, vec_all_gev8hi, 0, B_VX | B_INT, 0, BT_FN_INT_V8HI_V8HI)
+B_DEF (vec_all_geuv8hi, vec_all_geuv8hi, 0, B_VX | B_INT, 0, BT_FN_INT_UV8HI_UV8HI)
+B_DEF (vec_all_gev4si, vec_all_gev4si, 0, B_VX | B_INT, 0, BT_FN_INT_V4SI_V4SI)
+B_DEF (vec_all_geuv4si, vec_all_geuv4si, 0, B_VX | B_INT, 0, BT_FN_INT_UV4SI_UV4SI)
+B_DEF (vec_all_gev2di, vec_all_gev2di, 0, B_VX | B_INT, 0, BT_FN_INT_V2DI_V2DI)
+B_DEF (vec_all_geuv2di, vec_all_geuv2di, 0, B_VX | B_INT, 0, BT_FN_INT_UV2DI_UV2DI)
+B_DEF (vec_all_gev2df, vec_all_gev2df, 0, B_VX | B_INT, 0, BT_FN_INT_V2DF_V2DF)
+B_DEF (vec_all_gtv16qi, vec_all_gtv16qi, 0, B_VX | B_INT, 0, BT_FN_INT_V16QI_V16QI)
+B_DEF (vec_all_gtuv16qi, vec_all_gtuv16qi, 0, B_VX | B_INT, 0, BT_FN_INT_UV16QI_UV16QI)
+B_DEF (vec_all_gtv8hi, vec_all_gtv8hi, 0, B_VX | B_INT, 0, BT_FN_INT_V8HI_V8HI)
+B_DEF (vec_all_gtuv8hi, vec_all_gtuv8hi, 0, B_VX | B_INT, 0, BT_FN_INT_UV8HI_UV8HI)
+B_DEF (vec_all_gtv4si, vec_all_gtv4si, 0, B_VX | B_INT, 0, BT_FN_INT_V4SI_V4SI)
+B_DEF (vec_all_gtuv4si, vec_all_gtuv4si, 0, B_VX | B_INT, 0, BT_FN_INT_UV4SI_UV4SI)
+B_DEF (vec_all_gtv2di, vec_all_gtv2di, 0, B_VX | B_INT, 0, BT_FN_INT_V2DI_V2DI)
+B_DEF (vec_all_gtuv2di, vec_all_gtuv2di, 0, B_VX | B_INT, 0, BT_FN_INT_UV2DI_UV2DI)
+B_DEF (vec_all_gtv2df, vec_all_gtv2df, 0, B_VX | B_INT, 0, BT_FN_INT_V2DF_V2DF)
+B_DEF (vec_all_lev16qi, vec_all_lev16qi, 0, B_VX | B_INT, 0, BT_FN_INT_V16QI_V16QI)
+B_DEF (vec_all_leuv16qi, vec_all_leuv16qi, 0, B_VX | B_INT, 0, BT_FN_INT_UV16QI_UV16QI)
+B_DEF (vec_all_lev8hi, vec_all_lev8hi, 0, B_VX | B_INT, 0, BT_FN_INT_V8HI_V8HI)
+B_DEF (vec_all_leuv8hi, vec_all_leuv8hi, 0, B_VX | B_INT, 0, BT_FN_INT_UV8HI_UV8HI)
+B_DEF (vec_all_lev4si, vec_all_lev4si, 0, B_VX | B_INT, 0, BT_FN_INT_V4SI_V4SI)
+B_DEF (vec_all_leuv4si, vec_all_leuv4si, 0, B_VX | B_INT, 0, BT_FN_INT_UV4SI_UV4SI)
+B_DEF (vec_all_lev2di, vec_all_lev2di, 0, B_VX | B_INT, 0, BT_FN_INT_V2DI_V2DI)
+B_DEF (vec_all_leuv2di, vec_all_leuv2di, 0, B_VX | B_INT, 0, BT_FN_INT_UV2DI_UV2DI)
+B_DEF (vec_all_lev2df, vec_all_lev2df, 0, B_VX | B_INT, 0, BT_FN_INT_V2DF_V2DF)
+B_DEF (vec_all_ltv16qi, vec_all_ltv16qi, 0, B_VX | B_INT, 0, BT_FN_INT_V16QI_V16QI)
+B_DEF (vec_all_ltuv16qi, vec_all_ltuv16qi, 0, B_VX | B_INT, 0, BT_FN_INT_UV16QI_UV16QI)
+B_DEF (vec_all_ltv8hi, vec_all_ltv8hi, 0, B_VX | B_INT, 0, BT_FN_INT_V8HI_V8HI)
+B_DEF (vec_all_ltuv8hi, vec_all_ltuv8hi, 0, B_VX | B_INT, 0, BT_FN_INT_UV8HI_UV8HI)
+B_DEF (vec_all_ltv4si, vec_all_ltv4si, 0, B_VX | B_INT, 0, BT_FN_INT_V4SI_V4SI)
+B_DEF (vec_all_ltuv4si, vec_all_ltuv4si, 0, B_VX | B_INT, 0, BT_FN_INT_UV4SI_UV4SI)
+B_DEF (vec_all_ltv2di, vec_all_ltv2di, 0, B_VX | B_INT, 0, BT_FN_INT_V2DI_V2DI)
+B_DEF (vec_all_ltuv2di, vec_all_ltuv2di, 0, B_VX | B_INT, 0, BT_FN_INT_UV2DI_UV2DI)
+B_DEF (vec_all_ltv2df, vec_all_ltv2df, 0, B_VX | B_INT, 0, BT_FN_INT_V2DF_V2DF)
+
+OB_DEF (s390_vec_all_eq, s390_vec_all_eq_s8_a,s390_vec_all_eq_dbl,B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_all_eq_s8_a, vec_all_eqv16qi, 0, BT_OV_INT_V16QI_V16QI)
OB_DEF_VAR (s390_vec_all_eq_s8_b, vec_all_eqv16qi, 0, BT_OV_INT_V16QI_BV16QI)
OB_DEF_VAR (s390_vec_all_eq_b8_a, vec_all_eqv16qi, 0, BT_OV_INT_BV16QI_BV16QI)
@@ -932,7 +930,7 @@ OB_DEF_VAR (s390_vec_all_eq_u64_a, vec_all_eqv2di, 0,
OB_DEF_VAR (s390_vec_all_eq_u64_b, vec_all_eqv2di, 0, BT_OV_INT_UV2DI_BV2DI)
OB_DEF_VAR (s390_vec_all_eq_dbl, vec_all_eqv2df, 0, BT_OV_INT_V2DF_V2DF)
-OB_DEF (s390_vec_all_ne, s390_vec_all_ne_s8_a,s390_vec_all_ne_dbl,BT_FN_INT_OV4SI_OV4SI)
+OB_DEF (s390_vec_all_ne, s390_vec_all_ne_s8_a,s390_vec_all_ne_dbl,B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_all_ne_s8_a, vec_all_nev16qi, 0, BT_OV_INT_V16QI_V16QI)
OB_DEF_VAR (s390_vec_all_ne_s8_b, vec_all_nev16qi, 0, BT_OV_INT_V16QI_BV16QI)
OB_DEF_VAR (s390_vec_all_ne_b8_a, vec_all_nev16qi, 0, BT_OV_INT_BV16QI_BV16QI)
@@ -963,7 +961,7 @@ OB_DEF_VAR (s390_vec_all_ne_u64_a, vec_all_nev2di, 0,
OB_DEF_VAR (s390_vec_all_ne_u64_b, vec_all_nev2di, 0, BT_OV_INT_UV2DI_BV2DI)
OB_DEF_VAR (s390_vec_all_ne_dbl, vec_all_nev2df, 0, BT_OV_INT_V2DF_V2DF)
-OB_DEF (s390_vec_all_ge, s390_vec_all_ge_s8_a,s390_vec_all_ge_dbl,BT_FN_INT_OV4SI_OV4SI)
+OB_DEF (s390_vec_all_ge, s390_vec_all_ge_s8_a,s390_vec_all_ge_dbl,B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_all_ge_s8_a, vec_all_gev16qi, 0, BT_OV_INT_V16QI_V16QI)
OB_DEF_VAR (s390_vec_all_ge_s8_b, vec_all_gev16qi, 0, BT_OV_INT_V16QI_BV16QI)
OB_DEF_VAR (s390_vec_all_ge_b8_a, vec_all_geuv16qi, 0, BT_OV_INT_BV16QI_BV16QI)
@@ -994,7 +992,7 @@ OB_DEF_VAR (s390_vec_all_ge_u64_a, vec_all_geuv2di, 0,
OB_DEF_VAR (s390_vec_all_ge_u64_b, vec_all_geuv2di, 0, BT_OV_INT_UV2DI_BV2DI)
OB_DEF_VAR (s390_vec_all_ge_dbl, vec_all_gev2df, 0, BT_OV_INT_V2DF_V2DF)
-OB_DEF (s390_vec_all_gt, s390_vec_all_gt_s8_a,s390_vec_all_gt_dbl,BT_FN_INT_OV4SI_OV4SI)
+OB_DEF (s390_vec_all_gt, s390_vec_all_gt_s8_a,s390_vec_all_gt_dbl,B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_all_gt_s8_a, vec_all_gtv16qi, 0, BT_OV_INT_V16QI_V16QI)
OB_DEF_VAR (s390_vec_all_gt_s8_b, vec_all_gtv16qi, 0, BT_OV_INT_V16QI_BV16QI)
OB_DEF_VAR (s390_vec_all_gt_b8_a, vec_all_gtuv16qi, 0, BT_OV_INT_BV16QI_BV16QI)
@@ -1025,7 +1023,7 @@ OB_DEF_VAR (s390_vec_all_gt_u64_a, vec_all_gtuv2di, 0,
OB_DEF_VAR (s390_vec_all_gt_u64_b, vec_all_gtuv2di, 0, BT_OV_INT_UV2DI_BV2DI)
OB_DEF_VAR (s390_vec_all_gt_dbl, vec_all_gtv2df, 0, BT_OV_INT_V2DF_V2DF)
-OB_DEF (s390_vec_all_le, s390_vec_all_le_s8_a,s390_vec_all_le_dbl,BT_FN_INT_OV4SI_OV4SI)
+OB_DEF (s390_vec_all_le, s390_vec_all_le_s8_a,s390_vec_all_le_dbl,B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_all_le_s8_a, vec_all_lev16qi, 0, BT_OV_INT_V16QI_V16QI)
OB_DEF_VAR (s390_vec_all_le_s8_b, vec_all_lev16qi, 0, BT_OV_INT_V16QI_BV16QI)
OB_DEF_VAR (s390_vec_all_le_b8_a, vec_all_leuv16qi, 0, BT_OV_INT_BV16QI_BV16QI)
@@ -1056,7 +1054,7 @@ OB_DEF_VAR (s390_vec_all_le_u64_a, vec_all_leuv2di, 0,
OB_DEF_VAR (s390_vec_all_le_u64_b, vec_all_leuv2di, 0, BT_OV_INT_UV2DI_BV2DI)
OB_DEF_VAR (s390_vec_all_le_dbl, vec_all_lev2df, 0, BT_OV_INT_V2DF_V2DF)
-OB_DEF (s390_vec_all_lt, s390_vec_all_lt_s8_a,s390_vec_all_lt_dbl,BT_FN_INT_OV4SI_OV4SI)
+OB_DEF (s390_vec_all_lt, s390_vec_all_lt_s8_a,s390_vec_all_lt_dbl,B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_all_lt_s8_a, vec_all_ltv16qi, 0, BT_OV_INT_V16QI_V16QI)
OB_DEF_VAR (s390_vec_all_lt_s8_b, vec_all_ltv16qi, 0, BT_OV_INT_V16QI_BV16QI)
OB_DEF_VAR (s390_vec_all_lt_b8_a, vec_all_ltuv16qi, 0, BT_OV_INT_BV16QI_BV16QI)
@@ -1087,59 +1085,54 @@ OB_DEF_VAR (s390_vec_all_lt_u64_a, vec_all_ltuv2di, 0,
OB_DEF_VAR (s390_vec_all_lt_u64_b, vec_all_ltuv2di, 0, BT_OV_INT_UV2DI_BV2DI)
OB_DEF_VAR (s390_vec_all_lt_dbl, vec_all_ltv2df, 0, BT_OV_INT_V2DF_V2DF)
-B_DEF (vec_any_eqv16qi, vec_any_eqv16qi, 0, B_INT, BT_FN_INT_UV16QI_UV16QI)
-B_DEF (vec_any_eqv8hi, vec_any_eqv8hi, 0, B_INT, BT_FN_INT_UV8HI_UV8HI)
-B_DEF (vec_any_eqv4si, vec_any_eqv4si, 0, B_INT, BT_FN_INT_UV4SI_UV4SI)
-B_DEF (vec_any_eqv2di, vec_any_eqv2di, 0, B_INT, BT_FN_INT_UV2DI_UV2DI)
-B_DEF (vec_any_eqv2df, vec_any_eqv2df, 0, B_INT, BT_FN_INT_V2DF_V2DF)
-
-B_DEF (vec_any_nev16qi, vec_any_nev16qi, 0, B_INT, BT_FN_INT_UV16QI_UV16QI)
-B_DEF (vec_any_nev8hi, vec_any_nev8hi, 0, B_INT, BT_FN_INT_UV8HI_UV8HI)
-B_DEF (vec_any_nev4si, vec_any_nev4si, 0, B_INT, BT_FN_INT_UV4SI_UV4SI)
-B_DEF (vec_any_nev2di, vec_any_nev2di, 0, B_INT, BT_FN_INT_UV2DI_UV2DI)
-B_DEF (vec_any_nev2df, vec_any_nev2df, 0, B_INT, BT_FN_INT_V2DF_V2DF)
-
-B_DEF (vec_any_gev16qi, vec_any_gev16qi, 0, B_INT, BT_FN_INT_V16QI_V16QI)
-B_DEF (vec_any_geuv16qi, vec_any_geuv16qi, 0, B_INT, BT_FN_INT_UV16QI_UV16QI)
-B_DEF (vec_any_gev8hi, vec_any_gev8hi, 0, B_INT, BT_FN_INT_V8HI_V8HI)
-B_DEF (vec_any_geuv8hi, vec_any_geuv8hi, 0, B_INT, BT_FN_INT_UV8HI_UV8HI)
-B_DEF (vec_any_gev4si, vec_any_gev4si, 0, B_INT, BT_FN_INT_V4SI_V4SI)
-B_DEF (vec_any_geuv4si, vec_any_geuv4si, 0, B_INT, BT_FN_INT_UV4SI_UV4SI)
-B_DEF (vec_any_gev2di, vec_any_gev2di, 0, B_INT, BT_FN_INT_V2DI_V2DI)
-B_DEF (vec_any_geuv2di, vec_any_geuv2di, 0, B_INT, BT_FN_INT_UV2DI_UV2DI)
-B_DEF (vec_any_gev2df, vec_any_gev2df, 0, B_INT, BT_FN_INT_V2DF_V2DF)
-
-B_DEF (vec_any_gtv16qi, vec_any_gtv16qi, 0, B_INT, BT_FN_INT_V16QI_V16QI)
-B_DEF (vec_any_gtuv16qi, vec_any_gtuv16qi, 0, B_INT, BT_FN_INT_UV16QI_UV16QI)
-B_DEF (vec_any_gtv8hi, vec_any_gtv8hi, 0, B_INT, BT_FN_INT_V8HI_V8HI)
-B_DEF (vec_any_gtuv8hi, vec_any_gtuv8hi, 0, B_INT, BT_FN_INT_UV8HI_UV8HI)
-B_DEF (vec_any_gtv4si, vec_any_gtv4si, 0, B_INT, BT_FN_INT_V4SI_V4SI)
-B_DEF (vec_any_gtuv4si, vec_any_gtuv4si, 0, B_INT, BT_FN_INT_UV4SI_UV4SI)
-B_DEF (vec_any_gtv2di, vec_any_gtv2di, 0, B_INT, BT_FN_INT_V2DI_V2DI)
-B_DEF (vec_any_gtuv2di, vec_any_gtuv2di, 0, B_INT, BT_FN_INT_UV2DI_UV2DI)
-B_DEF (vec_any_gtv2df, vec_any_gtv2df, 0, B_INT, BT_FN_INT_V2DF_V2DF)
-
-B_DEF (vec_any_lev16qi, vec_any_lev16qi, 0, B_INT, BT_FN_INT_V16QI_V16QI)
-B_DEF (vec_any_leuv16qi, vec_any_leuv16qi, 0, B_INT, BT_FN_INT_UV16QI_UV16QI)
-B_DEF (vec_any_lev8hi, vec_any_lev8hi, 0, B_INT, BT_FN_INT_V8HI_V8HI)
-B_DEF (vec_any_leuv8hi, vec_any_leuv8hi, 0, B_INT, BT_FN_INT_UV8HI_UV8HI)
-B_DEF (vec_any_lev4si, vec_any_lev4si, 0, B_INT, BT_FN_INT_V4SI_V4SI)
-B_DEF (vec_any_leuv4si, vec_any_leuv4si, 0, B_INT, BT_FN_INT_UV4SI_UV4SI)
-B_DEF (vec_any_lev2di, vec_any_lev2di, 0, B_INT, BT_FN_INT_V2DI_V2DI)
-B_DEF (vec_any_leuv2di, vec_any_leuv2di, 0, B_INT, BT_FN_INT_UV2DI_UV2DI)
-B_DEF (vec_any_lev2df, vec_any_lev2df, 0, B_INT, BT_FN_INT_V2DF_V2DF)
-
-B_DEF (vec_any_ltv16qi, vec_any_ltv16qi, 0, B_INT, BT_FN_INT_V16QI_V16QI)
-B_DEF (vec_any_ltuv16qi, vec_any_ltuv16qi, 0, B_INT, BT_FN_INT_UV16QI_UV16QI)
-B_DEF (vec_any_ltv8hi, vec_any_ltv8hi, 0, B_INT, BT_FN_INT_V8HI_V8HI)
-B_DEF (vec_any_ltuv8hi, vec_any_ltuv8hi, 0, B_INT, BT_FN_INT_UV8HI_UV8HI)
-B_DEF (vec_any_ltv4si, vec_any_ltv4si, 0, B_INT, BT_FN_INT_V4SI_V4SI)
-B_DEF (vec_any_ltuv4si, vec_any_ltuv4si, 0, B_INT, BT_FN_INT_UV4SI_UV4SI)
-B_DEF (vec_any_ltv2di, vec_any_ltv2di, 0, B_INT, BT_FN_INT_V2DI_V2DI)
-B_DEF (vec_any_ltuv2di, vec_any_ltuv2di, 0, B_INT, BT_FN_INT_UV2DI_UV2DI)
-B_DEF (vec_any_ltv2df, vec_any_ltv2df, 0, B_INT, BT_FN_INT_V2DF_V2DF)
-
-OB_DEF (s390_vec_any_eq, s390_vec_any_eq_s8_a,s390_vec_any_eq_dbl,BT_FN_INT_OV4SI_OV4SI)
+B_DEF (vec_any_eqv16qi, vec_any_eqv16qi, 0, B_VX | B_INT, 0, BT_FN_INT_UV16QI_UV16QI)
+B_DEF (vec_any_eqv8hi, vec_any_eqv8hi, 0, B_VX | B_INT, 0, BT_FN_INT_UV8HI_UV8HI)
+B_DEF (vec_any_eqv4si, vec_any_eqv4si, 0, B_VX | B_INT, 0, BT_FN_INT_UV4SI_UV4SI)
+B_DEF (vec_any_eqv2di, vec_any_eqv2di, 0, B_VX | B_INT, 0, BT_FN_INT_UV2DI_UV2DI)
+B_DEF (vec_any_eqv2df, vec_any_eqv2df, 0, B_VX | B_INT, 0, BT_FN_INT_V2DF_V2DF)
+B_DEF (vec_any_nev16qi, vec_any_nev16qi, 0, B_VX | B_INT, 0, BT_FN_INT_UV16QI_UV16QI)
+B_DEF (vec_any_nev8hi, vec_any_nev8hi, 0, B_VX | B_INT, 0, BT_FN_INT_UV8HI_UV8HI)
+B_DEF (vec_any_nev4si, vec_any_nev4si, 0, B_VX | B_INT, 0, BT_FN_INT_UV4SI_UV4SI)
+B_DEF (vec_any_nev2di, vec_any_nev2di, 0, B_VX | B_INT, 0, BT_FN_INT_UV2DI_UV2DI)
+B_DEF (vec_any_nev2df, vec_any_nev2df, 0, B_VX | B_INT, 0, BT_FN_INT_V2DF_V2DF)
+B_DEF (vec_any_gev16qi, vec_any_gev16qi, 0, B_VX | B_INT, 0, BT_FN_INT_V16QI_V16QI)
+B_DEF (vec_any_geuv16qi, vec_any_geuv16qi, 0, B_VX | B_INT, 0, BT_FN_INT_UV16QI_UV16QI)
+B_DEF (vec_any_gev8hi, vec_any_gev8hi, 0, B_VX | B_INT, 0, BT_FN_INT_V8HI_V8HI)
+B_DEF (vec_any_geuv8hi, vec_any_geuv8hi, 0, B_VX | B_INT, 0, BT_FN_INT_UV8HI_UV8HI)
+B_DEF (vec_any_gev4si, vec_any_gev4si, 0, B_VX | B_INT, 0, BT_FN_INT_V4SI_V4SI)
+B_DEF (vec_any_geuv4si, vec_any_geuv4si, 0, B_VX | B_INT, 0, BT_FN_INT_UV4SI_UV4SI)
+B_DEF (vec_any_gev2di, vec_any_gev2di, 0, B_VX | B_INT, 0, BT_FN_INT_V2DI_V2DI)
+B_DEF (vec_any_geuv2di, vec_any_geuv2di, 0, B_VX | B_INT, 0, BT_FN_INT_UV2DI_UV2DI)
+B_DEF (vec_any_gev2df, vec_any_gev2df, 0, B_VX | B_INT, 0, BT_FN_INT_V2DF_V2DF)
+B_DEF (vec_any_gtv16qi, vec_any_gtv16qi, 0, B_VX | B_INT, 0, BT_FN_INT_V16QI_V16QI)
+B_DEF (vec_any_gtuv16qi, vec_any_gtuv16qi, 0, B_VX | B_INT, 0, BT_FN_INT_UV16QI_UV16QI)
+B_DEF (vec_any_gtv8hi, vec_any_gtv8hi, 0, B_VX | B_INT, 0, BT_FN_INT_V8HI_V8HI)
+B_DEF (vec_any_gtuv8hi, vec_any_gtuv8hi, 0, B_VX | B_INT, 0, BT_FN_INT_UV8HI_UV8HI)
+B_DEF (vec_any_gtv4si, vec_any_gtv4si, 0, B_VX | B_INT, 0, BT_FN_INT_V4SI_V4SI)
+B_DEF (vec_any_gtuv4si, vec_any_gtuv4si, 0, B_VX | B_INT, 0, BT_FN_INT_UV4SI_UV4SI)
+B_DEF (vec_any_gtv2di, vec_any_gtv2di, 0, B_VX | B_INT, 0, BT_FN_INT_V2DI_V2DI)
+B_DEF (vec_any_gtuv2di, vec_any_gtuv2di, 0, B_VX | B_INT, 0, BT_FN_INT_UV2DI_UV2DI)
+B_DEF (vec_any_gtv2df, vec_any_gtv2df, 0, B_VX | B_INT, 0, BT_FN_INT_V2DF_V2DF)
+B_DEF (vec_any_lev16qi, vec_any_lev16qi, 0, B_VX | B_INT, 0, BT_FN_INT_V16QI_V16QI)
+B_DEF (vec_any_leuv16qi, vec_any_leuv16qi, 0, B_VX | B_INT, 0, BT_FN_INT_UV16QI_UV16QI)
+B_DEF (vec_any_lev8hi, vec_any_lev8hi, 0, B_VX | B_INT, 0, BT_FN_INT_V8HI_V8HI)
+B_DEF (vec_any_leuv8hi, vec_any_leuv8hi, 0, B_VX | B_INT, 0, BT_FN_INT_UV8HI_UV8HI)
+B_DEF (vec_any_lev4si, vec_any_lev4si, 0, B_VX | B_INT, 0, BT_FN_INT_V4SI_V4SI)
+B_DEF (vec_any_leuv4si, vec_any_leuv4si, 0, B_VX | B_INT, 0, BT_FN_INT_UV4SI_UV4SI)
+B_DEF (vec_any_lev2di, vec_any_lev2di, 0, B_VX | B_INT, 0, BT_FN_INT_V2DI_V2DI)
+B_DEF (vec_any_leuv2di, vec_any_leuv2di, 0, B_VX | B_INT, 0, BT_FN_INT_UV2DI_UV2DI)
+B_DEF (vec_any_lev2df, vec_any_lev2df, 0, B_VX | B_INT, 0, BT_FN_INT_V2DF_V2DF)
+B_DEF (vec_any_ltv16qi, vec_any_ltv16qi, 0, B_VX | B_INT, 0, BT_FN_INT_V16QI_V16QI)
+B_DEF (vec_any_ltuv16qi, vec_any_ltuv16qi, 0, B_VX | B_INT, 0, BT_FN_INT_UV16QI_UV16QI)
+B_DEF (vec_any_ltv8hi, vec_any_ltv8hi, 0, B_VX | B_INT, 0, BT_FN_INT_V8HI_V8HI)
+B_DEF (vec_any_ltuv8hi, vec_any_ltuv8hi, 0, B_VX | B_INT, 0, BT_FN_INT_UV8HI_UV8HI)
+B_DEF (vec_any_ltv4si, vec_any_ltv4si, 0, B_VX | B_INT, 0, BT_FN_INT_V4SI_V4SI)
+B_DEF (vec_any_ltuv4si, vec_any_ltuv4si, 0, B_VX | B_INT, 0, BT_FN_INT_UV4SI_UV4SI)
+B_DEF (vec_any_ltv2di, vec_any_ltv2di, 0, B_VX | B_INT, 0, BT_FN_INT_V2DI_V2DI)
+B_DEF (vec_any_ltuv2di, vec_any_ltuv2di, 0, B_VX | B_INT, 0, BT_FN_INT_UV2DI_UV2DI)
+B_DEF (vec_any_ltv2df, vec_any_ltv2df, 0, B_VX | B_INT, 0, BT_FN_INT_V2DF_V2DF)
+
+OB_DEF (s390_vec_any_eq, s390_vec_any_eq_s8_a,s390_vec_any_eq_dbl,B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_any_eq_s8_a, vec_any_eqv16qi, 0, BT_OV_INT_V16QI_V16QI)
OB_DEF_VAR (s390_vec_any_eq_s8_b, vec_any_eqv16qi, 0, BT_OV_INT_V16QI_BV16QI)
OB_DEF_VAR (s390_vec_any_eq_b8_a, vec_any_eqv16qi, 0, BT_OV_INT_BV16QI_BV16QI)
@@ -1170,7 +1163,7 @@ OB_DEF_VAR (s390_vec_any_eq_u64_a, vec_any_eqv2di, 0,
OB_DEF_VAR (s390_vec_any_eq_u64_b, vec_any_eqv2di, 0, BT_OV_INT_UV2DI_BV2DI)
OB_DEF_VAR (s390_vec_any_eq_dbl, vec_any_eqv2df, 0, BT_OV_INT_V2DF_V2DF)
-OB_DEF (s390_vec_any_ne, s390_vec_any_ne_s8_a,s390_vec_any_ne_dbl,BT_FN_INT_OV4SI_OV4SI)
+OB_DEF (s390_vec_any_ne, s390_vec_any_ne_s8_a,s390_vec_any_ne_dbl,B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_any_ne_s8_a, vec_any_nev16qi, 0, BT_OV_INT_V16QI_V16QI)
OB_DEF_VAR (s390_vec_any_ne_s8_b, vec_any_nev16qi, 0, BT_OV_INT_V16QI_BV16QI)
OB_DEF_VAR (s390_vec_any_ne_b8_a, vec_any_nev16qi, 0, BT_OV_INT_BV16QI_BV16QI)
@@ -1201,7 +1194,7 @@ OB_DEF_VAR (s390_vec_any_ne_u64_a, vec_any_nev2di, 0,
OB_DEF_VAR (s390_vec_any_ne_u64_b, vec_any_nev2di, 0, BT_OV_INT_UV2DI_BV2DI)
OB_DEF_VAR (s390_vec_any_ne_dbl, vec_any_nev2df, 0, BT_OV_INT_V2DF_V2DF)
-OB_DEF (s390_vec_any_ge, s390_vec_any_ge_s8_a,s390_vec_any_ge_dbl,BT_FN_INT_OV4SI_OV4SI)
+OB_DEF (s390_vec_any_ge, s390_vec_any_ge_s8_a,s390_vec_any_ge_dbl,B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_any_ge_s8_a, vec_any_gev16qi, 0, BT_OV_INT_V16QI_V16QI)
OB_DEF_VAR (s390_vec_any_ge_s8_b, vec_any_gev16qi, 0, BT_OV_INT_V16QI_BV16QI)
OB_DEF_VAR (s390_vec_any_ge_b8_a, vec_any_geuv16qi, 0, BT_OV_INT_BV16QI_BV16QI)
@@ -1232,7 +1225,7 @@ OB_DEF_VAR (s390_vec_any_ge_u64_a, vec_any_geuv2di, 0,
OB_DEF_VAR (s390_vec_any_ge_u64_b, vec_any_geuv2di, 0, BT_OV_INT_UV2DI_BV2DI)
OB_DEF_VAR (s390_vec_any_ge_dbl, vec_any_gev2df, 0, BT_OV_INT_V2DF_V2DF)
-OB_DEF (s390_vec_any_gt, s390_vec_any_gt_s8_a,s390_vec_any_gt_dbl,BT_FN_INT_OV4SI_OV4SI)
+OB_DEF (s390_vec_any_gt, s390_vec_any_gt_s8_a,s390_vec_any_gt_dbl,B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_any_gt_s8_a, vec_any_gtv16qi, 0, BT_OV_INT_V16QI_V16QI)
OB_DEF_VAR (s390_vec_any_gt_s8_b, vec_any_gtv16qi, 0, BT_OV_INT_V16QI_BV16QI)
OB_DEF_VAR (s390_vec_any_gt_b8_a, vec_any_gtuv16qi, 0, BT_OV_INT_BV16QI_BV16QI)
@@ -1263,7 +1256,7 @@ OB_DEF_VAR (s390_vec_any_gt_u64_a, vec_any_gtuv2di, 0,
OB_DEF_VAR (s390_vec_any_gt_u64_b, vec_any_gtuv2di, 0, BT_OV_INT_UV2DI_BV2DI)
OB_DEF_VAR (s390_vec_any_gt_dbl, vec_any_gtv2df, 0, BT_OV_INT_V2DF_V2DF)
-OB_DEF (s390_vec_any_le, s390_vec_any_le_s8_a,s390_vec_any_le_dbl,BT_FN_INT_OV4SI_OV4SI)
+OB_DEF (s390_vec_any_le, s390_vec_any_le_s8_a,s390_vec_any_le_dbl,B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_any_le_s8_a, vec_any_lev16qi, 0, BT_OV_INT_V16QI_V16QI)
OB_DEF_VAR (s390_vec_any_le_s8_b, vec_any_lev16qi, 0, BT_OV_INT_V16QI_BV16QI)
OB_DEF_VAR (s390_vec_any_le_b8_a, vec_any_leuv16qi, 0, BT_OV_INT_BV16QI_BV16QI)
@@ -1294,7 +1287,7 @@ OB_DEF_VAR (s390_vec_any_le_u64_a, vec_any_leuv2di, 0,
OB_DEF_VAR (s390_vec_any_le_u64_b, vec_any_leuv2di, 0, BT_OV_INT_UV2DI_BV2DI)
OB_DEF_VAR (s390_vec_any_le_dbl, vec_any_lev2df, 0, BT_OV_INT_V2DF_V2DF)
-OB_DEF (s390_vec_any_lt, s390_vec_any_lt_s8_a,s390_vec_any_lt_dbl,BT_FN_INT_OV4SI_OV4SI)
+OB_DEF (s390_vec_any_lt, s390_vec_any_lt_s8_a,s390_vec_any_lt_dbl,B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_any_lt_s8_a, vec_any_ltv16qi, 0, BT_OV_INT_V16QI_V16QI)
OB_DEF_VAR (s390_vec_any_lt_s8_b, vec_any_ltv16qi, 0, BT_OV_INT_V16QI_BV16QI)
OB_DEF_VAR (s390_vec_any_lt_b8_a, vec_any_ltuv16qi, 0, BT_OV_INT_BV16QI_BV16QI)
@@ -1325,7 +1318,7 @@ OB_DEF_VAR (s390_vec_any_lt_u64_a, vec_any_ltuv2di, 0,
OB_DEF_VAR (s390_vec_any_lt_u64_b, vec_any_ltuv2di, 0, BT_OV_INT_UV2DI_BV2DI)
OB_DEF_VAR (s390_vec_any_lt_dbl, vec_any_ltv2df, 0, BT_OV_INT_V2DF_V2DF)
-OB_DEF (s390_vec_cmpeq, s390_vec_cmpeq_s8, s390_vec_cmpeq_dbl, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_cmpeq, s390_vec_cmpeq_s8, s390_vec_cmpeq_dbl, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_cmpeq_s8, s390_vceqb, 0, BT_OV_BV16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vec_cmpeq_u8, s390_vceqb, 0, BT_OV_BV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_cmpeq_b8, s390_vceqb, 0, BT_OV_BV16QI_BV16QI_BV16QI)
@@ -1340,13 +1333,13 @@ OB_DEF_VAR (s390_vec_cmpeq_u64, s390_vceqg, 0,
OB_DEF_VAR (s390_vec_cmpeq_b64, s390_vceqg, 0, BT_OV_BV2DI_BV2DI_BV2DI)
OB_DEF_VAR (s390_vec_cmpeq_dbl, s390_vfcedb, 0, BT_OV_BV2DI_V2DF_V2DF)
-B_DEF (s390_vceqb, vec_cmpeqv16qi, 0, 0, BT_FN_V16QI_UV16QI_UV16QI)
-B_DEF (s390_vceqh, vec_cmpeqv8hi, 0, 0, BT_FN_V8HI_UV8HI_UV8HI)
-B_DEF (s390_vceqf, vec_cmpeqv4si, 0, 0, BT_FN_V4SI_UV4SI_UV4SI)
-B_DEF (s390_vceqg, vec_cmpeqv2di, 0, 0, BT_FN_V2DI_UV2DI_UV2DI)
-B_DEF (s390_vfcedb, vec_cmpeqv2df, 0, 0, BT_FN_V2DI_V2DF_V2DF)
+B_DEF (s390_vceqb, vec_cmpeqv16qi, 0, B_VX, 0, BT_FN_V16QI_UV16QI_UV16QI)
+B_DEF (s390_vceqh, vec_cmpeqv8hi, 0, B_VX, 0, BT_FN_V8HI_UV8HI_UV8HI)
+B_DEF (s390_vceqf, vec_cmpeqv4si, 0, B_VX, 0, BT_FN_V4SI_UV4SI_UV4SI)
+B_DEF (s390_vceqg, vec_cmpeqv2di, 0, B_VX, 0, BT_FN_V2DI_UV2DI_UV2DI)
+B_DEF (s390_vfcedb, vec_cmpeqv2df, 0, B_VX, 0, BT_FN_V2DI_V2DF_V2DF)
-OB_DEF (s390_vec_cmpge, s390_vec_cmpge_s8, s390_vec_cmpge_dbl, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_cmpge, s390_vec_cmpge_s8, s390_vec_cmpge_dbl, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_cmpge_s8, vec_cmpgev16qi, 0, BT_OV_BV16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vec_cmpge_u8, vec_cmpgeuv16qi, 0, BT_OV_BV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_cmpge_s16, vec_cmpgev8hi, 0, BT_OV_BV8HI_V8HI_V8HI)
@@ -1357,17 +1350,17 @@ OB_DEF_VAR (s390_vec_cmpge_s64, vec_cmpgev2di, 0,
OB_DEF_VAR (s390_vec_cmpge_u64, vec_cmpgeuv2di, 0, BT_OV_BV2DI_UV2DI_UV2DI)
OB_DEF_VAR (s390_vec_cmpge_dbl, s390_vfchedb, 0, BT_OV_BV2DI_V2DF_V2DF)
-B_DEF (vec_cmpgev16qi, vec_cmpgev16qi, 0, B_INT, BT_FN_V16QI_UV16QI_UV16QI)
-B_DEF (vec_cmpgeuv16qi, vec_cmpgeuv16qi, 0, B_INT, BT_FN_V16QI_UV16QI_UV16QI)
-B_DEF (vec_cmpgev8hi, vec_cmpgev8hi, 0, B_INT, BT_FN_V8HI_UV8HI_UV8HI)
-B_DEF (vec_cmpgeuv8hi, vec_cmpgeuv8hi, 0, B_INT, BT_FN_V8HI_UV8HI_UV8HI)
-B_DEF (vec_cmpgev4si, vec_cmpgev4si, 0, B_INT, BT_FN_V4SI_UV4SI_UV4SI)
-B_DEF (vec_cmpgeuv4si, vec_cmpgeuv4si, 0, B_INT, BT_FN_V4SI_UV4SI_UV4SI)
-B_DEF (vec_cmpgev2di, vec_cmpgev2di, 0, B_INT, BT_FN_V2DI_UV2DI_UV2DI)
-B_DEF (vec_cmpgeuv2di, vec_cmpgeuv2di, 0, B_INT, BT_FN_V2DI_UV2DI_UV2DI)
-B_DEF (s390_vfchedb, vec_cmpgev2df, 0, 0, BT_FN_V2DI_V2DF_V2DF)
-
-OB_DEF (s390_vec_cmpgt, s390_vec_cmpgt_s8, s390_vec_cmpgt_dbl, BT_FN_OV4SI_OV4SI_OV4SI)
+B_DEF (vec_cmpgev16qi, vec_cmpgev16qi, 0, B_VX | B_INT, 0, BT_FN_V16QI_UV16QI_UV16QI)
+B_DEF (vec_cmpgeuv16qi, vec_cmpgeuv16qi, 0, B_VX | B_INT, 0, BT_FN_V16QI_UV16QI_UV16QI)
+B_DEF (vec_cmpgev8hi, vec_cmpgev8hi, 0, B_VX | B_INT, 0, BT_FN_V8HI_UV8HI_UV8HI)
+B_DEF (vec_cmpgeuv8hi, vec_cmpgeuv8hi, 0, B_VX | B_INT, 0, BT_FN_V8HI_UV8HI_UV8HI)
+B_DEF (vec_cmpgev4si, vec_cmpgev4si, 0, B_VX | B_INT, 0, BT_FN_V4SI_UV4SI_UV4SI)
+B_DEF (vec_cmpgeuv4si, vec_cmpgeuv4si, 0, B_VX | B_INT, 0, BT_FN_V4SI_UV4SI_UV4SI)
+B_DEF (vec_cmpgev2di, vec_cmpgev2di, 0, B_VX | B_INT, 0, BT_FN_V2DI_UV2DI_UV2DI)
+B_DEF (vec_cmpgeuv2di, vec_cmpgeuv2di, 0, B_VX | B_INT, 0, BT_FN_V2DI_UV2DI_UV2DI)
+B_DEF (s390_vfchedb, vec_cmpgev2df, 0, B_VX, 0, BT_FN_V2DI_V2DF_V2DF)
+
+OB_DEF (s390_vec_cmpgt, s390_vec_cmpgt_s8, s390_vec_cmpgt_dbl, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_cmpgt_s8, s390_vchb, 0, BT_OV_BV16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vec_cmpgt_u8, s390_vchlb, 0, BT_OV_BV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_cmpgt_s16, s390_vchh, 0, BT_OV_BV8HI_V8HI_V8HI)
@@ -1378,17 +1371,17 @@ OB_DEF_VAR (s390_vec_cmpgt_s64, s390_vchg, 0,
OB_DEF_VAR (s390_vec_cmpgt_u64, s390_vchlg, 0, BT_OV_BV2DI_UV2DI_UV2DI)
OB_DEF_VAR (s390_vec_cmpgt_dbl, s390_vfchdb, 0, BT_OV_BV2DI_V2DF_V2DF)
-B_DEF (s390_vchb, vec_cmpgtv16qi, 0, 0, BT_FN_V16QI_V16QI_V16QI)
-B_DEF (s390_vchlb, vec_cmpgtuv16qi, 0, 0, BT_FN_V16QI_UV16QI_UV16QI)
-B_DEF (s390_vchh, vec_cmpgtv8hi, 0, 0, BT_FN_V8HI_V8HI_V8HI)
-B_DEF (s390_vchlh, vec_cmpgtuv8hi, 0, 0, BT_FN_V8HI_UV8HI_UV8HI)
-B_DEF (s390_vchf, vec_cmpgtv4si, 0, 0, BT_FN_V4SI_V4SI_V4SI)
-B_DEF (s390_vchlf, vec_cmpgtuv4si, 0, 0, BT_FN_V4SI_UV4SI_UV4SI)
-B_DEF (s390_vchg, vec_cmpgtv2di, 0, 0, BT_FN_V2DI_V2DI_V2DI)
-B_DEF (s390_vchlg, vec_cmpgtuv2di, 0, 0, BT_FN_V2DI_UV2DI_UV2DI)
-B_DEF (s390_vfchdb, vec_cmpgtv2df, 0, 0, BT_FN_V2DI_V2DF_V2DF)
-
-OB_DEF (s390_vec_cmple, s390_vec_cmple_s8, s390_vec_cmple_dbl, BT_FN_OV4SI_OV4SI_OV4SI)
+B_DEF (s390_vchb, vec_cmpgtv16qi, 0, B_VX, 0, BT_FN_V16QI_V16QI_V16QI)
+B_DEF (s390_vchlb, vec_cmpgtuv16qi, 0, B_VX, 0, BT_FN_V16QI_UV16QI_UV16QI)
+B_DEF (s390_vchh, vec_cmpgtv8hi, 0, B_VX, 0, BT_FN_V8HI_V8HI_V8HI)
+B_DEF (s390_vchlh, vec_cmpgtuv8hi, 0, B_VX, 0, BT_FN_V8HI_UV8HI_UV8HI)
+B_DEF (s390_vchf, vec_cmpgtv4si, 0, B_VX, 0, BT_FN_V4SI_V4SI_V4SI)
+B_DEF (s390_vchlf, vec_cmpgtuv4si, 0, B_VX, 0, BT_FN_V4SI_UV4SI_UV4SI)
+B_DEF (s390_vchg, vec_cmpgtv2di, 0, B_VX, 0, BT_FN_V2DI_V2DI_V2DI)
+B_DEF (s390_vchlg, vec_cmpgtuv2di, 0, B_VX, 0, BT_FN_V2DI_UV2DI_UV2DI)
+B_DEF (s390_vfchdb, vec_cmpgtv2df, 0, B_VX, 0, BT_FN_V2DI_V2DF_V2DF)
+
+OB_DEF (s390_vec_cmple, s390_vec_cmple_s8, s390_vec_cmple_dbl, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_cmple_s8, vec_cmplev16qi, 0, BT_OV_BV16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vec_cmple_u8, vec_cmpleuv16qi, 0, BT_OV_BV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_cmple_s16, vec_cmplev8hi, 0, BT_OV_BV8HI_V8HI_V8HI)
@@ -1399,17 +1392,17 @@ OB_DEF_VAR (s390_vec_cmple_s64, vec_cmplev2di, 0,
OB_DEF_VAR (s390_vec_cmple_u64, vec_cmpleuv2di, 0, BT_OV_BV2DI_UV2DI_UV2DI)
OB_DEF_VAR (s390_vec_cmple_dbl, vec_cmplev2df, 0, BT_OV_BV2DI_V2DF_V2DF)
-B_DEF (vec_cmplev16qi, vec_cmplev16qi, 0, B_INT, BT_FN_V16QI_UV16QI_UV16QI)
-B_DEF (vec_cmpleuv16qi, vec_cmpleuv16qi, 0, B_INT, BT_FN_V16QI_UV16QI_UV16QI)
-B_DEF (vec_cmplev8hi, vec_cmplev8hi, 0, B_INT, BT_FN_V8HI_UV8HI_UV8HI)
-B_DEF (vec_cmpleuv8hi, vec_cmpleuv8hi, 0, B_INT, BT_FN_V8HI_UV8HI_UV8HI)
-B_DEF (vec_cmplev4si, vec_cmplev4si, 0, B_INT, BT_FN_V4SI_UV4SI_UV4SI)
-B_DEF (vec_cmpleuv4si, vec_cmpleuv4si, 0, B_INT, BT_FN_V4SI_UV4SI_UV4SI)
-B_DEF (vec_cmplev2di, vec_cmplev2di, 0, B_INT, BT_FN_V2DI_UV2DI_UV2DI)
-B_DEF (vec_cmpleuv2di, vec_cmpleuv2di, 0, B_INT, BT_FN_V2DI_UV2DI_UV2DI)
-B_DEF (vec_cmplev2df, vec_cmplev2df, 0, B_INT, BT_FN_V2DI_V2DF_V2DF)
-
-OB_DEF (s390_vec_cmplt, s390_vec_cmplt_s8, s390_vec_cmplt_dbl, BT_FN_OV4SI_OV4SI_OV4SI)
+B_DEF (vec_cmplev16qi, vec_cmplev16qi, 0, B_VX | B_INT, 0, BT_FN_V16QI_UV16QI_UV16QI)
+B_DEF (vec_cmpleuv16qi, vec_cmpleuv16qi, 0, B_VX | B_INT, 0, BT_FN_V16QI_UV16QI_UV16QI)
+B_DEF (vec_cmplev8hi, vec_cmplev8hi, 0, B_VX | B_INT, 0, BT_FN_V8HI_UV8HI_UV8HI)
+B_DEF (vec_cmpleuv8hi, vec_cmpleuv8hi, 0, B_VX | B_INT, 0, BT_FN_V8HI_UV8HI_UV8HI)
+B_DEF (vec_cmplev4si, vec_cmplev4si, 0, B_VX | B_INT, 0, BT_FN_V4SI_UV4SI_UV4SI)
+B_DEF (vec_cmpleuv4si, vec_cmpleuv4si, 0, B_VX | B_INT, 0, BT_FN_V4SI_UV4SI_UV4SI)
+B_DEF (vec_cmplev2di, vec_cmplev2di, 0, B_VX | B_INT, 0, BT_FN_V2DI_UV2DI_UV2DI)
+B_DEF (vec_cmpleuv2di, vec_cmpleuv2di, 0, B_VX | B_INT, 0, BT_FN_V2DI_UV2DI_UV2DI)
+B_DEF (vec_cmplev2df, vec_cmplev2df, 0, B_VX | B_INT, 0, BT_FN_V2DI_V2DF_V2DF)
+
+OB_DEF (s390_vec_cmplt, s390_vec_cmplt_s8, s390_vec_cmplt_dbl, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_cmplt_s8, vec_cmpltv16qi, 0, BT_OV_BV16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vec_cmplt_u8, vec_cmpltuv16qi, 0, BT_OV_BV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_cmplt_s16, vec_cmpltv8hi, 0, BT_OV_BV8HI_V8HI_V8HI)
@@ -1420,17 +1413,17 @@ OB_DEF_VAR (s390_vec_cmplt_s64, vec_cmpltv2di, 0,
OB_DEF_VAR (s390_vec_cmplt_u64, vec_cmpltuv2di, 0, BT_OV_BV2DI_UV2DI_UV2DI)
OB_DEF_VAR (s390_vec_cmplt_dbl, vec_cmpltv2df, 0, BT_OV_BV2DI_V2DF_V2DF)
-B_DEF (vec_cmpltv16qi, vec_cmpltv16qi, 0, B_INT, BT_FN_V16QI_UV16QI_UV16QI)
-B_DEF (vec_cmpltuv16qi, vec_cmpltuv16qi, 0, B_INT, BT_FN_V16QI_UV16QI_UV16QI)
-B_DEF (vec_cmpltv8hi, vec_cmpltv8hi, 0, B_INT, BT_FN_V8HI_UV8HI_UV8HI)
-B_DEF (vec_cmpltuv8hi, vec_cmpltuv8hi, 0, B_INT, BT_FN_V8HI_UV8HI_UV8HI)
-B_DEF (vec_cmpltv4si, vec_cmpltv4si, 0, B_INT, BT_FN_V4SI_UV4SI_UV4SI)
-B_DEF (vec_cmpltuv4si, vec_cmpltuv4si, 0, B_INT, BT_FN_V4SI_UV4SI_UV4SI)
-B_DEF (vec_cmpltv2di, vec_cmpltv2di, 0, B_INT, BT_FN_V2DI_UV2DI_UV2DI)
-B_DEF (vec_cmpltuv2di, vec_cmpltuv2di, 0, B_INT, BT_FN_V2DI_UV2DI_UV2DI)
-B_DEF (vec_cmpltv2df, vec_cmpltv2df, 0, B_INT, BT_FN_V2DI_V2DF_V2DF)
-
-OB_DEF (s390_vec_cntlz, s390_vec_cntlz_s8, s390_vec_cntlz_u64, BT_FN_OV4SI_OV4SI)
+B_DEF (vec_cmpltv16qi, vec_cmpltv16qi, 0, B_VX | B_INT, 0, BT_FN_V16QI_UV16QI_UV16QI)
+B_DEF (vec_cmpltuv16qi, vec_cmpltuv16qi, 0, B_VX | B_INT, 0, BT_FN_V16QI_UV16QI_UV16QI)
+B_DEF (vec_cmpltv8hi, vec_cmpltv8hi, 0, B_VX | B_INT, 0, BT_FN_V8HI_UV8HI_UV8HI)
+B_DEF (vec_cmpltuv8hi, vec_cmpltuv8hi, 0, B_VX | B_INT, 0, BT_FN_V8HI_UV8HI_UV8HI)
+B_DEF (vec_cmpltv4si, vec_cmpltv4si, 0, B_VX | B_INT, 0, BT_FN_V4SI_UV4SI_UV4SI)
+B_DEF (vec_cmpltuv4si, vec_cmpltuv4si, 0, B_VX | B_INT, 0, BT_FN_V4SI_UV4SI_UV4SI)
+B_DEF (vec_cmpltv2di, vec_cmpltv2di, 0, B_VX | B_INT, 0, BT_FN_V2DI_UV2DI_UV2DI)
+B_DEF (vec_cmpltuv2di, vec_cmpltuv2di, 0, B_VX | B_INT, 0, BT_FN_V2DI_UV2DI_UV2DI)
+B_DEF (vec_cmpltv2df, vec_cmpltv2df, 0, B_VX | B_INT, 0, BT_FN_V2DI_V2DF_V2DF)
+
+OB_DEF (s390_vec_cntlz, s390_vec_cntlz_s8, s390_vec_cntlz_u64, B_VX, BT_FN_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_cntlz_s8, s390_vclzb, 0, BT_OV_UV16QI_V16QI)
OB_DEF_VAR (s390_vec_cntlz_u8, s390_vclzb, 0, BT_OV_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_cntlz_s16, s390_vclzh, 0, BT_OV_UV8HI_V8HI)
@@ -1440,12 +1433,12 @@ OB_DEF_VAR (s390_vec_cntlz_u32, s390_vclzf, 0,
OB_DEF_VAR (s390_vec_cntlz_s64, s390_vclzg, 0, BT_OV_UV2DI_V2DI)
OB_DEF_VAR (s390_vec_cntlz_u64, s390_vclzg, 0, BT_OV_UV2DI_UV2DI)
-B_DEF (s390_vclzb, clzv16qi2, 0, 0, BT_FN_UV16QI_UV16QI)
-B_DEF (s390_vclzh, clzv8hi2, 0, 0, BT_FN_UV8HI_UV8HI)
-B_DEF (s390_vclzf, clzv4si2, 0, 0, BT_FN_UV4SI_UV4SI)
-B_DEF (s390_vclzg, clzv2di2, 0, 0, BT_FN_UV2DI_UV2DI)
+B_DEF (s390_vclzb, clzv16qi2, 0, B_VX, 0, BT_FN_UV16QI_UV16QI)
+B_DEF (s390_vclzh, clzv8hi2, 0, B_VX, 0, BT_FN_UV8HI_UV8HI)
+B_DEF (s390_vclzf, clzv4si2, 0, B_VX, 0, BT_FN_UV4SI_UV4SI)
+B_DEF (s390_vclzg, clzv2di2, 0, B_VX, 0, BT_FN_UV2DI_UV2DI)
-OB_DEF (s390_vec_cnttz, s390_vec_cnttz_s8, s390_vec_cnttz_u64, BT_FN_OV4SI_OV4SI)
+OB_DEF (s390_vec_cnttz, s390_vec_cnttz_s8, s390_vec_cnttz_u64, B_VX, BT_FN_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_cnttz_s8, s390_vctzb, 0, BT_OV_UV16QI_V16QI)
OB_DEF_VAR (s390_vec_cnttz_u8, s390_vctzb, 0, BT_OV_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_cnttz_s16, s390_vctzh, 0, BT_OV_UV8HI_V8HI)
@@ -1455,12 +1448,12 @@ OB_DEF_VAR (s390_vec_cnttz_u32, s390_vctzf, 0,
OB_DEF_VAR (s390_vec_cnttz_s64, s390_vctzg, 0, BT_OV_UV2DI_V2DI)
OB_DEF_VAR (s390_vec_cnttz_u64, s390_vctzg, 0, BT_OV_UV2DI_UV2DI)
-B_DEF (s390_vctzb, ctzv16qi2, 0, 0, BT_FN_UV16QI_UV16QI)
-B_DEF (s390_vctzh, ctzv8hi2, 0, 0, BT_FN_UV8HI_UV8HI)
-B_DEF (s390_vctzf, ctzv4si2, 0, 0, BT_FN_UV4SI_UV4SI)
-B_DEF (s390_vctzg, ctzv2di2, 0, 0, BT_FN_UV2DI_UV2DI)
+B_DEF (s390_vctzb, ctzv16qi2, 0, B_VX, 0, BT_FN_UV16QI_UV16QI)
+B_DEF (s390_vctzh, ctzv8hi2, 0, B_VX, 0, BT_FN_UV8HI_UV8HI)
+B_DEF (s390_vctzf, ctzv4si2, 0, B_VX, 0, BT_FN_UV4SI_UV4SI)
+B_DEF (s390_vctzg, ctzv2di2, 0, B_VX, 0, BT_FN_UV2DI_UV2DI)
-OB_DEF (s390_vec_xor, s390_vec_xor_b8, s390_vec_xor_dbl_c, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_xor, s390_vec_xor_b8, s390_vec_xor_dbl_c, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_xor_b8, s390_vx, 0, BT_OV_BV16QI_BV16QI_BV16QI)
OB_DEF_VAR (s390_vec_xor_s8_a, s390_vx, 0, BT_OV_V16QI_BV16QI_V16QI)
OB_DEF_VAR (s390_vec_xor_s8_b, s390_vx, 0, BT_OV_V16QI_V16QI_V16QI)
@@ -1493,42 +1486,42 @@ OB_DEF_VAR (s390_vec_xor_dbl_a, s390_vx, 0,
OB_DEF_VAR (s390_vec_xor_dbl_b, s390_vx, 0, BT_OV_V2DF_V2DF_V2DF)
OB_DEF_VAR (s390_vec_xor_dbl_c, s390_vx, 0, BT_OV_V2DF_V2DF_BV2DI)
-B_DEF (s390_vx, xorv16qi3, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vx, xorv16qi3, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-OB_DEF (s390_vec_gfmsum, s390_vec_gfmsum_u8, s390_vec_gfmsum_u32,BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_gfmsum, s390_vec_gfmsum_u8, s390_vec_gfmsum_u32,B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_gfmsum_u8, s390_vgfmb, 0, BT_OV_UV8HI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_gfmsum_u16, s390_vgfmh, 0, BT_OV_UV4SI_UV8HI_UV8HI)
OB_DEF_VAR (s390_vec_gfmsum_u32, s390_vgfmf, 0, BT_OV_UV2DI_UV4SI_UV4SI)
-B_DEF (s390_vgfmb, vec_gfmsumv16qi, 0, 0, BT_FN_UV8HI_UV16QI_UV16QI)
-B_DEF (s390_vgfmh, vec_gfmsumv8hi, 0, 0, BT_FN_UV4SI_UV8HI_UV8HI)
-B_DEF (s390_vgfmf, vec_gfmsumv4si, 0, 0, BT_FN_UV2DI_UV4SI_UV4SI)
-B_DEF (s390_vgfmg, vec_gfmsum_128, 0, 0, BT_FN_UV16QI_UV2DI_UV2DI)
+B_DEF (s390_vgfmb, vec_gfmsumv16qi, 0, B_VX, 0, BT_FN_UV8HI_UV16QI_UV16QI)
+B_DEF (s390_vgfmh, vec_gfmsumv8hi, 0, B_VX, 0, BT_FN_UV4SI_UV8HI_UV8HI)
+B_DEF (s390_vgfmf, vec_gfmsumv4si, 0, B_VX, 0, BT_FN_UV2DI_UV4SI_UV4SI)
+B_DEF (s390_vgfmg, vec_gfmsum_128, 0, B_VX, 0, BT_FN_UV16QI_UV2DI_UV2DI)
-OB_DEF (s390_vec_gfmsum_accum, s390_vec_gfmsum_accum_u8,s390_vec_gfmsum_accum_u32,BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_gfmsum_accum, s390_vec_gfmsum_accum_u8,s390_vec_gfmsum_accum_u32,B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_gfmsum_accum_u8, s390_vgfmab, 0, BT_OV_UV8HI_UV16QI_UV16QI_UV8HI)
OB_DEF_VAR (s390_vec_gfmsum_accum_u16, s390_vgfmah, 0, BT_OV_UV4SI_UV8HI_UV8HI_UV4SI)
OB_DEF_VAR (s390_vec_gfmsum_accum_u32, s390_vgfmaf, 0, BT_OV_UV2DI_UV4SI_UV4SI_UV2DI)
-B_DEF (s390_vgfmab, vec_gfmsum_accumv16qi,0, 0, BT_FN_UV8HI_UV16QI_UV16QI_UV8HI)
-B_DEF (s390_vgfmah, vec_gfmsum_accumv8hi,0, 0, BT_FN_UV4SI_UV8HI_UV8HI_UV4SI)
-B_DEF (s390_vgfmaf, vec_gfmsum_accumv4si,0, 0, BT_FN_UV2DI_UV4SI_UV4SI_UV2DI)
-B_DEF (s390_vgfmag, vec_gfmsum_accum_128,0, 0, BT_FN_UV16QI_UV2DI_UV2DI_UV16QI)
+B_DEF (s390_vgfmab, vec_gfmsum_accumv16qi,0, B_VX, 0, BT_FN_UV8HI_UV16QI_UV16QI_UV8HI)
+B_DEF (s390_vgfmah, vec_gfmsum_accumv8hi,0, B_VX, 0, BT_FN_UV4SI_UV8HI_UV8HI_UV4SI)
+B_DEF (s390_vgfmaf, vec_gfmsum_accumv4si,0, B_VX, 0, BT_FN_UV2DI_UV4SI_UV4SI_UV2DI)
+B_DEF (s390_vgfmag, vec_gfmsum_accum_128,0, B_VX, 0, BT_FN_UV16QI_UV2DI_UV2DI_UV16QI)
-OB_DEF (s390_vec_abs, s390_vec_abs_s8, s390_vec_abs_dbl, BT_FN_OV4SI_OV4SI)
+OB_DEF (s390_vec_abs, s390_vec_abs_s8, s390_vec_abs_dbl, B_VX, BT_FN_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_abs_s8, s390_vlpb, 0, BT_OV_V16QI_V16QI)
OB_DEF_VAR (s390_vec_abs_s16, s390_vlph, 0, BT_OV_V8HI_V8HI)
OB_DEF_VAR (s390_vec_abs_s32, s390_vlpf, 0, BT_OV_V4SI_V4SI)
OB_DEF_VAR (s390_vec_abs_s64, s390_vlpg, 0, BT_OV_V2DI_V2DI)
OB_DEF_VAR (s390_vec_abs_dbl, s390_vflpdb, 0, BT_OV_V2DF_V2DF)
-B_DEF (s390_vlpb, absv16qi2, 0, 0, BT_FN_V16QI_V16QI)
-B_DEF (s390_vlph, absv8hi2, 0, 0, BT_FN_V8HI_V8HI)
-B_DEF (s390_vlpf, absv4si2, 0, 0, BT_FN_V4SI_V4SI)
-B_DEF (s390_vlpg, absv2di2, 0, 0, BT_FN_V2DI_V2DI)
-B_DEF (s390_vflpdb, absv2df2, 0, 0, BT_FN_V2DF_V2DF)
+B_DEF (s390_vlpb, absv16qi2, 0, B_VX, 0, BT_FN_V16QI_V16QI)
+B_DEF (s390_vlph, absv8hi2, 0, B_VX, 0, BT_FN_V8HI_V8HI)
+B_DEF (s390_vlpf, absv4si2, 0, B_VX, 0, BT_FN_V4SI_V4SI)
+B_DEF (s390_vlpg, absv2di2, 0, B_VX, 0, BT_FN_V2DI_V2DI)
+B_DEF (s390_vflpdb, absv2df2, 0, B_VX, 0, BT_FN_V2DF_V2DF)
-OB_DEF (s390_vec_max, s390_vec_max_s8_a, s390_vec_max_dbl, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_max, s390_vec_max_s8_a, s390_vec_max_dbl, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_max_s8_a, s390_vmxb, 0, BT_OV_V16QI_BV16QI_V16QI)
OB_DEF_VAR (s390_vec_max_s8_b, s390_vmxb, 0, BT_OV_V16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vec_max_s8_c, s390_vmxb, 0, BT_OV_V16QI_V16QI_BV16QI)
@@ -1555,17 +1548,17 @@ OB_DEF_VAR (s390_vec_max_u64_b, s390_vmxlg, 0,
OB_DEF_VAR (s390_vec_max_u64_c, s390_vmxlg, 0, BT_OV_UV2DI_UV2DI_BV2DI)
OB_DEF_VAR (s390_vec_max_dbl, s390_vec_max_dbl, 0, BT_OV_V2DF_V2DF_V2DF)
-B_DEF (s390_vmxb, smaxv16qi3, 0, 0, BT_FN_V16QI_BV16QI_V16QI)
-B_DEF (s390_vmxlb, umaxv16qi3, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vmxh, smaxv8hi3, 0, 0, BT_FN_V8HI_BV8HI_V8HI)
-B_DEF (s390_vmxlh, umaxv8hi3, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI)
-B_DEF (s390_vmxf, smaxv4si3, 0, 0, BT_FN_V4SI_BV4SI_V4SI)
-B_DEF (s390_vmxlf, umaxv4si3, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI)
-B_DEF (s390_vmxg, smaxv2di3, 0, 0, BT_FN_V2DI_BV2DI_V2DI)
-B_DEF (s390_vmxlg, umaxv2di3, 0, 0, BT_FN_UV2DI_UV2DI_UV2DI)
-B_DEF (s390_vec_max_dbl, smaxv2df3, 0, B_INT, BT_FN_V2DF_V2DF_V2DF)
-
-OB_DEF (s390_vec_min, s390_vec_min_s8_a, s390_vec_min_dbl, BT_FN_OV4SI_OV4SI_OV4SI)
+B_DEF (s390_vmxb, smaxv16qi3, 0, B_VX, 0, BT_FN_V16QI_BV16QI_V16QI)
+B_DEF (s390_vmxlb, umaxv16qi3, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vmxh, smaxv8hi3, 0, B_VX, 0, BT_FN_V8HI_BV8HI_V8HI)
+B_DEF (s390_vmxlh, umaxv8hi3, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI)
+B_DEF (s390_vmxf, smaxv4si3, 0, B_VX, 0, BT_FN_V4SI_BV4SI_V4SI)
+B_DEF (s390_vmxlf, umaxv4si3, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI)
+B_DEF (s390_vmxg, smaxv2di3, 0, B_VX, 0, BT_FN_V2DI_BV2DI_V2DI)
+B_DEF (s390_vmxlg, umaxv2di3, 0, B_VX, 0, BT_FN_UV2DI_UV2DI_UV2DI)
+B_DEF (s390_vec_max_dbl, smaxv2df3, 0, B_VX | B_INT, 0, BT_FN_V2DF_V2DF_V2DF)
+
+OB_DEF (s390_vec_min, s390_vec_min_s8_a, s390_vec_min_dbl, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_min_s8_a, s390_vmnb, 0, BT_OV_V16QI_BV16QI_V16QI)
OB_DEF_VAR (s390_vec_min_s8_b, s390_vmnb, 0, BT_OV_V16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vec_min_s8_c, s390_vmnb, 0, BT_OV_V16QI_V16QI_BV16QI)
@@ -1592,17 +1585,17 @@ OB_DEF_VAR (s390_vec_min_u64_b, s390_vmnlg, 0,
OB_DEF_VAR (s390_vec_min_u64_c, s390_vmnlg, 0, BT_OV_UV2DI_UV2DI_BV2DI)
OB_DEF_VAR (s390_vec_min_dbl, s390_vec_min_dbl, 0, BT_OV_V2DF_V2DF_V2DF)
-B_DEF (s390_vmnb, sminv16qi3, 0, 0, BT_FN_V16QI_BV16QI_V16QI)
-B_DEF (s390_vmnlb, uminv16qi3, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vmnh, sminv8hi3, 0, 0, BT_FN_V8HI_BV8HI_V8HI)
-B_DEF (s390_vmnlh, uminv8hi3, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI)
-B_DEF (s390_vmnf, sminv4si3, 0, 0, BT_FN_V4SI_BV4SI_V4SI)
-B_DEF (s390_vmnlf, uminv4si3, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI)
-B_DEF (s390_vmng, sminv2di3, 0, 0, BT_FN_V2DI_BV2DI_V2DI)
-B_DEF (s390_vmnlg, uminv2di3, 0, 0, BT_FN_UV2DI_UV2DI_UV2DI)
-B_DEF (s390_vec_min_dbl, sminv2df3, 0, B_INT, BT_FN_V2DF_V2DF_V2DF)
-
-OB_DEF (s390_vec_mladd, s390_vec_mladd_u8, s390_vec_mladd_s32_c,BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
+B_DEF (s390_vmnb, sminv16qi3, 0, B_VX, 0, BT_FN_V16QI_BV16QI_V16QI)
+B_DEF (s390_vmnlb, uminv16qi3, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vmnh, sminv8hi3, 0, B_VX, 0, BT_FN_V8HI_BV8HI_V8HI)
+B_DEF (s390_vmnlh, uminv8hi3, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI)
+B_DEF (s390_vmnf, sminv4si3, 0, B_VX, 0, BT_FN_V4SI_BV4SI_V4SI)
+B_DEF (s390_vmnlf, uminv4si3, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI)
+B_DEF (s390_vmng, sminv2di3, 0, B_VX, 0, BT_FN_V2DI_BV2DI_V2DI)
+B_DEF (s390_vmnlg, uminv2di3, 0, B_VX, 0, BT_FN_UV2DI_UV2DI_UV2DI)
+B_DEF (s390_vec_min_dbl, sminv2df3, 0, B_VX | B_INT, 0, BT_FN_V2DF_V2DF_V2DF)
+
+OB_DEF (s390_vec_mladd, s390_vec_mladd_u8, s390_vec_mladd_s32_c,B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_mladd_u8, s390_vmalb, 0, BT_OV_UV16QI_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_mladd_s8_a, s390_vmalb, 0, BT_OV_V16QI_UV16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vec_mladd_s8_b, s390_vmalb, 0, BT_OV_V16QI_V16QI_UV16QI_UV16QI)
@@ -1616,11 +1609,11 @@ OB_DEF_VAR (s390_vec_mladd_s32_a, s390_vmalf, 0,
OB_DEF_VAR (s390_vec_mladd_s32_b, s390_vmalf, 0, BT_OV_V4SI_V4SI_UV4SI_UV4SI)
OB_DEF_VAR (s390_vec_mladd_s32_c, s390_vmalf, 0, BT_OV_V4SI_V4SI_V4SI_V4SI)
-B_DEF (s390_vmalb, vec_vmalv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vmalhw, vec_vmalv8hi, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI_UV8HI)
-B_DEF (s390_vmalf, vec_vmalv4si, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI_UV4SI)
+B_DEF (s390_vmalb, vec_vmalv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vmalhw, vec_vmalv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI_UV8HI)
+B_DEF (s390_vmalf, vec_vmalv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI_UV4SI)
-OB_DEF (s390_vec_mhadd, s390_vec_mhadd_u8, s390_vec_mhadd_s32, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_mhadd, s390_vec_mhadd_u8, s390_vec_mhadd_s32, B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_mhadd_u8, s390_vmalhb, 0, BT_OV_UV16QI_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_mhadd_s8, s390_vmahb, 0, BT_OV_V16QI_V16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vec_mhadd_u16, s390_vmalhh, 0, BT_OV_UV8HI_UV8HI_UV8HI_UV8HI)
@@ -1628,14 +1621,14 @@ OB_DEF_VAR (s390_vec_mhadd_s16, s390_vmahh, 0,
OB_DEF_VAR (s390_vec_mhadd_u32, s390_vmalhf, 0, BT_OV_UV4SI_UV4SI_UV4SI_UV4SI)
OB_DEF_VAR (s390_vec_mhadd_s32, s390_vmahf, 0, BT_OV_V4SI_V4SI_V4SI_V4SI)
-B_DEF (s390_vmalhb, vec_vmalhv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vmahb, vec_vmahv16qi, 0, 0, BT_FN_V16QI_V16QI_V16QI_V16QI)
-B_DEF (s390_vmalhh, vec_vmalhv8hi, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI_UV8HI)
-B_DEF (s390_vmahh, vec_vmahv8hi, 0, 0, BT_FN_V8HI_V8HI_V8HI_V8HI)
-B_DEF (s390_vmalhf, vec_vmalhv4si, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI_UV4SI)
-B_DEF (s390_vmahf, vec_vmahv4si, 0, 0, BT_FN_V4SI_V4SI_V4SI_V4SI)
+B_DEF (s390_vmalhb, vec_vmalhv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vmahb, vec_vmahv16qi, 0, B_VX, 0, BT_FN_V16QI_V16QI_V16QI_V16QI)
+B_DEF (s390_vmalhh, vec_vmalhv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI_UV8HI)
+B_DEF (s390_vmahh, vec_vmahv8hi, 0, B_VX, 0, BT_FN_V8HI_V8HI_V8HI_V8HI)
+B_DEF (s390_vmalhf, vec_vmalhv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI_UV4SI)
+B_DEF (s390_vmahf, vec_vmahv4si, 0, B_VX, 0, BT_FN_V4SI_V4SI_V4SI_V4SI)
-OB_DEF (s390_vec_meadd, s390_vec_meadd_u8, s390_vec_meadd_s32, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_meadd, s390_vec_meadd_u8, s390_vec_meadd_s32, B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_meadd_u8, s390_vmaleb, 0, BT_OV_UV8HI_UV16QI_UV16QI_UV8HI)
OB_DEF_VAR (s390_vec_meadd_s8, s390_vmaeb, 0, BT_OV_V8HI_V16QI_V16QI_V8HI)
OB_DEF_VAR (s390_vec_meadd_u16, s390_vmaleh, 0, BT_OV_UV4SI_UV8HI_UV8HI_UV4SI)
@@ -1643,14 +1636,14 @@ OB_DEF_VAR (s390_vec_meadd_s16, s390_vmaeh, 0,
OB_DEF_VAR (s390_vec_meadd_u32, s390_vmalef, 0, BT_OV_UV2DI_UV4SI_UV4SI_UV2DI)
OB_DEF_VAR (s390_vec_meadd_s32, s390_vmaef, 0, BT_OV_V2DI_V4SI_V4SI_V2DI)
-B_DEF (s390_vmaleb, vec_vmalev16qi, 0, 0, BT_FN_UV8HI_UV16QI_UV16QI_UV8HI)
-B_DEF (s390_vmaeb, vec_vmaev16qi, 0, 0, BT_FN_V8HI_V16QI_V16QI_V8HI)
-B_DEF (s390_vmaleh, vec_vmalev8hi, 0, 0, BT_FN_UV4SI_UV8HI_UV8HI_UV4SI)
-B_DEF (s390_vmaeh, vec_vmaev8hi, 0, 0, BT_FN_V4SI_V8HI_V8HI_V4SI)
-B_DEF (s390_vmalef, vec_vmalev4si, 0, 0, BT_FN_UV2DI_UV4SI_UV4SI_UV2DI)
-B_DEF (s390_vmaef, vec_vmaev4si, 0, 0, BT_FN_V2DI_V4SI_V4SI_V2DI)
+B_DEF (s390_vmaleb, vec_vmalev16qi, 0, B_VX, 0, BT_FN_UV8HI_UV16QI_UV16QI_UV8HI)
+B_DEF (s390_vmaeb, vec_vmaev16qi, 0, B_VX, 0, BT_FN_V8HI_V16QI_V16QI_V8HI)
+B_DEF (s390_vmaleh, vec_vmalev8hi, 0, B_VX, 0, BT_FN_UV4SI_UV8HI_UV8HI_UV4SI)
+B_DEF (s390_vmaeh, vec_vmaev8hi, 0, B_VX, 0, BT_FN_V4SI_V8HI_V8HI_V4SI)
+B_DEF (s390_vmalef, vec_vmalev4si, 0, B_VX, 0, BT_FN_UV2DI_UV4SI_UV4SI_UV2DI)
+B_DEF (s390_vmaef, vec_vmaev4si, 0, B_VX, 0, BT_FN_V2DI_V4SI_V4SI_V2DI)
-OB_DEF (s390_vec_moadd, s390_vec_moadd_u8, s390_vec_moadd_s32, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_moadd, s390_vec_moadd_u8, s390_vec_moadd_s32, B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_moadd_u8, s390_vmalob, 0, BT_OV_UV8HI_UV16QI_UV16QI_UV8HI)
OB_DEF_VAR (s390_vec_moadd_s8, s390_vmaob, 0, BT_OV_V8HI_V16QI_V16QI_V8HI)
OB_DEF_VAR (s390_vec_moadd_u16, s390_vmaloh, 0, BT_OV_UV4SI_UV8HI_UV8HI_UV4SI)
@@ -1658,14 +1651,14 @@ OB_DEF_VAR (s390_vec_moadd_s16, s390_vmaoh, 0,
OB_DEF_VAR (s390_vec_moadd_u32, s390_vmalof, 0, BT_OV_UV2DI_UV4SI_UV4SI_UV2DI)
OB_DEF_VAR (s390_vec_moadd_s32, s390_vmaof, 0, BT_OV_V2DI_V4SI_V4SI_V2DI)
-B_DEF (s390_vmalob, vec_vmalov16qi, 0, 0, BT_FN_UV8HI_UV16QI_UV16QI_UV8HI)
-B_DEF (s390_vmaob, vec_vmaov16qi, 0, 0, BT_FN_V8HI_V16QI_V16QI_V8HI)
-B_DEF (s390_vmaloh, vec_vmalov8hi, 0, 0, BT_FN_UV4SI_UV8HI_UV8HI_UV4SI)
-B_DEF (s390_vmaoh, vec_vmaov8hi, 0, 0, BT_FN_V4SI_V8HI_V8HI_V4SI)
-B_DEF (s390_vmalof, vec_vmalov4si, 0, 0, BT_FN_UV2DI_UV4SI_UV4SI_UV2DI)
-B_DEF (s390_vmaof, vec_vmaov4si, 0, 0, BT_FN_V2DI_V4SI_V4SI_V2DI)
+B_DEF (s390_vmalob, vec_vmalov16qi, 0, B_VX, 0, BT_FN_UV8HI_UV16QI_UV16QI_UV8HI)
+B_DEF (s390_vmaob, vec_vmaov16qi, 0, B_VX, 0, BT_FN_V8HI_V16QI_V16QI_V8HI)
+B_DEF (s390_vmaloh, vec_vmalov8hi, 0, B_VX, 0, BT_FN_UV4SI_UV8HI_UV8HI_UV4SI)
+B_DEF (s390_vmaoh, vec_vmaov8hi, 0, B_VX, 0, BT_FN_V4SI_V8HI_V8HI_V4SI)
+B_DEF (s390_vmalof, vec_vmalov4si, 0, B_VX, 0, BT_FN_UV2DI_UV4SI_UV4SI_UV2DI)
+B_DEF (s390_vmaof, vec_vmaov4si, 0, B_VX, 0, BT_FN_V2DI_V4SI_V4SI_V2DI)
-OB_DEF (s390_vec_mulh, s390_vec_mulh_u8, s390_vec_mulh_s32, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_mulh, s390_vec_mulh_u8, s390_vec_mulh_s32, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_mulh_u8, s390_vmlhb, 0, BT_OV_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_mulh_s8, s390_vmhb, 0, BT_OV_V16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vec_mulh_u16, s390_vmlhh, 0, BT_OV_UV8HI_UV8HI_UV8HI)
@@ -1673,14 +1666,14 @@ OB_DEF_VAR (s390_vec_mulh_s16, s390_vmhh, 0,
OB_DEF_VAR (s390_vec_mulh_u32, s390_vmlhf, 0, BT_OV_UV4SI_UV4SI_UV4SI)
OB_DEF_VAR (s390_vec_mulh_s32, s390_vmhf, 0, BT_OV_V4SI_V4SI_V4SI)
-B_DEF (s390_vmlhb, vec_umulhv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vmhb, vec_smulhv16qi, 0, 0, BT_FN_V16QI_V16QI_V16QI)
-B_DEF (s390_vmlhh, vec_umulhv8hi, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI)
-B_DEF (s390_vmhh, vec_smulhv8hi, 0, 0, BT_FN_V8HI_V8HI_V8HI)
-B_DEF (s390_vmlhf, vec_umulhv4si, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI)
-B_DEF (s390_vmhf, vec_smulhv4si, 0, 0, BT_FN_V4SI_V4SI_V4SI)
+B_DEF (s390_vmlhb, vec_umulhv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vmhb, vec_smulhv16qi, 0, B_VX, 0, BT_FN_V16QI_V16QI_V16QI)
+B_DEF (s390_vmlhh, vec_umulhv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI)
+B_DEF (s390_vmhh, vec_smulhv8hi, 0, B_VX, 0, BT_FN_V8HI_V8HI_V8HI)
+B_DEF (s390_vmlhf, vec_umulhv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI)
+B_DEF (s390_vmhf, vec_smulhv4si, 0, B_VX, 0, BT_FN_V4SI_V4SI_V4SI)
-OB_DEF (s390_vec_mule, s390_vec_mule_u8, s390_vec_mule_s32, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_mule, s390_vec_mule_u8, s390_vec_mule_s32, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_mule_u8, s390_vmleb, 0, BT_OV_UV8HI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_mule_s8, s390_vmeb, 0, BT_OV_V8HI_V16QI_V16QI)
OB_DEF_VAR (s390_vec_mule_u16, s390_vmleh, 0, BT_OV_UV4SI_UV8HI_UV8HI)
@@ -1688,14 +1681,14 @@ OB_DEF_VAR (s390_vec_mule_s15, s390_vmeh, 0,
OB_DEF_VAR (s390_vec_mule_u32, s390_vmlef, 0, BT_OV_UV2DI_UV4SI_UV4SI)
OB_DEF_VAR (s390_vec_mule_s32, s390_vmef, 0, BT_OV_V2DI_V4SI_V4SI)
-B_DEF (s390_vmleb, vec_widen_umult_even_v16qi,0, 0, BT_FN_UV8HI_UV16QI_UV16QI)
-B_DEF (s390_vmeb, vec_widen_smult_even_v16qi,0, 0, BT_FN_V8HI_V16QI_V16QI)
-B_DEF (s390_vmleh, vec_widen_umult_even_v8hi,0, 0, BT_FN_UV4SI_UV8HI_UV8HI)
-B_DEF (s390_vmeh, vec_widen_smult_even_v8hi,0, 0, BT_FN_V4SI_V8HI_V8HI)
-B_DEF (s390_vmlef, vec_widen_umult_even_v4si,0, 0, BT_FN_UV2DI_UV4SI_UV4SI)
-B_DEF (s390_vmef, vec_widen_smult_even_v4si,0, 0, BT_FN_V2DI_V4SI_V4SI)
+B_DEF (s390_vmleb, vec_widen_umult_even_v16qi,0, B_VX, 0, BT_FN_UV8HI_UV16QI_UV16QI)
+B_DEF (s390_vmeb, vec_widen_smult_even_v16qi,0, B_VX, 0, BT_FN_V8HI_V16QI_V16QI)
+B_DEF (s390_vmleh, vec_widen_umult_even_v8hi,0, B_VX, 0, BT_FN_UV4SI_UV8HI_UV8HI)
+B_DEF (s390_vmeh, vec_widen_smult_even_v8hi,0, B_VX, 0, BT_FN_V4SI_V8HI_V8HI)
+B_DEF (s390_vmlef, vec_widen_umult_even_v4si,0, B_VX, 0, BT_FN_UV2DI_UV4SI_UV4SI)
+B_DEF (s390_vmef, vec_widen_smult_even_v4si,0, B_VX, 0, BT_FN_V2DI_V4SI_V4SI)
-OB_DEF (s390_vec_mulo, s390_vec_mulo_u8, s390_vec_mulo_s32, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_mulo, s390_vec_mulo_u8, s390_vec_mulo_s32, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_mulo_u8, s390_vmlob, 0, BT_OV_UV8HI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_mulo_s8, s390_vmob, 0, BT_OV_V8HI_V16QI_V16QI)
OB_DEF_VAR (s390_vec_mulo_u16, s390_vmloh, 0, BT_OV_UV4SI_UV8HI_UV8HI)
@@ -1703,14 +1696,14 @@ OB_DEF_VAR (s390_vec_mulo_s16, s390_vmoh, 0,
OB_DEF_VAR (s390_vec_mulo_u32, s390_vmlof, 0, BT_OV_UV2DI_UV4SI_UV4SI)
OB_DEF_VAR (s390_vec_mulo_s32, s390_vmof, 0, BT_OV_V2DI_V4SI_V4SI)
-B_DEF (s390_vmlob, vec_widen_umult_odd_v16qi,0, 0, BT_FN_UV8HI_UV16QI_UV16QI)
-B_DEF (s390_vmob, vec_widen_smult_odd_v16qi,0, 0, BT_FN_V8HI_V16QI_V16QI)
-B_DEF (s390_vmloh, vec_widen_umult_odd_v8hi,0, 0, BT_FN_UV4SI_UV8HI_UV8HI)
-B_DEF (s390_vmoh, vec_widen_smult_odd_v8hi,0, 0, BT_FN_V4SI_V8HI_V8HI)
-B_DEF (s390_vmlof, vec_widen_umult_odd_v4si,0, 0, BT_FN_UV2DI_UV4SI_UV4SI)
-B_DEF (s390_vmof, vec_widen_smult_odd_v4si,0, 0, BT_FN_V2DI_V4SI_V4SI)
+B_DEF (s390_vmlob, vec_widen_umult_odd_v16qi,0, B_VX, 0, BT_FN_UV8HI_UV16QI_UV16QI)
+B_DEF (s390_vmob, vec_widen_smult_odd_v16qi,0, B_VX, 0, BT_FN_V8HI_V16QI_V16QI)
+B_DEF (s390_vmloh, vec_widen_umult_odd_v8hi,0, B_VX, 0, BT_FN_UV4SI_UV8HI_UV8HI)
+B_DEF (s390_vmoh, vec_widen_smult_odd_v8hi,0, B_VX, 0, BT_FN_V4SI_V8HI_V8HI)
+B_DEF (s390_vmlof, vec_widen_umult_odd_v4si,0, B_VX, 0, BT_FN_UV2DI_UV4SI_UV4SI)
+B_DEF (s390_vmof, vec_widen_smult_odd_v4si,0, B_VX, 0, BT_FN_V2DI_V4SI_V4SI)
-OB_DEF (s390_vec_nor, s390_vec_nor_b8, s390_vec_nor_dbl_c, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_nor, s390_vec_nor_b8, s390_vec_nor_dbl_c, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_nor_b8, s390_vno, 0, BT_OV_BV16QI_BV16QI_BV16QI)
OB_DEF_VAR (s390_vec_nor_s8_a, s390_vno, 0, BT_OV_V16QI_BV16QI_V16QI)
OB_DEF_VAR (s390_vec_nor_s8_b, s390_vno, 0, BT_OV_V16QI_V16QI_V16QI)
@@ -1743,9 +1736,9 @@ OB_DEF_VAR (s390_vec_nor_dbl_a, s390_vno, 0,
OB_DEF_VAR (s390_vec_nor_dbl_b, s390_vno, 0, BT_OV_V2DF_V2DF_V2DF)
OB_DEF_VAR (s390_vec_nor_dbl_c, s390_vno, 0, BT_OV_V2DF_V2DF_BV2DI)
-B_DEF (s390_vno, vec_norv16qi3, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vno, vec_norv16qi3, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-OB_DEF (s390_vec_or, s390_vec_or_b8, s390_vec_or_dbl_c, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_or, s390_vec_or_b8, s390_vec_or_dbl_c, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_or_b8, s390_vo, 0, BT_OV_BV16QI_BV16QI_BV16QI)
OB_DEF_VAR (s390_vec_or_s8_a, s390_vo, 0, BT_OV_V16QI_BV16QI_V16QI)
OB_DEF_VAR (s390_vec_or_s8_b, s390_vo, 0, BT_OV_V16QI_V16QI_V16QI)
@@ -1778,9 +1771,9 @@ OB_DEF_VAR (s390_vec_or_dbl_a, s390_vo, 0,
OB_DEF_VAR (s390_vec_or_dbl_b, s390_vo, 0, BT_OV_V2DF_V2DF_V2DF)
OB_DEF_VAR (s390_vec_or_dbl_c, s390_vo, 0, BT_OV_V2DF_V2DF_BV2DI)
-B_DEF (s390_vo, iorv16qi3, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vo, iorv16qi3, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-OB_DEF (s390_vec_popcnt, s390_vec_popcnt_s8, s390_vec_popcnt_u64,BT_FN_OV4SI_OV4SI)
+OB_DEF (s390_vec_popcnt, s390_vec_popcnt_s8, s390_vec_popcnt_u64,B_VX, BT_FN_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_popcnt_s8, s390_vpopctb, 0, BT_OV_UV16QI_V16QI)
OB_DEF_VAR (s390_vec_popcnt_u8, s390_vpopctb, 0, BT_OV_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_popcnt_s16, s390_vpopcth, 0, BT_OV_UV8HI_V8HI)
@@ -1790,12 +1783,12 @@ OB_DEF_VAR (s390_vec_popcnt_u32, s390_vpopctf, 0,
OB_DEF_VAR (s390_vec_popcnt_s64, s390_vpopctg, 0, BT_OV_UV2DI_V2DI)
OB_DEF_VAR (s390_vec_popcnt_u64, s390_vpopctg, 0, BT_OV_UV2DI_UV2DI)
-B_DEF (s390_vpopctb, popcountv16qi2, 0, 0, BT_FN_UV16QI_UV16QI)
-B_DEF (s390_vpopcth, popcountv8hi2, 0, 0, BT_FN_UV8HI_UV8HI)
-B_DEF (s390_vpopctf, popcountv4si2, 0, 0, BT_FN_UV4SI_UV4SI)
-B_DEF (s390_vpopctg, popcountv2di2, 0, 0, BT_FN_UV2DI_UV2DI)
+B_DEF (s390_vpopctb, popcountv16qi2, 0, B_VX, 0, BT_FN_UV16QI_UV16QI)
+B_DEF (s390_vpopcth, popcountv8hi2, 0, B_VX, 0, BT_FN_UV8HI_UV8HI)
+B_DEF (s390_vpopctf, popcountv4si2, 0, B_VX, 0, BT_FN_UV4SI_UV4SI)
+B_DEF (s390_vpopctg, popcountv2di2, 0, B_VX, 0, BT_FN_UV2DI_UV2DI)
-OB_DEF (s390_vec_rl, s390_vec_rl_u8, s390_vec_rl_s64, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_rl, s390_vec_rl_u8, s390_vec_rl_s64, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_rl_u8, s390_verllvb, 0, BT_OV_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_rl_s8, s390_verllvb, 0, BT_OV_V16QI_V16QI_UV16QI)
OB_DEF_VAR (s390_vec_rl_u16, s390_verllvh, 0, BT_OV_UV8HI_UV8HI_UV8HI)
@@ -1805,12 +1798,12 @@ OB_DEF_VAR (s390_vec_rl_s32, s390_verllvf, 0,
OB_DEF_VAR (s390_vec_rl_u64, s390_verllvg, 0, BT_OV_UV2DI_UV2DI_UV2DI)
OB_DEF_VAR (s390_vec_rl_s64, s390_verllvg, 0, BT_OV_V2DI_V2DI_UV2DI)
-B_DEF (s390_verllvb, vrotlv16qi3, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_verllvh, vrotlv8hi3, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI)
-B_DEF (s390_verllvf, vrotlv4si3, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI)
-B_DEF (s390_verllvg, vrotlv2di3, 0, 0, BT_FN_UV2DI_UV2DI_UV2DI)
+B_DEF (s390_verllvb, vrotlv16qi3, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_verllvh, vrotlv8hi3, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI)
+B_DEF (s390_verllvf, vrotlv4si3, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI)
+B_DEF (s390_verllvg, vrotlv2di3, 0, B_VX, 0, BT_FN_UV2DI_UV2DI_UV2DI)
-OB_DEF (s390_vec_rli, s390_vec_rli_u8, s390_vec_rli_s64, BT_FN_OV4SI_OV4SI_ULONG)
+OB_DEF (s390_vec_rli, s390_vec_rli_u8, s390_vec_rli_s64, B_VX, BT_FN_OV4SI_OV4SI_ULONG)
OB_DEF_VAR (s390_vec_rli_u8, s390_verllb, 0, BT_OV_UV16QI_UV16QI_ULONG)
OB_DEF_VAR (s390_vec_rli_s8, s390_verllb, 0, BT_OV_V16QI_V16QI_ULONG)
OB_DEF_VAR (s390_vec_rli_u16, s390_verllh, 0, BT_OV_UV8HI_UV8HI_ULONG)
@@ -1820,12 +1813,12 @@ OB_DEF_VAR (s390_vec_rli_s32, s390_verllf, 0,
OB_DEF_VAR (s390_vec_rli_u64, s390_verllg, 0, BT_OV_UV2DI_UV2DI_ULONG)
OB_DEF_VAR (s390_vec_rli_s64, s390_verllg, 0, BT_OV_V2DI_V2DI_ULONG)
-B_DEF (s390_verllb, rotlv16qi3, 0, 0, BT_FN_UV16QI_UV16QI_UINT)
-B_DEF (s390_verllh, rotlv8hi3, 0, 0, BT_FN_UV8HI_UV8HI_UINT)
-B_DEF (s390_verllf, rotlv4si3, 0, 0, BT_FN_UV4SI_UV4SI_UINT)
-B_DEF (s390_verllg, rotlv2di3, 0, 0, BT_FN_UV2DI_UV2DI_UINT)
+B_DEF (s390_verllb, rotlv16qi3, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UINT)
+B_DEF (s390_verllh, rotlv8hi3, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UINT)
+B_DEF (s390_verllf, rotlv4si3, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UINT)
+B_DEF (s390_verllg, rotlv2di3, 0, B_VX, 0, BT_FN_UV2DI_UV2DI_UINT)
-OB_DEF (s390_vec_rl_mask, s390_vec_rl_mask_s8,s390_vec_rl_mask_u64,BT_FN_OV4SI_OV4SI_OV4SI_UCHAR)
+OB_DEF (s390_vec_rl_mask, s390_vec_rl_mask_s8,s390_vec_rl_mask_u64,B_VX, BT_FN_OV4SI_OV4SI_OV4SI_UCHAR)
OB_DEF_VAR (s390_vec_rl_mask_s8, s390_verimb, O3_U8, BT_OV_V16QI_V16QI_UV16QI_UCHAR)
OB_DEF_VAR (s390_vec_rl_mask_u8, s390_verimb, O3_U8, BT_OV_UV16QI_UV16QI_UV16QI_UCHAR)
OB_DEF_VAR (s390_vec_rl_mask_s16, s390_verimh, O3_U8, BT_OV_V8HI_V8HI_UV8HI_UCHAR)
@@ -1835,12 +1828,12 @@ OB_DEF_VAR (s390_vec_rl_mask_u32, s390_verimf, O3_U8,
OB_DEF_VAR (s390_vec_rl_mask_s64, s390_verimg, O3_U8, BT_OV_V2DI_V2DI_UV2DI_UCHAR)
OB_DEF_VAR (s390_vec_rl_mask_u64, s390_verimg, O3_U8, BT_OV_UV2DI_UV2DI_UV2DI_UCHAR)
-B_DEF (s390_verimb, verimv16qi, 0, O4_U8, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INT)
-B_DEF (s390_verimh, verimv8hi, 0, O4_U8, BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT)
-B_DEF (s390_verimf, verimv4si, 0, O4_U8, BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT)
-B_DEF (s390_verimg, verimv2di, 0, O4_U8, BT_FN_UV2DI_UV2DI_UV2DI_UV2DI_INT)
+B_DEF (s390_verimb, verimv16qi, 0, B_VX, O4_U8, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INT)
+B_DEF (s390_verimh, verimv8hi, 0, B_VX, O4_U8, BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT)
+B_DEF (s390_verimf, verimv4si, 0, B_VX, O4_U8, BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT)
+B_DEF (s390_verimg, verimv2di, 0, B_VX, O4_U8, BT_FN_UV2DI_UV2DI_UV2DI_UV2DI_INT)
-OB_DEF (s390_vec_sll, s390_vec_sll_u8q, s390_vec_sll_b64s, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_sll, s390_vec_sll_u8q, s390_vec_sll_b64s, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_sll_u8q, s390_vsl, 0, BT_OV_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_sll_u8h, s390_vsl, 0, BT_OV_UV16QI_UV16QI_UV8HI)
OB_DEF_VAR (s390_vec_sll_u8s, s390_vsl, 0, BT_OV_UV16QI_UV16QI_UV4SI)
@@ -1878,9 +1871,9 @@ OB_DEF_VAR (s390_vec_sll_b64q, s390_vsl, 0,
OB_DEF_VAR (s390_vec_sll_b64h, s390_vsl, 0, BT_OV_BV2DI_BV2DI_UV8HI)
OB_DEF_VAR (s390_vec_sll_b64s, s390_vsl, 0, BT_OV_BV2DI_BV2DI_UV4SI)
-B_DEF (s390_vsl, vec_sllv16qiv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vsl, vec_sllv16qiv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-OB_DEF (s390_vec_slb, s390_vec_slb_u8_u8, s390_vec_slb_dbl_s64,BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_slb, s390_vec_slb_u8_u8, s390_vec_slb_dbl_s64,B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_slb_u8_u8, s390_vslb, 0, BT_OV_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_slb_u8_s8, s390_vslb, 0, BT_OV_UV16QI_UV16QI_V16QI)
OB_DEF_VAR (s390_vec_slb_s8_u8, s390_vslb, 0, BT_OV_V16QI_V16QI_UV16QI)
@@ -1900,9 +1893,9 @@ OB_DEF_VAR (s390_vec_slb_s64_s64, s390_vslb, 0,
OB_DEF_VAR (s390_vec_slb_dbl_u64, s390_vslb, 0, BT_OV_V2DF_V2DF_UV2DI)
OB_DEF_VAR (s390_vec_slb_dbl_s64, s390_vslb, 0, BT_OV_V2DF_V2DF_V2DI)
-B_DEF (s390_vslb, vec_slbv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vslb, vec_slbv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-OB_DEF (s390_vec_sld, s390_vec_sld_s8, s390_vec_sld_dbl, BT_FN_OV4SI_OV4SI_OV4SI_ULONGLONG)
+OB_DEF (s390_vec_sld, s390_vec_sld_s8, s390_vec_sld_dbl, B_VX, BT_FN_OV4SI_OV4SI_OV4SI_ULONGLONG)
OB_DEF_VAR (s390_vec_sld_s8, s390_vsldb, O3_U4, BT_OV_V16QI_V16QI_V16QI_ULONGLONG)
OB_DEF_VAR (s390_vec_sld_u8, s390_vsldb, O3_U4, BT_OV_UV16QI_UV16QI_UV16QI_ULONGLONG)
OB_DEF_VAR (s390_vec_sld_s16, s390_vsldb, O3_U4, BT_OV_V8HI_V8HI_V8HI_ULONGLONG)
@@ -1913,9 +1906,9 @@ OB_DEF_VAR (s390_vec_sld_s64, s390_vsldb, O3_U4,
OB_DEF_VAR (s390_vec_sld_u64, s390_vsldb, O3_U4, BT_OV_UV2DI_UV2DI_UV2DI_ULONGLONG)
OB_DEF_VAR (s390_vec_sld_dbl, s390_vsldb, O3_U4, BT_OV_V2DF_V2DF_V2DF_ULONGLONG)
-B_DEF (s390_vsldb, vec_sldv16qi, 0, O3_U4, BT_FN_UV16QI_UV16QI_UV16QI_INT)
+B_DEF (s390_vsldb, vec_sldv16qi, 0, B_VX, O3_U4, BT_FN_UV16QI_UV16QI_UV16QI_INT)
-OB_DEF (s390_vec_sldw, s390_vec_sldw_s8, s390_vec_sldw_dbl, BT_FN_OV4SI_OV4SI_OV4SI_INT)
+OB_DEF (s390_vec_sldw, s390_vec_sldw_s8, s390_vec_sldw_dbl, B_VX, BT_FN_OV4SI_OV4SI_OV4SI_INT)
OB_DEF_VAR (s390_vec_sldw_s8, s390_vsldb, O3_U4, BT_OV_V16QI_V16QI_V16QI_INT)
OB_DEF_VAR (s390_vec_sldw_u8, s390_vsldb, O3_U4, BT_OV_UV16QI_UV16QI_UV16QI_INT)
OB_DEF_VAR (s390_vec_sldw_s16, s390_vsldb, O3_U4, BT_OV_V8HI_V8HI_V8HI_INT)
@@ -1926,7 +1919,7 @@ OB_DEF_VAR (s390_vec_sldw_s64, s390_vsldb, O3_U4,
OB_DEF_VAR (s390_vec_sldw_u64, s390_vsldb, O3_U4, BT_OV_UV2DI_UV2DI_UV2DI_INT)
OB_DEF_VAR (s390_vec_sldw_dbl, s390_vsldb, O3_U4, BT_OV_V2DF_V2DF_V2DF_INT)
-OB_DEF (s390_vec_sral, s390_vec_sral_u8q, s390_vec_sral_b64s, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_sral, s390_vec_sral_u8q, s390_vec_sral_b64s, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_sral_u8q, s390_vsra, 0, BT_OV_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_sral_u8h, s390_vsra, 0, BT_OV_UV16QI_UV16QI_UV8HI)
OB_DEF_VAR (s390_vec_sral_u8s, s390_vsra, 0, BT_OV_UV16QI_UV16QI_UV4SI)
@@ -1964,9 +1957,9 @@ OB_DEF_VAR (s390_vec_sral_b64q, s390_vsra, 0,
OB_DEF_VAR (s390_vec_sral_b64h, s390_vsra, 0, BT_OV_BV2DI_BV2DI_UV8HI)
OB_DEF_VAR (s390_vec_sral_b64s, s390_vsra, 0, BT_OV_BV2DI_BV2DI_UV4SI)
-B_DEF (s390_vsra, vec_sralv16qiv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vsra, vec_sralv16qiv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-OB_DEF (s390_vec_srab, s390_vec_srab_u8_u8,s390_vec_srab_dbl_s64,BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_srab, s390_vec_srab_u8_u8,s390_vec_srab_dbl_s64,B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_srab_u8_u8, s390_vsrab, 0, BT_OV_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_srab_u8_s8, s390_vsrab, 0, BT_OV_UV16QI_UV16QI_V16QI)
OB_DEF_VAR (s390_vec_srab_s8_u8, s390_vsrab, 0, BT_OV_V16QI_V16QI_UV16QI)
@@ -1986,9 +1979,9 @@ OB_DEF_VAR (s390_vec_srab_s64_s64, s390_vsrab, 0,
OB_DEF_VAR (s390_vec_srab_dbl_u64, s390_vsrab, 0, BT_OV_V2DF_V2DF_UV2DI)
OB_DEF_VAR (s390_vec_srab_dbl_s64, s390_vsrab, 0, BT_OV_V2DF_V2DF_V2DI)
-B_DEF (s390_vsrab, vec_srabv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vsrab, vec_srabv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-OB_DEF (s390_vec_srl, s390_vec_srl_u8q, s390_vec_srl_b64s, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_srl, s390_vec_srl_u8q, s390_vec_srl_b64s, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_srl_u8q, s390_vsrl, 0, BT_OV_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_srl_u8h, s390_vsrl, 0, BT_OV_UV16QI_UV16QI_UV8HI)
OB_DEF_VAR (s390_vec_srl_u8s, s390_vsrl, 0, BT_OV_UV16QI_UV16QI_UV4SI)
@@ -2026,9 +2019,9 @@ OB_DEF_VAR (s390_vec_srl_b64q, s390_vsrl, 0,
OB_DEF_VAR (s390_vec_srl_b64h, s390_vsrl, 0, BT_OV_BV2DI_BV2DI_UV8HI)
OB_DEF_VAR (s390_vec_srl_b64s, s390_vsrl, 0, BT_OV_BV2DI_BV2DI_UV4SI)
-B_DEF (s390_vsrl, vec_srlv16qiv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vsrl, vec_srlv16qiv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-OB_DEF (s390_vec_srb, s390_vec_srb_u8_u8, s390_vec_srb_dbl_s64,BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_srb, s390_vec_srb_u8_u8, s390_vec_srb_dbl_s64,B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_srb_u8_u8, s390_vsrlb, 0, BT_OV_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_srb_u8_s8, s390_vsrlb, 0, BT_OV_UV16QI_UV16QI_V16QI)
OB_DEF_VAR (s390_vec_srb_s8_u8, s390_vsrlb, 0, BT_OV_V16QI_V16QI_UV16QI)
@@ -2048,45 +2041,45 @@ OB_DEF_VAR (s390_vec_srb_s64_s64, s390_vsrlb, 0,
OB_DEF_VAR (s390_vec_srb_dbl_u64, s390_vsrlb, 0, BT_OV_V2DF_V2DF_UV2DI)
OB_DEF_VAR (s390_vec_srb_dbl_s64, s390_vsrlb, 0, BT_OV_V2DF_V2DF_V2DI)
-B_DEF (s390_vsrlb, vec_srbv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vsq, vec_sub_u128, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vsrlb, vec_srbv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vsq, vec_sub_u128, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-OB_DEF (s390_vec_subc, s390_vec_subc_u8, s390_vec_subc_u64, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_subc, s390_vec_subc_u8, s390_vec_subc_u64, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_subc_u8, s390_vscbib, 0, BT_OV_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_subc_u16, s390_vscbih, 0, BT_OV_UV8HI_UV8HI_UV8HI)
OB_DEF_VAR (s390_vec_subc_u32, s390_vscbif, 0, BT_OV_UV4SI_UV4SI_UV4SI)
OB_DEF_VAR (s390_vec_subc_u64, s390_vscbig, 0, BT_OV_UV2DI_UV2DI_UV2DI)
-B_DEF (s390_vscbib, vec_subcv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vscbih, vec_subcv8hi, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI)
-B_DEF (s390_vscbif, vec_subcv4si, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI)
-B_DEF (s390_vscbig, vec_subcv2di, 0, 0, BT_FN_UV2DI_UV2DI_UV2DI)
-B_DEF (s390_vscbiq, vec_subc_u128, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vsbiq, vec_sube_u128, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vsbcbiq, vec_subec_u128, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vscbib, vec_subcv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vscbih, vec_subcv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI)
+B_DEF (s390_vscbif, vec_subcv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI)
+B_DEF (s390_vscbig, vec_subcv2di, 0, B_VX, 0, BT_FN_UV2DI_UV2DI_UV2DI)
+B_DEF (s390_vscbiq, vec_subc_u128, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vsbiq, vec_sube_u128, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vsbcbiq, vec_subec_u128, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI)
-OB_DEF (s390_vec_sum2, s390_vec_sum2_u16, s390_vec_sum2_u32, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_sum2, s390_vec_sum2_u16, s390_vec_sum2_u32, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_sum2_u16, s390_vsumgh, 0, BT_OV_UV2DI_UV8HI_UV8HI)
OB_DEF_VAR (s390_vec_sum2_u32, s390_vsumgf, 0, BT_OV_UV2DI_UV4SI_UV4SI)
-B_DEF (s390_vsumgh, vec_sum2v8hi, 0, 0, BT_FN_UV2DI_UV8HI_UV8HI)
-B_DEF (s390_vsumgf, vec_sum2v4si, 0, 0, BT_FN_UV2DI_UV4SI_UV4SI)
+B_DEF (s390_vsumgh, vec_sum2v8hi, 0, B_VX, 0, BT_FN_UV2DI_UV8HI_UV8HI)
+B_DEF (s390_vsumgf, vec_sum2v4si, 0, B_VX, 0, BT_FN_UV2DI_UV4SI_UV4SI)
-OB_DEF (s390_vec_sum_u128, s390_vec_sum_u128_u32,s390_vec_sum_u128_u64,BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_sum_u128, s390_vec_sum_u128_u32,s390_vec_sum_u128_u64,B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_sum_u128_u32, s390_vsumqf, 0, BT_OV_UV16QI_UV4SI_UV4SI)
OB_DEF_VAR (s390_vec_sum_u128_u64, s390_vsumqg, 0, BT_OV_UV16QI_UV2DI_UV2DI)
-B_DEF (s390_vsumqf, vec_sum_u128v4si, 0, 0, BT_FN_UV16QI_UV4SI_UV4SI)
-B_DEF (s390_vsumqg, vec_sum_u128v2di, 0, 0, BT_FN_UV16QI_UV2DI_UV2DI)
+B_DEF (s390_vsumqf, vec_sum_u128v4si, 0, B_VX, 0, BT_FN_UV16QI_UV4SI_UV4SI)
+B_DEF (s390_vsumqg, vec_sum_u128v2di, 0, B_VX, 0, BT_FN_UV16QI_UV2DI_UV2DI)
-OB_DEF (s390_vec_sum4, s390_vec_sum4_u8, s390_vec_sum4_u16, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_sum4, s390_vec_sum4_u8, s390_vec_sum4_u16, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_sum4_u8, s390_vsumb, 0, BT_OV_UV4SI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_sum4_u16, s390_vsumh, 0, BT_OV_UV4SI_UV8HI_UV8HI)
-B_DEF (s390_vsumb, vec_sum4v16qi, 0, 0, BT_FN_UV4SI_UV16QI_UV16QI)
-B_DEF (s390_vsumh, vec_sum4v8hi, 0, 0, BT_FN_UV4SI_UV8HI_UV8HI)
+B_DEF (s390_vsumb, vec_sum4v16qi, 0, B_VX, 0, BT_FN_UV4SI_UV16QI_UV16QI)
+B_DEF (s390_vsumh, vec_sum4v8hi, 0, B_VX, 0, BT_FN_UV4SI_UV8HI_UV8HI)
-OB_DEF (s390_vec_test_mask, s390_vec_test_mask_s8,s390_vec_test_mask_dbl,BT_FN_INT_OV4SI_OV4SI)
+OB_DEF (s390_vec_test_mask, s390_vec_test_mask_s8,s390_vec_test_mask_dbl,B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vec_test_mask_s8, s390_vtm, 0, BT_OV_INT_V16QI_UV16QI)
OB_DEF_VAR (s390_vec_test_mask_u8, s390_vtm, 0, BT_OV_INT_UV16QI_UV16QI)
OB_DEF_VAR (s390_vec_test_mask_s16, s390_vtm, 0, BT_OV_INT_V8HI_UV8HI)
@@ -2097,21 +2090,21 @@ OB_DEF_VAR (s390_vec_test_mask_s64, s390_vtm, 0,
OB_DEF_VAR (s390_vec_test_mask_u64, s390_vtm, 0, BT_OV_INT_UV2DI_UV2DI)
OB_DEF_VAR (s390_vec_test_mask_dbl, s390_vtm, 0, BT_OV_INT_V2DF_UV2DI)
-B_DEF (s390_vtm, vec_test_mask_intv16qi,0, 0, BT_FN_INT_UV16QI_UV16QI)
-B_DEF (s390_vfaeb, vfaev16qi, 0, O3_U4, BT_FN_UV16QI_UV16QI_UV16QI_INT)
-B_DEF (s390_vfaeh, vfaev8hi, 0, O3_U4, BT_FN_UV8HI_UV8HI_UV8HI_INT)
-B_DEF (s390_vfaef, vfaev4si, 0, O3_U4, BT_FN_UV4SI_UV4SI_UV4SI_INT)
-B_DEF (s390_vfaezb, vfaezv16qi, 0, O3_U4, BT_FN_UV16QI_UV16QI_UV16QI_INT)
-B_DEF (s390_vfaezh, vfaezv8hi, 0, O3_U4, BT_FN_UV8HI_UV8HI_UV8HI_INT)
-B_DEF (s390_vfaezf, vfaezv4si, 0, O3_U4, BT_FN_UV4SI_UV4SI_UV4SI_INT)
-B_DEF (s390_vfaebs, vfaesv16qi, 0, O3_U4, BT_FN_UV16QI_UV16QI_UV16QI_INT_INTPTR)
-B_DEF (s390_vfaehs, vfaesv8hi, 0, O3_U4, BT_FN_UV8HI_UV8HI_UV8HI_INT_INTPTR)
-B_DEF (s390_vfaefs, vfaesv4si, 0, O3_U4, BT_FN_UV4SI_UV4SI_UV4SI_INT_INTPTR)
-B_DEF (s390_vfaezbs, vfaezsv16qi, 0, O3_U4, BT_FN_UV16QI_UV16QI_UV16QI_INT_INTPTR)
-B_DEF (s390_vfaezhs, vfaezsv8hi, 0, O3_U4, BT_FN_UV8HI_UV8HI_UV8HI_INT_INTPTR)
-B_DEF (s390_vfaezfs, vfaezsv4si, 0, O3_U4, BT_FN_UV4SI_UV4SI_UV4SI_INT_INTPTR)
-
-OB_DEF (s390_vec_find_any_eq_idx, s390_vfaeb_idx_s8, s390_vfaef_idx_u32b,BT_FN_INT_OV4SI_OV4SI)
+B_DEF (s390_vtm, vec_test_mask_intv16qi,0, B_VX, 0, BT_FN_INT_UV16QI_UV16QI)
+B_DEF (s390_vfaeb, vfaev16qi, 0, B_VX, O3_U4, BT_FN_UV16QI_UV16QI_UV16QI_INT)
+B_DEF (s390_vfaeh, vfaev8hi, 0, B_VX, O3_U4, BT_FN_UV8HI_UV8HI_UV8HI_INT)
+B_DEF (s390_vfaef, vfaev4si, 0, B_VX, O3_U4, BT_FN_UV4SI_UV4SI_UV4SI_INT)
+B_DEF (s390_vfaezb, vfaezv16qi, 0, B_VX, O3_U4, BT_FN_UV16QI_UV16QI_UV16QI_INT)
+B_DEF (s390_vfaezh, vfaezv8hi, 0, B_VX, O3_U4, BT_FN_UV8HI_UV8HI_UV8HI_INT)
+B_DEF (s390_vfaezf, vfaezv4si, 0, B_VX, O3_U4, BT_FN_UV4SI_UV4SI_UV4SI_INT)
+B_DEF (s390_vfaebs, vfaesv16qi, 0, B_VX, O3_U4, BT_FN_UV16QI_UV16QI_UV16QI_INT_INTPTR)
+B_DEF (s390_vfaehs, vfaesv8hi, 0, B_VX, O3_U4, BT_FN_UV8HI_UV8HI_UV8HI_INT_INTPTR)
+B_DEF (s390_vfaefs, vfaesv4si, 0, B_VX, O3_U4, BT_FN_UV4SI_UV4SI_UV4SI_INT_INTPTR)
+B_DEF (s390_vfaezbs, vfaezsv16qi, 0, B_VX, O3_U4, BT_FN_UV16QI_UV16QI_UV16QI_INT_INTPTR)
+B_DEF (s390_vfaezhs, vfaezsv8hi, 0, B_VX, O3_U4, BT_FN_UV8HI_UV8HI_UV8HI_INT_INTPTR)
+B_DEF (s390_vfaezfs, vfaezsv4si, 0, B_VX, O3_U4, BT_FN_UV4SI_UV4SI_UV4SI_INT_INTPTR)
+
+OB_DEF (s390_vec_find_any_eq_idx, s390_vfaeb_idx_s8, s390_vfaef_idx_u32b,B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vfaeb_idx_s8, s390_vfaeb, 0, BT_OV_V16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vfaeb_idx_u8a, s390_vfaeb, 0, BT_OV_UV16QI_BV16QI_BV16QI)
OB_DEF_VAR (s390_vfaeb_idx_u8b, s390_vfaeb, 0, BT_OV_UV16QI_UV16QI_UV16QI)
@@ -2122,7 +2115,7 @@ OB_DEF_VAR (s390_vfaef_idx_s32, s390_vfaef, 0,
OB_DEF_VAR (s390_vfaef_idx_u32a, s390_vfaef, 0, BT_OV_UV4SI_BV4SI_BV4SI)
OB_DEF_VAR (s390_vfaef_idx_u32b, s390_vfaef, 0, BT_OV_UV4SI_UV4SI_UV4SI)
-OB_DEF (s390_vec_find_any_ne_idx, s390_vfaeb_inv_idx_s8,s390_vfaef_inv_idx_u32b,BT_FN_INT_OV4SI_OV4SI)
+OB_DEF (s390_vec_find_any_ne_idx, s390_vfaeb_inv_idx_s8,s390_vfaef_inv_idx_u32b,B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vfaeb_inv_idx_s8, s390_vfaeb, 0, BT_OV_V16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vfaeb_inv_idx_u8a, s390_vfaeb, 0, BT_OV_UV16QI_BV16QI_BV16QI)
OB_DEF_VAR (s390_vfaeb_inv_idx_u8b, s390_vfaeb, 0, BT_OV_UV16QI_UV16QI_UV16QI)
@@ -2133,7 +2126,7 @@ OB_DEF_VAR (s390_vfaef_inv_idx_s32, s390_vfaef, 0,
OB_DEF_VAR (s390_vfaef_inv_idx_u32a, s390_vfaef, 0, BT_OV_UV4SI_BV4SI_BV4SI)
OB_DEF_VAR (s390_vfaef_inv_idx_u32b, s390_vfaef, 0, BT_OV_UV4SI_UV4SI_UV4SI)
-OB_DEF (s390_vec_find_any_eq_or_0_idx,s390_vfaezb_idx_s8,s390_vfaezf_idx_u32b,BT_FN_INT_OV4SI_OV4SI)
+OB_DEF (s390_vec_find_any_eq_or_0_idx,s390_vfaezb_idx_s8,s390_vfaezf_idx_u32b,B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vfaezb_idx_s8, s390_vfaezb, 0, BT_OV_V16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vfaezb_idx_u8a, s390_vfaezb, 0, BT_OV_UV16QI_BV16QI_BV16QI)
OB_DEF_VAR (s390_vfaezb_idx_u8b, s390_vfaezb, 0, BT_OV_UV16QI_UV16QI_UV16QI)
@@ -2144,7 +2137,7 @@ OB_DEF_VAR (s390_vfaezf_idx_s32, s390_vfaezf, 0,
OB_DEF_VAR (s390_vfaezf_idx_u32a, s390_vfaezf, 0, BT_OV_UV4SI_BV4SI_BV4SI)
OB_DEF_VAR (s390_vfaezf_idx_u32b, s390_vfaezf, 0, BT_OV_UV4SI_UV4SI_UV4SI)
-OB_DEF (s390_vec_find_any_ne_or_0_idx,s390_vfaezb_inv_idx_s8,s390_vfaezf_inv_idx_u32b,BT_FN_INT_OV4SI_OV4SI)
+OB_DEF (s390_vec_find_any_ne_or_0_idx,s390_vfaezb_inv_idx_s8,s390_vfaezf_inv_idx_u32b,B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vfaezb_inv_idx_s8, s390_vfaezb, 0, BT_OV_V16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vfaezb_inv_idx_u8a, s390_vfaezb, 0, BT_OV_UV16QI_BV16QI_BV16QI)
OB_DEF_VAR (s390_vfaezb_inv_idx_u8b, s390_vfaezb, 0, BT_OV_UV16QI_UV16QI_UV16QI)
@@ -2155,7 +2148,7 @@ OB_DEF_VAR (s390_vfaezf_inv_idx_s32, s390_vfaezf, 0,
OB_DEF_VAR (s390_vfaezf_inv_idx_u32a, s390_vfaezf, 0, BT_OV_UV4SI_BV4SI_BV4SI)
OB_DEF_VAR (s390_vfaezf_inv_idx_u32b, s390_vfaezf, 0, BT_OV_UV4SI_UV4SI_UV4SI)
-OB_DEF (s390_vec_find_any_eq, s390_vfaeb_s8, s390_vfaef_b32, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_find_any_eq, s390_vfaeb_s8, s390_vfaef_b32, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vfaeb_s8, s390_vfaeb, 0, BT_OV_BV16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vfaeb_u8, s390_vfaeb, 0, BT_OV_BV16QI_BV16QI_BV16QI)
OB_DEF_VAR (s390_vfaeb_b8, s390_vfaeb, 0, BT_OV_BV16QI_UV16QI_UV16QI)
@@ -2166,7 +2159,7 @@ OB_DEF_VAR (s390_vfaef_s32, s390_vfaef, 0,
OB_DEF_VAR (s390_vfaef_u32, s390_vfaef, 0, BT_OV_BV4SI_BV4SI_BV4SI)
OB_DEF_VAR (s390_vfaef_b32, s390_vfaef, 0, BT_OV_BV4SI_UV4SI_UV4SI)
-OB_DEF (s390_vec_find_any_ne, s390_vfaeb_inv_s8, s390_vfaef_inv_b32, BT_FN_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_find_any_ne, s390_vfaeb_inv_s8, s390_vfaef_inv_b32, B_VX, BT_FN_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vfaeb_inv_s8, s390_vfaeb, 0, BT_OV_BV16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vfaeb_inv_u8, s390_vfaeb, 0, BT_OV_BV16QI_BV16QI_BV16QI)
OB_DEF_VAR (s390_vfaeb_inv_b8, s390_vfaeb, 0, BT_OV_BV16QI_UV16QI_UV16QI)
@@ -2177,7 +2170,7 @@ OB_DEF_VAR (s390_vfaef_inv_s32, s390_vfaef, 0,
OB_DEF_VAR (s390_vfaef_inv_u32, s390_vfaef, 0, BT_OV_BV4SI_BV4SI_BV4SI)
OB_DEF_VAR (s390_vfaef_inv_b32, s390_vfaef, 0, BT_OV_BV4SI_UV4SI_UV4SI)
-OB_DEF (s390_vec_find_any_eq_idx_cc,s390_vfaebs_idx_s8, s390_vfaefs_idx_u32b,BT_FN_INT_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_find_any_eq_idx_cc,s390_vfaebs_idx_s8, s390_vfaefs_idx_u32b,B_VX, BT_FN_INT_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vfaebs_idx_s8, s390_vfaebs, 0, BT_OV_V16QI_V16QI_V16QI_INTPTR)
OB_DEF_VAR (s390_vfaebs_idx_u8a, s390_vfaebs, 0, BT_OV_UV16QI_BV16QI_BV16QI_INTPTR)
OB_DEF_VAR (s390_vfaebs_idx_u8b, s390_vfaebs, 0, BT_OV_UV16QI_UV16QI_UV16QI_INTPTR)
@@ -2188,7 +2181,7 @@ OB_DEF_VAR (s390_vfaefs_idx_s32, s390_vfaefs, 0,
OB_DEF_VAR (s390_vfaefs_idx_u32a, s390_vfaefs, 0, BT_OV_UV4SI_BV4SI_BV4SI_INTPTR)
OB_DEF_VAR (s390_vfaefs_idx_u32b, s390_vfaefs, 0, BT_OV_UV4SI_UV4SI_UV4SI_INTPTR)
-OB_DEF (s390_vec_find_any_ne_idx_cc,s390_vfaebs_inv_idx_s8,s390_vfaefs_inv_idx_u32b,BT_FN_INT_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_find_any_ne_idx_cc,s390_vfaebs_inv_idx_s8,s390_vfaefs_inv_idx_u32b,B_VX, BT_FN_INT_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vfaebs_inv_idx_s8, s390_vfaebs, 0, BT_OV_V16QI_V16QI_V16QI_INTPTR)
OB_DEF_VAR (s390_vfaebs_inv_idx_u8a, s390_vfaebs, 0, BT_OV_UV16QI_BV16QI_BV16QI_INTPTR)
OB_DEF_VAR (s390_vfaebs_inv_idx_u8b, s390_vfaebs, 0, BT_OV_UV16QI_UV16QI_UV16QI_INTPTR)
@@ -2199,7 +2192,7 @@ OB_DEF_VAR (s390_vfaefs_inv_idx_s32, s390_vfaefs, 0,
OB_DEF_VAR (s390_vfaefs_inv_idx_u32a, s390_vfaefs, 0, BT_OV_UV4SI_BV4SI_BV4SI_INTPTR)
OB_DEF_VAR (s390_vfaefs_inv_idx_u32b, s390_vfaefs, 0, BT_OV_UV4SI_UV4SI_UV4SI_INTPTR)
-OB_DEF (s390_vec_find_any_eq_or_0_idx_cc,s390_vfaezbs_idx_s8,s390_vfaezfs_idx_u32b,BT_FN_INT_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_find_any_eq_or_0_idx_cc,s390_vfaezbs_idx_s8,s390_vfaezfs_idx_u32b,B_VX, BT_FN_INT_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vfaezbs_idx_s8, s390_vfaezbs, 0, BT_OV_V16QI_V16QI_V16QI_INTPTR)
OB_DEF_VAR (s390_vfaezbs_idx_u8a, s390_vfaezbs, 0, BT_OV_UV16QI_BV16QI_BV16QI_INTPTR)
OB_DEF_VAR (s390_vfaezbs_idx_u8b, s390_vfaezbs, 0, BT_OV_UV16QI_UV16QI_UV16QI_INTPTR)
@@ -2210,7 +2203,7 @@ OB_DEF_VAR (s390_vfaezfs_idx_s32, s390_vfaezfs, 0,
OB_DEF_VAR (s390_vfaezfs_idx_u32a, s390_vfaezfs, 0, BT_OV_UV4SI_BV4SI_BV4SI_INTPTR)
OB_DEF_VAR (s390_vfaezfs_idx_u32b, s390_vfaezfs, 0, BT_OV_UV4SI_UV4SI_UV4SI_INTPTR)
-OB_DEF (s390_vec_find_any_ne_or_0_idx_cc,s390_vfaezbs_inv_idx_s8,s390_vfaezfs_inv_idx_u32b,BT_FN_INT_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_find_any_ne_or_0_idx_cc,s390_vfaezbs_inv_idx_s8,s390_vfaezfs_inv_idx_u32b,B_VX,BT_FN_INT_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vfaezbs_inv_idx_s8, s390_vfaezbs, 0, BT_OV_V16QI_V16QI_V16QI_INTPTR)
OB_DEF_VAR (s390_vfaezbs_inv_idx_u8a, s390_vfaezbs, 0, BT_OV_UV16QI_BV16QI_BV16QI_INTPTR)
OB_DEF_VAR (s390_vfaezbs_inv_idx_u8b, s390_vfaezbs, 0, BT_OV_UV16QI_UV16QI_UV16QI_INTPTR)
@@ -2221,7 +2214,7 @@ OB_DEF_VAR (s390_vfaezfs_inv_idx_s32, s390_vfaezfs, 0,
OB_DEF_VAR (s390_vfaezfs_inv_idx_u32a, s390_vfaezfs, 0, BT_OV_UV4SI_BV4SI_BV4SI_INTPTR)
OB_DEF_VAR (s390_vfaezfs_inv_idx_u32b, s390_vfaezfs, 0, BT_OV_UV4SI_UV4SI_UV4SI_INTPTR)
-OB_DEF (s390_vec_find_any_eq_cc, s390_vfaebs_s8, s390_vfaefs_b32, BT_FN_OV4SI_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_find_any_eq_cc, s390_vfaebs_s8, s390_vfaefs_b32, B_VX, BT_FN_OV4SI_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vfaebs_s8, s390_vfaebs, 0, BT_OV_BV16QI_V16QI_V16QI_INTPTR)
OB_DEF_VAR (s390_vfaebs_u8, s390_vfaebs, 0, BT_OV_BV16QI_BV16QI_BV16QI_INTPTR)
OB_DEF_VAR (s390_vfaebs_b8, s390_vfaebs, 0, BT_OV_BV16QI_UV16QI_UV16QI_INTPTR)
@@ -2232,7 +2225,7 @@ OB_DEF_VAR (s390_vfaefs_s32, s390_vfaefs, 0,
OB_DEF_VAR (s390_vfaefs_u32, s390_vfaefs, 0, BT_OV_BV4SI_BV4SI_BV4SI_INTPTR)
OB_DEF_VAR (s390_vfaefs_b32, s390_vfaefs, 0, BT_OV_BV4SI_UV4SI_UV4SI_INTPTR)
-OB_DEF (s390_vec_find_any_ne_cc, s390_vfaebs_inv_s8, s390_vfaefs_inv_b32,BT_FN_OV4SI_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_find_any_ne_cc, s390_vfaebs_inv_s8, s390_vfaefs_inv_b32,B_VX, BT_FN_OV4SI_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vfaebs_inv_s8, s390_vfaebs, 0, BT_OV_BV16QI_V16QI_V16QI_INTPTR)
OB_DEF_VAR (s390_vfaebs_inv_u8, s390_vfaebs, 0, BT_OV_BV16QI_BV16QI_BV16QI_INTPTR)
OB_DEF_VAR (s390_vfaebs_inv_b8, s390_vfaebs, 0, BT_OV_BV16QI_UV16QI_UV16QI_INTPTR)
@@ -2243,20 +2236,20 @@ OB_DEF_VAR (s390_vfaefs_inv_s32, s390_vfaefs, 0,
OB_DEF_VAR (s390_vfaefs_inv_u32, s390_vfaefs, 0, BT_OV_BV4SI_BV4SI_BV4SI_INTPTR)
OB_DEF_VAR (s390_vfaefs_inv_b32, s390_vfaefs, 0, BT_OV_BV4SI_UV4SI_UV4SI_INTPTR)
-B_DEF (s390_vfeeb, vfeev16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vfeeh, vfeev8hi, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI)
-B_DEF (s390_vfeef, vfeev4si, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI)
-B_DEF (s390_vfeezb, vfeezv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vfeezh, vfeezv8hi, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI)
-B_DEF (s390_vfeezf, vfeezv4si, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI)
-B_DEF (s390_vfeebs, vfeesv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI_INTPTR)
-B_DEF (s390_vfeehs, vfeesv8hi, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI_INTPTR)
-B_DEF (s390_vfeefs, vfeesv4si, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI_INTPTR)
-B_DEF (s390_vfeezbs, vfeezsv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI_INTPTR)
-B_DEF (s390_vfeezhs, vfeezsv8hi, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI_INTPTR)
-B_DEF (s390_vfeezfs, vfeezsv4si, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI_INTPTR)
-
-OB_DEF (s390_vec_cmpeq_idx, s390_vfeeb_s8, s390_vfeef_u32b, BT_FN_INT_OV4SI_OV4SI)
+B_DEF (s390_vfeeb, vfeev16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vfeeh, vfeev8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI)
+B_DEF (s390_vfeef, vfeev4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI)
+B_DEF (s390_vfeezb, vfeezv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vfeezh, vfeezv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI)
+B_DEF (s390_vfeezf, vfeezv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI)
+B_DEF (s390_vfeebs, vfeesv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI_INTPTR)
+B_DEF (s390_vfeehs, vfeesv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI_INTPTR)
+B_DEF (s390_vfeefs, vfeesv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI_INTPTR)
+B_DEF (s390_vfeezbs, vfeezsv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI_INTPTR)
+B_DEF (s390_vfeezhs, vfeezsv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI_INTPTR)
+B_DEF (s390_vfeezfs, vfeezsv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI_INTPTR)
+
+OB_DEF (s390_vec_cmpeq_idx, s390_vfeeb_s8, s390_vfeef_u32b, B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vfeeb_s8, s390_vfeeb, 0, BT_OV_V16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vfeeb_u8a, s390_vfeeb, 0, BT_OV_UV16QI_BV16QI_BV16QI)
OB_DEF_VAR (s390_vfeeb_u8b, s390_vfeeb, 0, BT_OV_UV16QI_UV16QI_UV16QI)
@@ -2267,7 +2260,7 @@ OB_DEF_VAR (s390_vfeef_s32, s390_vfeef, 0,
OB_DEF_VAR (s390_vfeef_u32a, s390_vfeef, 0, BT_OV_UV4SI_BV4SI_BV4SI)
OB_DEF_VAR (s390_vfeef_u32b, s390_vfeef, 0, BT_OV_UV4SI_UV4SI_UV4SI)
-OB_DEF (s390_vec_cmpeq_or_0_idx, s390_vfeezb_s8, s390_vfeezf_u32b, BT_FN_INT_OV4SI_OV4SI)
+OB_DEF (s390_vec_cmpeq_or_0_idx, s390_vfeezb_s8, s390_vfeezf_u32b, B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vfeezb_s8, s390_vfeezb, 0, BT_OV_V16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vfeezb_u8a, s390_vfeezb, 0, BT_OV_UV16QI_BV16QI_BV16QI)
OB_DEF_VAR (s390_vfeezb_u8b, s390_vfeezb, 0, BT_OV_UV16QI_UV16QI_UV16QI)
@@ -2278,7 +2271,7 @@ OB_DEF_VAR (s390_vfeezf_s32, s390_vfeezf, 0,
OB_DEF_VAR (s390_vfeezf_u32a, s390_vfeezf, 0, BT_OV_UV4SI_BV4SI_BV4SI)
OB_DEF_VAR (s390_vfeezf_u32b, s390_vfeezf, 0, BT_OV_UV4SI_UV4SI_UV4SI)
-OB_DEF (s390_vec_cmpeq_idx_cc, s390_vfeebs_s8, s390_vfeefs_u32b, BT_FN_INT_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_cmpeq_idx_cc, s390_vfeebs_s8, s390_vfeefs_u32b, B_VX, BT_FN_INT_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vfeebs_s8, s390_vfeebs, 0, BT_OV_V16QI_V16QI_V16QI_INTPTR)
OB_DEF_VAR (s390_vfeebs_u8a, s390_vfeebs, 0, BT_OV_UV16QI_BV16QI_BV16QI_INTPTR)
OB_DEF_VAR (s390_vfeebs_u8b, s390_vfeebs, 0, BT_OV_UV16QI_UV16QI_UV16QI_INTPTR)
@@ -2289,7 +2282,7 @@ OB_DEF_VAR (s390_vfeefs_s32, s390_vfeefs, 0,
OB_DEF_VAR (s390_vfeefs_u32a, s390_vfeefs, 0, BT_OV_UV4SI_BV4SI_BV4SI_INTPTR)
OB_DEF_VAR (s390_vfeefs_u32b, s390_vfeefs, 0, BT_OV_UV4SI_UV4SI_UV4SI_INTPTR)
-OB_DEF (s390_vec_cmpeq_or_0_idx_cc, s390_vfeezbs_s8, s390_vfeezfs_u32b, BT_FN_INT_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_cmpeq_or_0_idx_cc, s390_vfeezbs_s8, s390_vfeezfs_u32b, B_VX, BT_FN_INT_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vfeezbs_s8, s390_vfeezbs, 0, BT_OV_V16QI_V16QI_V16QI_INTPTR)
OB_DEF_VAR (s390_vfeezbs_u8a, s390_vfeezbs, 0, BT_OV_UV16QI_BV16QI_BV16QI_INTPTR)
OB_DEF_VAR (s390_vfeezbs_u8b, s390_vfeezbs, 0, BT_OV_UV16QI_UV16QI_UV16QI_INTPTR)
@@ -2300,20 +2293,20 @@ OB_DEF_VAR (s390_vfeezfs_s32, s390_vfeezfs, 0,
OB_DEF_VAR (s390_vfeezfs_u32a, s390_vfeezfs, 0, BT_OV_UV4SI_BV4SI_BV4SI_INTPTR)
OB_DEF_VAR (s390_vfeezfs_u32b, s390_vfeezfs, 0, BT_OV_UV4SI_UV4SI_UV4SI_INTPTR)
-B_DEF (s390_vfeneb, vfenev16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vfeneh, vfenev8hi, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI)
-B_DEF (s390_vfenef, vfenev4si, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI)
-B_DEF (s390_vfenezb, vfenezv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI)
-B_DEF (s390_vfenezh, vfenezv8hi, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI)
-B_DEF (s390_vfenezf, vfenezv4si, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI)
-B_DEF (s390_vfenebs, vfenesv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI_INTPTR)
-B_DEF (s390_vfenehs, vfenesv8hi, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI_INTPTR)
-B_DEF (s390_vfenefs, vfenesv4si, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI_INTPTR)
-B_DEF (s390_vfenezbs, vfenezsv16qi, 0, 0, BT_FN_UV16QI_UV16QI_UV16QI_INTPTR)
-B_DEF (s390_vfenezhs, vfenezsv8hi, 0, 0, BT_FN_UV8HI_UV8HI_UV8HI_INTPTR)
-B_DEF (s390_vfenezfs, vfenezsv4si, 0, 0, BT_FN_UV4SI_UV4SI_UV4SI_INTPTR)
-
-OB_DEF (s390_vec_cmpne_idx, s390_vfeneb_s8, s390_vfenef_u32b, BT_FN_INT_OV4SI_OV4SI)
+B_DEF (s390_vfeneb, vfenev16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vfeneh, vfenev8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI)
+B_DEF (s390_vfenef, vfenev4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI)
+B_DEF (s390_vfenezb, vfenezv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI)
+B_DEF (s390_vfenezh, vfenezv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI)
+B_DEF (s390_vfenezf, vfenezv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI)
+B_DEF (s390_vfenebs, vfenesv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI_INTPTR)
+B_DEF (s390_vfenehs, vfenesv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI_INTPTR)
+B_DEF (s390_vfenefs, vfenesv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI_INTPTR)
+B_DEF (s390_vfenezbs, vfenezsv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI_INTPTR)
+B_DEF (s390_vfenezhs, vfenezsv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI_INTPTR)
+B_DEF (s390_vfenezfs, vfenezsv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI_INTPTR)
+
+OB_DEF (s390_vec_cmpne_idx, s390_vfeneb_s8, s390_vfenef_u32b, B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vfeneb_s8, s390_vfeneb, 0, BT_OV_V16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vfeneb_u8a, s390_vfeneb, 0, BT_OV_UV16QI_BV16QI_BV16QI)
OB_DEF_VAR (s390_vfeneb_u8b, s390_vfeneb, 0, BT_OV_UV16QI_UV16QI_UV16QI)
@@ -2324,7 +2317,7 @@ OB_DEF_VAR (s390_vfenef_s32, s390_vfenef, 0,
OB_DEF_VAR (s390_vfenef_u32a, s390_vfenef, 0, BT_OV_UV4SI_BV4SI_BV4SI)
OB_DEF_VAR (s390_vfenef_u32b, s390_vfenef, 0, BT_OV_UV4SI_UV4SI_UV4SI)
-OB_DEF (s390_vec_cmpne_or_0_idx, s390_vfenezb_s8, s390_vfenezf_u32b, BT_FN_INT_OV4SI_OV4SI)
+OB_DEF (s390_vec_cmpne_or_0_idx, s390_vfenezb_s8, s390_vfenezf_u32b, B_VX, BT_FN_INT_OV4SI_OV4SI)
OB_DEF_VAR (s390_vfenezb_s8, s390_vfenezb, 0, BT_OV_V16QI_V16QI_V16QI)
OB_DEF_VAR (s390_vfenezb_u8a, s390_vfenezb, 0, BT_OV_UV16QI_BV16QI_BV16QI)
OB_DEF_VAR (s390_vfenezb_u8b, s390_vfenezb, 0, BT_OV_UV16QI_UV16QI_UV16QI)
@@ -2335,7 +2328,7 @@ OB_DEF_VAR (s390_vfenezf_s32, s390_vfenezf, 0,
OB_DEF_VAR (s390_vfenezf_u32a, s390_vfenezf, 0, BT_OV_UV4SI_BV4SI_BV4SI)
OB_DEF_VAR (s390_vfenezf_u32b, s390_vfenezf, 0, BT_OV_UV4SI_UV4SI_UV4SI)
-OB_DEF (s390_vec_cmpne_idx_cc, s390_vfenebs_s8, s390_vfenefs_u32b, BT_FN_INT_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_cmpne_idx_cc, s390_vfenebs_s8, s390_vfenefs_u32b, B_VX, BT_FN_INT_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vfenebs_s8, s390_vfenebs, 0, BT_OV_V16QI_V16QI_V16QI_INTPTR)
OB_DEF_VAR (s390_vfenebs_u8a, s390_vfenebs, 0, BT_OV_UV16QI_BV16QI_BV16QI_INTPTR)
OB_DEF_VAR (s390_vfenebs_u8b, s390_vfenebs, 0, BT_OV_UV16QI_UV16QI_UV16QI_INTPTR)
@@ -2346,7 +2339,7 @@ OB_DEF_VAR (s390_vfenefs_s32, s390_vfenefs, 0,
OB_DEF_VAR (s390_vfenefs_u32a, s390_vfenefs, 0, BT_OV_UV4SI_BV4SI_BV4SI_INTPTR)
OB_DEF_VAR (s390_vfenefs_u32b, s390_vfenefs, 0, BT_OV_UV4SI_UV4SI_UV4SI_INTPTR)
-OB_DEF (s390_vec_cmpne_or_0_idx_cc, s390_vfenezbs_s8, s390_vfenezfs_u32b, BT_FN_INT_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_cmpne_or_0_idx_cc, s390_vfenezbs_s8, s390_vfenezfs_u32b, B_VX, BT_FN_INT_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vfenezbs_s8, s390_vfenezbs, 0, BT_OV_V16QI_V16QI_V16QI_INTPTR)
OB_DEF_VAR (s390_vfenezbs_u8a, s390_vfenezbs, 0, BT_OV_UV16QI_BV16QI_BV16QI_INTPTR)
OB_DEF_VAR (s390_vfenezbs_u8b, s390_vfenezbs, 0, BT_OV_UV16QI_UV16QI_UV16QI_INTPTR)
@@ -2357,14 +2350,14 @@ OB_DEF_VAR (s390_vfenezfs_s32, s390_vfenezfs, 0,
OB_DEF_VAR (s390_vfenezfs_u32a, s390_vfenezfs, 0, BT_OV_UV4SI_BV4SI_BV4SI_INTPTR)
OB_DEF_VAR (s390_vfenezfs_u32b, s390_vfenezfs, 0, BT_OV_UV4SI_UV4SI_UV4SI_INTPTR)
-B_DEF (s390_vistrb, vistrv16qi, 0, 0, BT_FN_UV16QI_UV16QI)
-B_DEF (s390_vistrh, vistrv8hi, 0, 0, BT_FN_UV8HI_UV8HI)
-B_DEF (s390_vistrf, vistrv4si, 0, 0, BT_FN_UV4SI_UV4SI)
-B_DEF (s390_vistrbs, vistrsv16qi, 0, 0, BT_FN_UV16QI_UV16QI_INTPTR)
-B_DEF (s390_vistrhs, vistrsv8hi, 0, 0, BT_FN_UV8HI_UV8HI_INTPTR)
-B_DEF (s390_vistrfs, vistrsv4si, 0, 0, BT_FN_UV4SI_UV4SI_INTPTR)
+B_DEF (s390_vistrb, vistrv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI)
+B_DEF (s390_vistrh, vistrv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI)
+B_DEF (s390_vistrf, vistrv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI)
+B_DEF (s390_vistrbs, vistrsv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_INTPTR)
+B_DEF (s390_vistrhs, vistrsv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_INTPTR)
+B_DEF (s390_vistrfs, vistrsv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_INTPTR)
-OB_DEF (s390_vec_cp_until_zero, s390_vistrb_s8, s390_vistrf_u32, BT_FN_OV4SI_OV4SI)
+OB_DEF (s390_vec_cp_until_zero, s390_vistrb_s8, s390_vistrf_u32, B_VX, BT_FN_OV4SI_OV4SI)
OB_DEF_VAR (s390_vistrb_s8, s390_vistrb, 0, BT_OV_V16QI_V16QI)
OB_DEF_VAR (s390_vistrb_b8, s390_vistrb, 0, BT_OV_BV16QI_BV16QI)
OB_DEF_VAR (s390_vistrb_u8, s390_vistrb, 0, BT_OV_UV16QI_UV16QI)
@@ -2375,7 +2368,7 @@ OB_DEF_VAR (s390_vistrf_s32, s390_vistrf, 0,
OB_DEF_VAR (s390_vistrf_b32, s390_vistrf, 0, BT_OV_BV4SI_BV4SI)
OB_DEF_VAR (s390_vistrf_u32, s390_vistrf, 0, BT_OV_UV4SI_UV4SI)
-OB_DEF (s390_vec_cp_until_zero_cc, s390_vistrbs_s8, s390_vistrfs_u32, BT_FN_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_cp_until_zero_cc, s390_vistrbs_s8, s390_vistrfs_u32, B_VX, BT_FN_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vistrbs_s8, s390_vistrbs, 0, BT_OV_V16QI_V16QI_INTPTR)
OB_DEF_VAR (s390_vistrbs_b8, s390_vistrbs, 0, BT_OV_BV16QI_BV16QI_INTPTR)
OB_DEF_VAR (s390_vistrbs_u8, s390_vistrbs, 0, BT_OV_UV16QI_UV16QI_INTPTR)
@@ -2386,101 +2379,101 @@ OB_DEF_VAR (s390_vistrfs_s32, s390_vistrfs, 0,
OB_DEF_VAR (s390_vistrfs_b32, s390_vistrfs, 0, BT_OV_BV4SI_BV4SI_INTPTR)
OB_DEF_VAR (s390_vistrfs_u32, s390_vistrfs, 0, BT_OV_UV4SI_UV4SI_INTPTR)
-B_DEF (s390_vstrcb, vstrcv16qi, 0, O4_U4, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INT)
-B_DEF (s390_vstrch, vstrcv8hi, 0, O4_U4, BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT)
-B_DEF (s390_vstrcf, vstrcv4si, 0, O4_U4, BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT)
-B_DEF (s390_vstrczb, vstrczv16qi, 0, O4_U4, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INT)
-B_DEF (s390_vstrczh, vstrczv8hi, 0, O4_U4, BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT)
-B_DEF (s390_vstrczf, vstrczv4si, 0, O4_U4, BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT)
-B_DEF (s390_vstrcbs, vstrcsv16qi, 0, O4_U4, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INT_INTPTR)
-B_DEF (s390_vstrchs, vstrcsv8hi, 0, O4_U4, BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT_INTPTR)
-B_DEF (s390_vstrcfs, vstrcsv4si, 0, O4_U4, BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT_INTPTR)
-B_DEF (s390_vstrczbs, vstrczsv16qi, 0, O4_U4, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INT_INTPTR)
-B_DEF (s390_vstrczhs, vstrczsv8hi, 0, O4_U4, BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT_INTPTR)
-B_DEF (s390_vstrczfs, vstrczsv4si, 0, O4_U4, BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT_INTPTR)
-
-OB_DEF (s390_vec_cmprg_idx, s390_vstrcb_idx_u8, s390_vstrcf_idx_u32,BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
+B_DEF (s390_vstrcb, vstrcv16qi, 0, B_VX, O4_U4, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INT)
+B_DEF (s390_vstrch, vstrcv8hi, 0, B_VX, O4_U4, BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT)
+B_DEF (s390_vstrcf, vstrcv4si, 0, B_VX, O4_U4, BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT)
+B_DEF (s390_vstrczb, vstrczv16qi, 0, B_VX, O4_U4, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INT)
+B_DEF (s390_vstrczh, vstrczv8hi, 0, B_VX, O4_U4, BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT)
+B_DEF (s390_vstrczf, vstrczv4si, 0, B_VX, O4_U4, BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT)
+B_DEF (s390_vstrcbs, vstrcsv16qi, 0, B_VX, O4_U4, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INT_INTPTR)
+B_DEF (s390_vstrchs, vstrcsv8hi, 0, B_VX, O4_U4, BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT_INTPTR)
+B_DEF (s390_vstrcfs, vstrcsv4si, 0, B_VX, O4_U4, BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT_INTPTR)
+B_DEF (s390_vstrczbs, vstrczsv16qi, 0, B_VX, O4_U4, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INT_INTPTR)
+B_DEF (s390_vstrczhs, vstrczsv8hi, 0, B_VX, O4_U4, BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT_INTPTR)
+B_DEF (s390_vstrczfs, vstrczsv4si, 0, B_VX, O4_U4, BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT_INTPTR)
+
+OB_DEF (s390_vec_cmprg_idx, s390_vstrcb_idx_u8, s390_vstrcf_idx_u32,B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vstrcb_idx_u8, s390_vstrcb, 0, BT_OV_UV16QI_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vstrch_idx_u16, s390_vstrch, 0, BT_OV_UV8HI_UV8HI_UV8HI_UV8HI)
OB_DEF_VAR (s390_vstrcf_idx_u32, s390_vstrcf, 0, BT_OV_UV4SI_UV4SI_UV4SI_UV4SI)
-OB_DEF (s390_vec_cmpnrg_idx, s390_vstrcb_inv_idx_u8,s390_vstrcf_inv_idx_u32,BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_cmpnrg_idx, s390_vstrcb_inv_idx_u8,s390_vstrcf_inv_idx_u32,B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vstrcb_inv_idx_u8, s390_vstrcb, 0, BT_OV_UV16QI_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vstrch_inv_idx_u16, s390_vstrch, 0, BT_OV_UV8HI_UV8HI_UV8HI_UV8HI)
OB_DEF_VAR (s390_vstrcf_inv_idx_u32, s390_vstrcf, 0, BT_OV_UV4SI_UV4SI_UV4SI_UV4SI)
-OB_DEF (s390_vec_cmprg_or_0_idx, s390_vstrczb_idx_u8,s390_vstrczf_idx_u32,BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_cmprg_or_0_idx, s390_vstrczb_idx_u8,s390_vstrczf_idx_u32,B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vstrczb_idx_u8, s390_vstrczb, 0, BT_OV_UV16QI_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vstrczh_idx_u16, s390_vstrczh, 0, BT_OV_UV8HI_UV8HI_UV8HI_UV8HI)
OB_DEF_VAR (s390_vstrczf_idx_u32, s390_vstrczf, 0, BT_OV_UV4SI_UV4SI_UV4SI_UV4SI)
-OB_DEF (s390_vec_cmpnrg_or_0_idx, s390_vstrczb_inv_idx_u8,s390_vstrczf_inv_idx_u32,BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_cmpnrg_or_0_idx, s390_vstrczb_inv_idx_u8,s390_vstrczf_inv_idx_u32,B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vstrczb_inv_idx_u8, s390_vstrczb, 0, BT_OV_UV16QI_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vstrczh_inv_idx_u16, s390_vstrczh, 0, BT_OV_UV8HI_UV8HI_UV8HI_UV8HI)
OB_DEF_VAR (s390_vstrczf_inv_idx_u32, s390_vstrczf, 0, BT_OV_UV4SI_UV4SI_UV4SI_UV4SI)
-OB_DEF (s390_vec_cmprg, s390_vstrcb_u8, s390_vstrcf_u32, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_cmprg, s390_vstrcb_u8, s390_vstrcf_u32, B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vstrcb_u8, s390_vstrcb, 0, BT_OV_BV16QI_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vstrch_u16, s390_vstrch, 0, BT_OV_BV8HI_UV8HI_UV8HI_UV8HI)
OB_DEF_VAR (s390_vstrcf_u32, s390_vstrcf, 0, BT_OV_BV4SI_UV4SI_UV4SI_UV4SI)
-OB_DEF (s390_vec_cmpnrg, s390_vstrcb_inv_u8, s390_vstrcf_inv_u32,BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
+OB_DEF (s390_vec_cmpnrg, s390_vstrcb_inv_u8, s390_vstrcf_inv_u32,B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI)
OB_DEF_VAR (s390_vstrcb_inv_u8, s390_vstrcb, 0, BT_OV_BV16QI_UV16QI_UV16QI_UV16QI)
OB_DEF_VAR (s390_vstrch_inv_u16, s390_vstrch, 0, BT_OV_BV8HI_UV8HI_UV8HI_UV8HI)
OB_DEF_VAR (s390_vstrcf_inv_u32, s390_vstrcf, 0, BT_OV_BV4SI_UV4SI_UV4SI_UV4SI)
-OB_DEF (s390_vec_cmprg_idx_cc, s390_vstrcbs_idx_u8,s390_vstrcfs_idx_u32,BT_FN_OV4SI_OV4SI_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_cmprg_idx_cc, s390_vstrcbs_idx_u8,s390_vstrcfs_idx_u32,B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vstrcbs_idx_u8, s390_vstrcbs, 0, BT_OV_UV16QI_UV16QI_UV16QI_UV16QI_INTPTR)
OB_DEF_VAR (s390_vstrchs_idx_u16, s390_vstrchs, 0, BT_OV_UV8HI_UV8HI_UV8HI_UV8HI_INTPTR)
OB_DEF_VAR (s390_vstrcfs_idx_u32, s390_vstrcfs, 0, BT_OV_UV4SI_UV4SI_UV4SI_UV4SI_INTPTR)
-OB_DEF (s390_vec_cmpnrg_idx_cc, s390_vstrcbs_inv_idx_u8,s390_vstrcfs_inv_idx_u32,BT_FN_OV4SI_OV4SI_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_cmpnrg_idx_cc, s390_vstrcbs_inv_idx_u8,s390_vstrcfs_inv_idx_u32,B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vstrcbs_inv_idx_u8, s390_vstrcbs, 0, BT_OV_UV16QI_UV16QI_UV16QI_UV16QI_INTPTR) /* vstrcb */
OB_DEF_VAR (s390_vstrchs_inv_idx_u16, s390_vstrchs, 0, BT_OV_UV8HI_UV8HI_UV8HI_UV8HI_INTPTR) /* vstrch */
OB_DEF_VAR (s390_vstrcfs_inv_idx_u32, s390_vstrcfs, 0, BT_OV_UV4SI_UV4SI_UV4SI_UV4SI_INTPTR) /* vstrcf */
-OB_DEF (s390_vec_cmprg_or_0_idx_cc, s390_vstrczbs_idx_u8,s390_vstrczfs_idx_u32,BT_FN_OV4SI_OV4SI_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_cmprg_or_0_idx_cc, s390_vstrczbs_idx_u8,s390_vstrczfs_idx_u32,B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vstrczbs_idx_u8, s390_vstrczbs, 0, BT_OV_UV16QI_UV16QI_UV16QI_UV16QI_INTPTR)
OB_DEF_VAR (s390_vstrczhs_idx_u16, s390_vstrczhs, 0, BT_OV_UV8HI_UV8HI_UV8HI_UV8HI_INTPTR)
OB_DEF_VAR (s390_vstrczfs_idx_u32, s390_vstrczfs, 0, BT_OV_UV4SI_UV4SI_UV4SI_UV4SI_INTPTR)
-OB_DEF (s390_vec_cmpnrg_or_0_idx_cc,s390_vstrczbs_inv_idx_u8,s390_vstrczfs_inv_idx_u32,BT_FN_OV4SI_OV4SI_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_cmpnrg_or_0_idx_cc,s390_vstrczbs_inv_idx_u8,s390_vstrczfs_inv_idx_u32,B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vstrczbs_inv_idx_u8, s390_vstrczbs, 0, BT_OV_UV16QI_UV16QI_UV16QI_UV16QI_INTPTR)
OB_DEF_VAR (s390_vstrczhs_inv_idx_u16, s390_vstrczhs, 0, BT_OV_UV8HI_UV8HI_UV8HI_UV8HI_INTPTR)
OB_DEF_VAR (s390_vstrczfs_inv_idx_u32, s390_vstrczfs, 0, BT_OV_UV4SI_UV4SI_UV4SI_UV4SI_INTPTR)
-OB_DEF (s390_vec_cmprg_cc, s390_vstrcbs_u8, s390_vstrcfs_u32, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_cmprg_cc, s390_vstrcbs_u8, s390_vstrcfs_u32, B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vstrcbs_u8, s390_vstrcbs, 0, BT_OV_BV16QI_UV16QI_UV16QI_UV16QI_INTPTR)
OB_DEF_VAR (s390_vstrchs_u16, s390_vstrchs, 0, BT_OV_BV8HI_UV8HI_UV8HI_UV8HI_INTPTR)
OB_DEF_VAR (s390_vstrcfs_u32, s390_vstrcfs, 0, BT_OV_BV4SI_UV4SI_UV4SI_UV4SI_INTPTR)
-OB_DEF (s390_vec_cmpnrg_cc, s390_vstrcbs_inv_u8,s390_vstrcfs_inv_u32,BT_FN_OV4SI_OV4SI_OV4SI_OV4SI_INTPTR)
+OB_DEF (s390_vec_cmpnrg_cc, s390_vstrcbs_inv_u8,s390_vstrcfs_inv_u32,B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI_INTPTR)
OB_DEF_VAR (s390_vstrcbs_inv_u8, s390_vstrcbs, 0, BT_OV_BV16QI_UV16QI_UV16QI_UV16QI_INTPTR)
OB_DEF_VAR (s390_vstrchs_inv_u16, s390_vstrchs, 0, BT_OV_BV8HI_UV8HI_UV8HI_UV8HI_INTPTR)
OB_DEF_VAR (s390_vstrcfs_inv_u32, s390_vstrcfs, 0, BT_OV_BV4SI_UV4SI_UV4SI_UV4SI_INTPTR)
-B_DEF (s390_vec_all_nge, vec_all_unltv2df, 0, 0, BT_FN_INT_V2DF_V2DF)
-B_DEF (s390_vec_all_ngt, vec_all_unlev2df, 0, 0, BT_FN_INT_V2DF_V2DF)
-B_DEF (s390_vec_any_nge, vec_any_unltv2df, 0, 0, BT_FN_INT_V2DF_V2DF)
-B_DEF (s390_vec_any_ngt, vec_any_unlev2df, 0, 0, BT_FN_INT_V2DF_V2DF)
+B_DEF (s390_vec_all_nge, vec_all_unltv2df, 0, B_VX, 0, BT_FN_INT_V2DF_V2DF)
+B_DEF (s390_vec_all_ngt, vec_all_unlev2df, 0, B_VX, 0, BT_FN_INT_V2DF_V2DF)
+B_DEF (s390_vec_any_nge, vec_any_unltv2df, 0, B_VX, 0, BT_FN_INT_V2DF_V2DF)
+B_DEF (s390_vec_any_ngt, vec_any_unlev2df, 0, B_VX, 0, BT_FN_INT_V2DF_V2DF)
-OB_DEF (s390_vec_ctd, s390_vec_ctd_s64, s390_vec_ctd_u64, BT_FN_V2DF_UV4SI_INT)
+OB_DEF (s390_vec_ctd, s390_vec_ctd_s64, s390_vec_ctd_u64, B_VX, BT_FN_V2DF_UV4SI_INT)
OB_DEF_VAR (s390_vec_ctd_s64, s390_vec_ctd_s64, O2_U5, BT_OV_V2DF_V2DI_INT) /* vcdgb */
OB_DEF_VAR (s390_vec_ctd_u64, s390_vec_ctd_u64, O2_U5, BT_OV_V2DF_UV2DI_INT) /* vcdlgb */
-B_DEF (s390_vec_ctd_s64, vec_ctd_s64, 0, O2_U5, BT_FN_V2DF_V2DI_INT) /* vcdgb */
-B_DEF (s390_vec_ctd_u64, vec_ctd_u64, 0, O2_U5, BT_FN_V2DF_UV2DI_INT) /* vcdlgb */
-B_DEF (s390_vcdgb, vec_di_to_df_s64, 0, O2_U5, BT_FN_V2DF_V2DI_INT)
-B_DEF (s390_vcdlgb, vec_di_to_df_u64, 0, O2_U5, BT_FN_V2DF_UV2DI_INT)
-B_DEF (s390_vec_ctsl, vec_ctsl, 0, O2_U5, BT_FN_V2DI_V2DF_INT) /* vcgdb */
-B_DEF (s390_vec_ctul, vec_ctul, 0, O2_U5, BT_FN_UV2DI_V2DF_INT) /* vclgdb */
-B_DEF (s390_vcgdb, vec_df_to_di_s64, 0, O2_U5, BT_FN_V2DI_V2DF_INT)
-B_DEF (s390_vclgdb, vec_df_to_di_u64, 0, O2_U5, BT_FN_UV2DI_V2DF_INT)
-B_DEF (s390_vfidb, vfidb, 0, O2_U4 | O3_U4, BT_FN_V2DF_V2DF_UCHAR_UCHAR)
-B_DEF (s390_vec_ld2f, vec_ld2f, 0, 0, BT_FN_V2DF_FLTCONSTPTR) /* vldeb */
-B_DEF (s390_vec_st2f, vec_st2f, 0, 0, BT_FN_VOID_V2DF_FLTPTR) /* vledb */
-B_DEF (s390_vfmadb, fmav2df4, 0, 0, BT_FN_V2DF_V2DF_V2DF_V2DF)
-B_DEF (s390_vfmsdb, fmsv2df4, 0, 0, BT_FN_V2DF_V2DF_V2DF_V2DF)
-B_DEF (s390_vflndb, vec_nabs, 0, 0, BT_FN_V2DF_V2DF)
-B_DEF (s390_vfsqdb, sqrtv2df2, 0, 0, BT_FN_V2DF_V2DF)
-B_DEF (s390_vftcidb, vftcidb, 0, O2_U12, BT_FN_V2DI_V2DF_INT_INTPTR)
+B_DEF (s390_vec_ctd_s64, vec_ctd_s64, 0, B_VX, O2_U5, BT_FN_V2DF_V2DI_INT) /* vcdgb */
+B_DEF (s390_vec_ctd_u64, vec_ctd_u64, 0, B_VX, O2_U5, BT_FN_V2DF_UV2DI_INT) /* vcdlgb */
+B_DEF (s390_vcdgb, vec_di_to_df_s64, 0, B_VX, O2_U5, BT_FN_V2DF_V2DI_INT)
+B_DEF (s390_vcdlgb, vec_di_to_df_u64, 0, B_VX, O2_U5, BT_FN_V2DF_UV2DI_INT)
+B_DEF (s390_vec_ctsl, vec_ctsl, 0, B_VX, O2_U5, BT_FN_V2DI_V2DF_INT) /* vcgdb */
+B_DEF (s390_vec_ctul, vec_ctul, 0, B_VX, O2_U5, BT_FN_UV2DI_V2DF_INT) /* vclgdb */
+B_DEF (s390_vcgdb, vec_df_to_di_s64, 0, B_VX, O2_U5, BT_FN_V2DI_V2DF_INT)
+B_DEF (s390_vclgdb, vec_df_to_di_u64, 0, B_VX, O2_U5, BT_FN_UV2DI_V2DF_INT)
+B_DEF (s390_vfidb, vfidb, 0, B_VX, O2_U4 | O3_U4, BT_FN_V2DF_V2DF_UCHAR_UCHAR)
+B_DEF (s390_vec_ld2f, vec_ld2f, 0, B_VX, 0, BT_FN_V2DF_FLTCONSTPTR) /* vldeb */
+B_DEF (s390_vec_st2f, vec_st2f, 0, B_VX, 0, BT_FN_VOID_V2DF_FLTPTR) /* vledb */
+B_DEF (s390_vfmadb, fmav2df4, 0, B_VX, 0, BT_FN_V2DF_V2DF_V2DF_V2DF)
+B_DEF (s390_vfmsdb, fmsv2df4, 0, B_VX, 0, BT_FN_V2DF_V2DF_V2DF_V2DF)
+B_DEF (s390_vflndb, vec_nabs, 0, B_VX, 0, BT_FN_V2DF_V2DF)
+B_DEF (s390_vfsqdb, sqrtv2df2, 0, B_VX, 0, BT_FN_V2DF_V2DF)
+B_DEF (s390_vftcidb, vftcidb, 0, B_VX, O2_U12, BT_FN_V2DI_V2DF_INT_INTPTR)
diff --git a/gcc/config/s390/s390-builtins.h b/gcc/config/s390/s390-builtins.h
index 043c098..f8f010d 100644
--- a/gcc/config/s390/s390-builtins.h
+++ b/gcc/config/s390/s390-builtins.h
@@ -35,11 +35,11 @@ enum s390_builtin_type_index
#undef DEF_OPAQUE_VECTOR_TYPE
#undef DEF_FN_TYPE
#undef DEF_OV_TYPE
-#define DEF_TYPE(INDEX, NODE, CONST_P) INDEX,
-#define DEF_POINTER_TYPE(INDEX, INDEX2) INDEX,
-#define DEF_DISTINCT_TYPE(INDEX, INDEX2) INDEX,
-#define DEF_VECTOR_TYPE(INDEX, INDEX2, ELEMENTS) INDEX,
-#define DEF_OPAQUE_VECTOR_TYPE(INDEX, INDEX2, ELEMENTS) INDEX,
+#define DEF_TYPE(INDEX, ...) INDEX,
+#define DEF_POINTER_TYPE(INDEX, ...) INDEX,
+#define DEF_DISTINCT_TYPE(INDEX, ...) INDEX,
+#define DEF_VECTOR_TYPE(INDEX, ...) INDEX,
+#define DEF_OPAQUE_VECTOR_TYPE(INDEX, ...) INDEX,
#define DEF_FN_TYPE(...)
#define DEF_OV_TYPE(...)
#include "s390-builtin-types.def"
@@ -139,20 +139,35 @@ S390_OVERLOADED_BUILTIN_VAR_MAX
(S390_BUILTIN_MAX + S390_OVERLOADED_BUILTIN_MAX + \
S390_OVERLOADED_BUILTIN_VAR_MAX)
-extern const unsigned int flags_builtin[S390_BUILTIN_MAX + 1];
+extern const unsigned int bflags_builtin[S390_BUILTIN_MAX + 1];
+extern const unsigned int opflags_builtin[S390_BUILTIN_MAX + 1];
+
+extern const unsigned int
+ bflags_overloaded_builtin[S390_OVERLOADED_BUILTIN_MAX + 1];
extern const unsigned int
- flags_overloaded_builtin_var[S390_OVERLOADED_BUILTIN_VAR_MAX + 1];
+ opflags_overloaded_builtin_var[S390_OVERLOADED_BUILTIN_VAR_MAX + 1];
+
+static inline unsigned int
+bflags_for_builtin (int fcode)
+{
+ if (fcode >= S390_OVERLOADED_BUILTIN_VAR_OFFSET)
+ gcc_unreachable ();
+ else if (fcode >= S390_OVERLOADED_BUILTIN_OFFSET)
+ return bflags_overloaded_builtin[fcode - S390_BUILTIN_MAX];
+ else
+ return bflags_builtin[fcode];
+}
static inline unsigned int
-flags_for_builtin (int fcode)
+opflags_for_builtin (int fcode)
{
if (fcode >= S390_OVERLOADED_BUILTIN_VAR_OFFSET)
- return flags_overloaded_builtin_var[fcode -
- S390_OVERLOADED_BUILTIN_VAR_OFFSET];
+ return opflags_overloaded_builtin_var[fcode -
+ S390_OVERLOADED_BUILTIN_VAR_OFFSET];
else if (fcode >= S390_OVERLOADED_BUILTIN_OFFSET)
gcc_unreachable ();
else
- return flags_builtin[fcode];
+ return opflags_builtin[fcode];
}
extern tree s390_builtin_decls[S390_BUILTIN_MAX +
diff --git a/gcc/config/s390/s390-c.c b/gcc/config/s390/s390-c.c
index 8ad42f1..195a020 100644
--- a/gcc/config/s390/s390-c.c
+++ b/gcc/config/s390/s390-c.c
@@ -86,7 +86,7 @@ desc_start_for_overloaded_builtin[S390_OVERLOADED_BUILTIN_MAX + 1] =
#undef OB_DEF
#undef OB_DEF_VAR
#define B_DEF(...)
-#define OB_DEF(NAME, FIRST_VAR_NAME, LAST_VAR_NAME, FNTYPE) \
+#define OB_DEF(NAME, FIRST_VAR_NAME,...) \
S390_OVERLOADED_BUILTIN_VAR_##FIRST_VAR_NAME,
#define OB_DEF_VAR(...)
#include "s390-builtins.def"
@@ -103,7 +103,7 @@ desc_end_for_overloaded_builtin[S390_OVERLOADED_BUILTIN_MAX + 1] =
#undef OB_DEF
#undef OB_DEF_VAR
#define B_DEF(...)
-#define OB_DEF(NAME, FIRST_VAR_NAME, LAST_VAR_NAME, FNTYPE) \
+#define OB_DEF(NAME, FIRST_VAR_NAME, LAST_VAR_NAME,...) \
S390_OVERLOADED_BUILTIN_VAR_##LAST_VAR_NAME,
#define OB_DEF_VAR(...)
#include "s390-builtins.def"
@@ -130,7 +130,8 @@ s390_builtin_ov_types[BT_OV_MAX][MAX_OV_OPERANDS] =
#include "s390-builtin-types.def"
};
-static const enum s390_builtins bt_for_overloaded_builtin_var[S390_OVERLOADED_BUILTIN_VAR_MAX] = {
+static const enum s390_builtins
+bt_for_overloaded_builtin_var[S390_OVERLOADED_BUILTIN_VAR_MAX] = {
#undef B_DEF
#undef OB_DEF
#undef OB_DEF_VAR
@@ -755,7 +756,7 @@ s390_resolve_overloaded_builtin (location_t loc,
/* 0...S390_BUILTIN_MAX-1 is for non-overloaded builtins. */
if (ob_fcode < S390_BUILTIN_MAX)
{
- if (flags_for_builtin(ob_fcode) & B_INT)
+ if (bflags_for_builtin(ob_fcode) & B_INT)
{
error_at (loc,
"Builtin %qF is for GCC internal use only.",
@@ -839,7 +840,7 @@ s390_resolve_overloaded_builtin (location_t loc,
else
target_builtin_decl = s390_builtin_decls[bt_for_overloaded_builtin_var[last_match_index]];
- all_op_flags = flags_overloaded_builtin_var[last_match_index];
+ all_op_flags = opflags_overloaded_builtin_var[last_match_index];
return_type = s390_builtin_types[s390_builtin_ov_types[last_match_fntype_index][0]];
/* Check for the operand flags in the overloaded builtin variant. */
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index a5aab5d..f2cab33 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -556,19 +556,44 @@ s390_check_type_for_vector_abi (const_tree type, bool arg_p, bool in_struct_p)
#include "s390-builtins.h"
-const unsigned int flags_builtin[S390_BUILTIN_MAX + 1] =
+const unsigned int bflags_builtin[S390_BUILTIN_MAX + 1] =
{
#undef B_DEF
#undef OB_DEF
#undef OB_DEF_VAR
-#define B_DEF(NAME, PATTERN, ATTRS, FLAGS, FNTYPE) FLAGS,
+#define B_DEF(NAME, PATTERN, ATTRS, BFLAGS, ...) BFLAGS,
#define OB_DEF(...)
#define OB_DEF_VAR(...)
#include "s390-builtins.def"
0
};
-const unsigned int flags_overloaded_builtin_var[S390_OVERLOADED_BUILTIN_VAR_MAX + 1] =
+const unsigned int opflags_builtin[S390_BUILTIN_MAX + 1] =
+ {
+#undef B_DEF
+#undef OB_DEF
+#undef OB_DEF_VAR
+#define B_DEF(NAME, PATTERN, ATTRS, BFLAGS, OPFLAGS, ...) OPFLAGS,
+#define OB_DEF(...)
+#define OB_DEF_VAR(...)
+#include "s390-builtins.def"
+ 0
+ };
+
+const unsigned int bflags_overloaded_builtin[S390_OVERLOADED_BUILTIN_MAX + 1] =
+ {
+#undef B_DEF
+#undef OB_DEF
+#undef OB_DEF_VAR
+#define B_DEF(...)
+#define OB_DEF(NAME, FIRST_VAR_NAME, LAST_VAR_NAME, BFLAGS, ...) BFLAGS,
+#define OB_DEF_VAR(...)
+#include "s390-builtins.def"
+ 0
+ };
+
+const unsigned int
+opflags_overloaded_builtin_var[S390_OVERLOADED_BUILTIN_VAR_MAX + 1] =
{
#undef B_DEF
#undef OB_DEF
@@ -606,6 +631,10 @@ s390_init_builtins (void)
NULL, NULL);
tree noreturn_attr = tree_cons (get_identifier ("noreturn"), NULL, NULL);
tree c_uint64_type_node;
+ unsigned int bflags_mask = (BFLAGS_MASK_INIT);
+
+ bflags_mask |= (TARGET_VX) ? B_VX : 0;
+ bflags_mask |= (TARGET_HTM) ? B_HTM : 0;
/* The uint64_type_node from tree.c is not compatible to the C99
uint64_t data type. What we want is c_uint64_type_node from
@@ -617,56 +646,64 @@ s390_init_builtins (void)
c_uint64_type_node = long_long_unsigned_type_node;
#undef DEF_TYPE
-#define DEF_TYPE(INDEX, NODE, CONST_P) \
- s390_builtin_types[INDEX] = (!CONST_P) ? \
- (NODE) : build_type_variant ((NODE), 1, 0);
+#define DEF_TYPE(INDEX, BFLAGS, NODE, CONST_P) \
+ if ((BFLAGS) == 0 || ((BFLAGS) & bflags_mask)) \
+ s390_builtin_types[INDEX] = (!CONST_P) ? \
+ (NODE) : build_type_variant ((NODE), 1, 0);
#undef DEF_POINTER_TYPE
-#define DEF_POINTER_TYPE(INDEX, INDEX_BASE) \
- s390_builtin_types[INDEX] = \
- build_pointer_type (s390_builtin_types[INDEX_BASE]);
+#define DEF_POINTER_TYPE(INDEX, BFLAGS, INDEX_BASE) \
+ if ((BFLAGS) == 0 || ((BFLAGS) & bflags_mask)) \
+ s390_builtin_types[INDEX] = \
+ build_pointer_type (s390_builtin_types[INDEX_BASE]);
#undef DEF_DISTINCT_TYPE
-#define DEF_DISTINCT_TYPE(INDEX, INDEX_BASE) \
- s390_builtin_types[INDEX] = \
- build_distinct_type_copy (s390_builtin_types[INDEX_BASE]);
+#define DEF_DISTINCT_TYPE(INDEX, BFLAGS, INDEX_BASE) \
+ if ((BFLAGS) == 0 || ((BFLAGS) & bflags_mask)) \
+ s390_builtin_types[INDEX] = \
+ build_distinct_type_copy (s390_builtin_types[INDEX_BASE]);
#undef DEF_VECTOR_TYPE
-#define DEF_VECTOR_TYPE(INDEX, INDEX_BASE, ELEMENTS) \
- s390_builtin_types[INDEX] = \
- build_vector_type (s390_builtin_types[INDEX_BASE], ELEMENTS);
+#define DEF_VECTOR_TYPE(INDEX, BFLAGS, INDEX_BASE, ELEMENTS) \
+ if ((BFLAGS) == 0 || ((BFLAGS) & bflags_mask)) \
+ s390_builtin_types[INDEX] = \
+ build_vector_type (s390_builtin_types[INDEX_BASE], ELEMENTS);
#undef DEF_OPAQUE_VECTOR_TYPE
-#define DEF_OPAQUE_VECTOR_TYPE(INDEX, INDEX_BASE, ELEMENTS) \
- s390_builtin_types[INDEX] = \
- build_opaque_vector_type (s390_builtin_types[INDEX_BASE], ELEMENTS);
+#define DEF_OPAQUE_VECTOR_TYPE(INDEX, BFLAGS, INDEX_BASE, ELEMENTS) \
+ if ((BFLAGS) == 0 || ((BFLAGS) & bflags_mask)) \
+ s390_builtin_types[INDEX] = \
+ build_opaque_vector_type (s390_builtin_types[INDEX_BASE], ELEMENTS);
#undef DEF_FN_TYPE
-#define DEF_FN_TYPE(INDEX, args...) \
- s390_builtin_fn_types[INDEX] = \
+#define DEF_FN_TYPE(INDEX, BFLAGS, args...) \
+ if ((BFLAGS) == 0 || ((BFLAGS) & bflags_mask)) \
+ s390_builtin_fn_types[INDEX] = \
build_function_type_list (args, NULL_TREE);
#undef DEF_OV_TYPE
#define DEF_OV_TYPE(...)
#include "s390-builtin-types.def"
#undef B_DEF
-#define B_DEF(NAME, PATTERN, ATTRS, FLAGS, FNTYPE) \
- s390_builtin_decls[S390_BUILTIN_##NAME] = \
- add_builtin_function ("__builtin_" #NAME, \
- s390_builtin_fn_types[FNTYPE], \
- S390_BUILTIN_##NAME, \
- BUILT_IN_MD, \
- NULL, \
- ATTRS);
+#define B_DEF(NAME, PATTERN, ATTRS, BFLAGS, OPFLAGS, FNTYPE) \
+ if (((BFLAGS) & ~bflags_mask) == 0) \
+ s390_builtin_decls[S390_BUILTIN_##NAME] = \
+ add_builtin_function ("__builtin_" #NAME, \
+ s390_builtin_fn_types[FNTYPE], \
+ S390_BUILTIN_##NAME, \
+ BUILT_IN_MD, \
+ NULL, \
+ ATTRS);
#undef OB_DEF
-#define OB_DEF(NAME, FIRST_VAR_NAME, LAST_VAR_NAME, FNTYPE) \
- s390_builtin_decls[S390_OVERLOADED_BUILTIN_##NAME + S390_BUILTIN_MAX] = \
- add_builtin_function ("__builtin_" #NAME, \
- s390_builtin_fn_types[FNTYPE], \
- S390_OVERLOADED_BUILTIN_##NAME + S390_BUILTIN_MAX, \
- BUILT_IN_MD, \
- NULL, \
- 0);
+#define OB_DEF(NAME, FIRST_VAR_NAME, LAST_VAR_NAME, BFLAGS, FNTYPE) \
+ if (((BFLAGS) & ~bflags_mask) == 0) \
+ s390_builtin_decls[S390_OVERLOADED_BUILTIN_##NAME + S390_BUILTIN_MAX] = \
+ add_builtin_function ("__builtin_" #NAME, \
+ s390_builtin_fn_types[FNTYPE], \
+ S390_OVERLOADED_BUILTIN_##NAME + S390_BUILTIN_MAX, \
+ BUILT_IN_MD, \
+ NULL, \
+ 0);
#undef OB_DEF_VAR
#define OB_DEF_VAR(...)
#include "s390-builtins.def"
@@ -737,7 +774,7 @@ s390_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
bool nonvoid;
tree arg;
call_expr_arg_iterator iter;
- unsigned int all_op_flags = flags_for_builtin (fcode);
+ unsigned int all_op_flags = opflags_for_builtin (fcode);
machine_mode last_vec_mode = VOIDmode;
if (TARGET_DEBUG_ARG)
@@ -747,7 +784,6 @@ s390_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
(int)fcode, IDENTIFIER_POINTER (DECL_NAME (fndecl)));
}
-
if (fcode >= S390_OVERLOADED_BUILTIN_VAR_OFFSET
&& fcode < S390_ALL_BUILTIN_MAX)
{
--
1.7.9.5
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 4/8] S/390: Fix s390_secondary_reload register class check.
2015-06-24 6:57 [PATCH 0/8] S/390: z13 support fixes and improvements Andreas Krebbel
` (6 preceding siblings ...)
2015-06-24 6:58 ` [PATCH 5/8] S/390: Remove internal builtins from vecintrin.h Andreas Krebbel
@ 2015-06-24 7:10 ` Andreas Krebbel
7 siblings, 0 replies; 11+ messages in thread
From: Andreas Krebbel @ 2015-06-24 7:10 UTC (permalink / raw)
To: gcc-patches
The current check does not work as expected with mixed register
classes and also does not handle NO_REGS correctly.
gcc/ChangeLog:
* config/s390/s390.c (s390_secondary_reload): Fix check for
GENERAL_REGS register class.
---
gcc/config/s390/s390.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 80a2c89..a5aab5d 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -4045,7 +4045,7 @@ s390_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i,
if (MEM_P (x)
&& s390_loadrelative_operand_p (XEXP (x, 0), NULL, NULL)
&& (mode == QImode
- || !reg_classes_intersect_p (GENERAL_REGS, rclass)
+ || !reg_class_subset_p (rclass, GENERAL_REGS)
|| GET_MODE_SIZE (mode) > UNITS_PER_WORD
|| !s390_check_symref_alignment (XEXP (x, 0),
GET_MODE_SIZE (mode))))
--
1.7.9.5
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/8] S/390 Vector ABI GNU Attribute.
2015-06-24 6:57 ` [PATCH 1/8] S/390 Vector ABI GNU Attribute Andreas Krebbel
@ 2015-06-24 10:21 ` Richard Biener
2015-06-24 14:35 ` Andreas Krebbel
0 siblings, 1 reply; 11+ messages in thread
From: Richard Biener @ 2015-06-24 10:21 UTC (permalink / raw)
To: Andreas Krebbel; +Cc: GCC Patches
On Wed, Jun 24, 2015 at 8:57 AM, Andreas Krebbel
<krebbel@linux.vnet.ibm.com> wrote:
> With this patch .gnu_attribute is used to mark binaries with a vector
> ABI tag. This is required since the z13 vector support breaks the ABI
> of existing vector_size attribute generated vector types:
>
> 1. vector_size(16) and bigger vectors are aligned to 8 byte
> boundaries (formerly vectors were always naturally aligned)
>
> 2. vector_size(16) or smaller vectors are passed via VR if available
> or by value on the stack (formerly vector were passed on the stack by
> reference).
>
> The .gnu_attribute will be used by ld to emit a warning if binaries
> with incompatible ABIs are being linked together:
> https://sourceware.org/ml/binutils/2015-04/msg00316.html
>
> And it will be used by GDB to perform inferior function calls using a
> vector ABI which fits to the binary being debugged:
> https://sourceware.org/ml/gdb-patches/2015-04/msg00833.html
>
> The current implementation tries to only set the attribute if the
> vector types are really used in ABI relevant contexts in order to
> avoid false positives during linking.
>
> However, this unfortunately has some limitations like in the following
> case where an ABI relevant context cannot be detected properly:
>
> typedef int __attribute__((vector_size(16))) v4si;
> struct A
> {
> char x;
> v4si y;
> };
> char a[sizeof(struct A)];
>
> The number of elements in a depends on the ABI (24 with -mvx and 32
> with -mno-vx). However, the implementation is not able to detect this
> since the struct type is not used anywhere else and consequently does
> not survive until the checking code is able to see it.
>
> Ideas about how to improve the implementation without creating too
> many false postives are welcome.
I'd be more conservative and instead hook into
targetm.vector_mode_supported_p (and thus vector_type_mode).
Yes, it will trip on "local" vector types. But I can't see how you
can avoid this in general without seeing the whole program.
If I'd do it retro-actively I'd reverse the flag and instead mark units
which use generic non-z13 vectors...
Note that other targets simply emit -Wpsabi warnings here:
> gcc t.c -S -m32
t.c: In function ‘foo’:
t.c:4:1: warning: SSE vector return without SSE enabled changes the
ABI [-Wpsabi]
{
^
t.c:3:6: note: The ABI for passing parameters with 16-byte alignment
has changed in GCC 4.6
v4si foo (v4si x)
^
t.c:3:6: warning: SSE vector argument without SSE enabled changes the
ABI [-Wpsabi]
for
typedef int v4si __attribute__((vector_size(16)));
v4si foo (v4si x)
{
return x;
}
on i?86 without -msse2. So you could as well do that - warn for vector
type uses on non-z13 and be done with that.
Richard.
> In particular we do not want to set the attribute for local uses of
> vector types as they would be natural for ifunc optimizations.
>
> gcc/
> * config/s390/s390.c (s390_vector_abi): New variable definition.
> (s390_check_type_for_vector_abi): New function.
> (TARGET_ASM_FILE_END): New macro definition.
> (s390_asm_file_end): New function.
> (s390_function_arg): Call s390_check_type_for_vector_abi.
> (s390_gimplify_va_arg): Likewise.
> * configure: Regenerate.
> * configure.ac: Check for .gnu_attribute Binutils feature.
>
> gcc/testsuite/
> * gcc.target/s390/vector/vec-abi-1.c: Add gnu attribute check.
> * gcc.target/s390/vector/vec-abi-attr-1.c: New test.
> * gcc.target/s390/vector/vec-abi-attr-2.c: New test.
> * gcc.target/s390/vector/vec-abi-attr-3.c: New test.
> * gcc.target/s390/vector/vec-abi-attr-4.c: New test.
> * gcc.target/s390/vector/vec-abi-attr-5.c: New test.
> * gcc.target/s390/vector/vec-abi-attr-6.c: New test.
> ---
> gcc/config/s390/s390.c | 121 ++++++++++++++++++++
> gcc/configure | 36 ++++++
> gcc/configure.ac | 7 ++
> gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c | 1 +
> .../gcc.target/s390/vector/vec-abi-attr-1.c | 18 +++
> .../gcc.target/s390/vector/vec-abi-attr-2.c | 53 +++++++++
> .../gcc.target/s390/vector/vec-abi-attr-3.c | 18 +++
> .../gcc.target/s390/vector/vec-abi-attr-4.c | 17 +++
> .../gcc.target/s390/vector/vec-abi-attr-5.c | 19 +++
> .../gcc.target/s390/vector/vec-abi-attr-6.c | 24 ++++
> 10 files changed, 314 insertions(+)
> create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-1.c
> create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-2.c
> create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-3.c
> create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-4.c
> create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-5.c
> create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-6.c
>
> diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
> index d6ed179..934f7c0 100644
> --- a/gcc/config/s390/s390.c
> +++ b/gcc/config/s390/s390.c
> @@ -461,6 +461,97 @@ struct GTY(()) machine_function
> #define PREDICT_DISTANCE (TARGET_Z10 ? 384 : 2048)
>
>
> +/* Indicate which ABI has been used for passing vector args.
> + 0 - no vector type arguments have been passed where the ABI is relevant
> + 1 - the old ABI has been used
> + 2 - a vector type argument has been passed either in a vector register
> + or on the stack by value */
> +static int s390_vector_abi = 0;
> +
> +/* Set the vector ABI marker if TYPE is subject to the vector ABI
> + switch. The vector ABI affects only vector data types. There are
> + two aspects of the vector ABI relevant here:
> +
> + 1. vectors >= 16 bytes have an alignment of 8 bytes with the new
> + ABI and natural alignment with the old.
> +
> + 2. vector <= 16 bytes are passed in VRs or by value on the stack
> + with the new ABI but by reference on the stack with the old.
> +
> + If ARG_P is true TYPE is used for a function argument or return
> + value. The ABI marker then is set for all vector data types. If
> + ARG_P is false only type 1 vectors are being checked. */
> +
> +static void
> +s390_check_type_for_vector_abi (const_tree type, bool arg_p, bool in_struct_p)
> +{
> + static hash_set<const_tree> visited_types_hash;
> +
> + if (s390_vector_abi)
> + return;
> +
> + if (type == NULL_TREE || TREE_CODE (type) == ERROR_MARK)
> + return;
> +
> + if (visited_types_hash.contains (type))
> + return;
> +
> + visited_types_hash.add (type);
> +
> + if (VECTOR_TYPE_P (type))
> + {
> + int type_size = int_size_in_bytes (type);
> +
> + /* Outside arguments only the alignment is changing and this
> + only happens for vector types >= 16 bytes. */
> + if (!arg_p && type_size < 16)
> + return;
> +
> + /* In arguments vector types > 16 are passed as before (GCC
> + never enforced the bigger alignment for arguments which was
> + required by the old vector ABI). However, it might still be
> + ABI relevant due to the changed alignment if it is a struct
> + member. */
> + if (arg_p && type_size > 16 && !in_struct_p)
> + return;
> +
> + s390_vector_abi = TARGET_VX_ABI ? 2 : 1;
> + }
> + else if (POINTER_TYPE_P (type) || TREE_CODE (type) == ARRAY_TYPE)
> + {
> + /* ARRAY_TYPE: Since with neither of the ABIs we have more than
> + natural alignment there will never be ABI dependent padding
> + in an array type. That's why we do not set in_struct_p to
> + true here. */
> + s390_check_type_for_vector_abi (TREE_TYPE (type), arg_p, in_struct_p);
> + }
> + else if (TREE_CODE (type) == FUNCTION_TYPE || TREE_CODE (type) == METHOD_TYPE)
> + {
> + tree arg_chain;
> +
> + /* Check the return type. */
> + s390_check_type_for_vector_abi (TREE_TYPE (type), true, false);
> +
> + for (arg_chain = TYPE_ARG_TYPES (type);
> + arg_chain;
> + arg_chain = TREE_CHAIN (arg_chain))
> + s390_check_type_for_vector_abi (TREE_VALUE (arg_chain), true, false);
> + }
> + else if (RECORD_OR_UNION_TYPE_P (type))
> + {
> + tree field;
> +
> + for (field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
> + {
> + if (TREE_CODE (field) != FIELD_DECL)
> + continue;
> +
> + s390_check_type_for_vector_abi (TREE_TYPE (field), arg_p, true);
> + }
> + }
> +}
> +
> +
> /* System z builtins. */
>
> #include "s390-builtins.h"
> @@ -10898,6 +10989,8 @@ s390_function_arg (cumulative_args_t cum_v, machine_mode mode,
> {
> CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
>
> + if (!named)
> + s390_check_type_for_vector_abi (type, true, false);
>
> if (s390_function_arg_vector (mode, type))
> {
> @@ -11289,6 +11382,8 @@ s390_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p,
>
> size = int_size_in_bytes (type);
>
> + s390_check_type_for_vector_abi (type, true, false);
> +
> if (pass_by_reference (NULL, TYPE_MODE (type), type, false))
> {
> if (TARGET_DEBUG_ARG)
> @@ -13651,6 +13746,29 @@ s390_vector_alignment (const_tree type)
> return MIN (64, tree_to_shwi (TYPE_SIZE (type)));
> }
>
> +/* Implement TARGET_ASM_FILE_END. */
> +static void
> +s390_asm_file_end (void)
> +{
> +#ifdef HAVE_AS_GNU_ATTRIBUTE
> + varpool_node *vnode;
> + cgraph_node *cnode;
> +
> + FOR_EACH_VARIABLE (vnode)
> + if (TREE_PUBLIC (vnode->decl))
> + s390_check_type_for_vector_abi (TREE_TYPE (vnode->decl), false, false);
> +
> + FOR_EACH_FUNCTION (cnode)
> + if (TREE_PUBLIC (cnode->decl))
> + s390_check_type_for_vector_abi (TREE_TYPE (cnode->decl), false, false);
> +
> +
> + if (s390_vector_abi != 0)
> + fprintf (asm_out_file, "\t.gnu_attribute 8, %d\n",
> + s390_vector_abi);
> +#endif
> + file_end_indicate_exec_stack ();
> +}
>
> /* Return true if TYPE is a vector bool type. */
> static inline bool
> @@ -13927,6 +14045,9 @@ s390_invalid_binary_op (int op ATTRIBUTE_UNUSED, const_tree type1, const_tree ty
> #undef TARGET_INVALID_BINARY_OP
> #define TARGET_INVALID_BINARY_OP s390_invalid_binary_op
>
> +#undef TARGET_ASM_FILE_END
> +#define TARGET_ASM_FILE_END s390_asm_file_end
> +
> struct gcc_target targetm = TARGET_INITIALIZER;
>
> #include "gt-s390.h"
> diff --git a/gcc/configure b/gcc/configure
> index b26a86f..3f3f578 100755
> --- a/gcc/configure
> +++ b/gcc/configure
> @@ -26708,6 +26708,42 @@ fi
> as_fn_error "Requesting --with-nan= requires assembler support for -mnan=" "$LINENO" 5
> fi
> ;;
> + s390*-*-*)
> + { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .gnu_attribute support" >&5
> +$as_echo_n "checking assembler for .gnu_attribute support... " >&6; }
> +if test "${gcc_cv_as_s390_gnu_attribute+set}" = set; then :
> + $as_echo_n "(cached) " >&6
> +else
> + gcc_cv_as_s390_gnu_attribute=no
> + if test $in_tree_gas = yes; then
> + if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 18 \) \* 1000 + 0`
> + then gcc_cv_as_s390_gnu_attribute=yes
> +fi
> + elif test x$gcc_cv_as != x; then
> + $as_echo '.gnu_attribute 8,1' > conftest.s
> + if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5'
> + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
> + (eval $ac_try) 2>&5
> + ac_status=$?
> + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
> + test $ac_status = 0; }; }
> + then
> + gcc_cv_as_s390_gnu_attribute=yes
> + else
> + echo "configure: failed program was" >&5
> + cat conftest.s >&5
> + fi
> + rm -f conftest.o conftest.s
> + fi
> +fi
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_s390_gnu_attribute" >&5
> +$as_echo "$gcc_cv_as_s390_gnu_attribute" >&6; }
> +if test $gcc_cv_as_s390_gnu_attribute = yes; then
> +
> +$as_echo "#define HAVE_AS_GNU_ATTRIBUTE 1" >>confdefs.h
> +
> +fi
> + ;;
> esac
>
> # Mips and HP-UX need the GNU assembler.
> diff --git a/gcc/configure.ac b/gcc/configure.ac
> index c09f3ae5..85f72d5 100644
> --- a/gcc/configure.ac
> +++ b/gcc/configure.ac
> @@ -4442,6 +4442,13 @@ pointers into PC-relative form.])
> [Requesting --with-nan= requires assembler support for -mnan=])
> fi
> ;;
> + s390*-*-*)
> + gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
> + gcc_cv_as_s390_gnu_attribute, [2,18,0],,
> + [.gnu_attribute 8,1],,
> + [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
> + [Define if your assembler supports .gnu_attribute.])])
> + ;;
> esac
>
> # Mips and HP-UX need the GNU assembler.
> diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c
> index 5484664..db18e5e 100644
> --- a/gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c
> +++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c
> @@ -6,6 +6,7 @@
> /* Make sure the last argument is fetched from the argument overflow area. */
> /* { dg-final { scan-assembler "vl\t%v\[0-9\]*,160\\(%r15\\)" { target lp64 } } } */
> /* { dg-final { scan-assembler "vl\t%v\[0-9\]*,96\\(%r15\\)" { target ilp32 } } } */
> +/* { dg-final { scan-assembler "gnu_attribute 8, 2" } } */
>
> typedef double v2df __attribute__((vector_size(16)));
>
> diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-1.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-1.c
> new file mode 100644
> index 0000000..a06b338
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-1.c
> @@ -0,0 +1,18 @@
> +/* Check calling convention in the vector ABI. */
> +
> +/* { dg-do compile { target { s390*-*-* } } } */
> +/* { dg-options "-O3 -mzarch -march=z13 -mno-vx" } */
> +
> +/* The function passes arguments whose calling conventions change with
> + -mvx/-mno-vx. In that case GCC has to emit the ABI attribute to
> + allow GDB and Binutils to detect this. */
> +/* { dg-final { scan-assembler "gnu_attribute 8, 1" } } */
> +
> +typedef double v2df __attribute__((vector_size(16)));
> +
> +v2df
> +add (v2df a, v2df b, v2df c, v2df d,
> + v2df e, v2df f, v2df g, v2df h, v2df i)
> +{
> + return a + b + c + d + e + f + g + h + i;
> +}
> diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-2.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-2.c
> new file mode 100644
> index 0000000..97b9748
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-2.c
> @@ -0,0 +1,53 @@
> +/* Check calling convention in the vector ABI. */
> +
> +/* { dg-do compile { target { s390*-*-* } } } */
> +/* { dg-options "-O3 -mzarch -march=z13" } */
> +
> +/* No abi attribute should be emitted when nothing relevant happened. */
> +/* { dg-final { scan-assembler-not "gnu_attribute" } } */
> +
> +#include <stdarg.h>
> +
> +/* Local use is ok. */
> +
> +typedef int v4si __attribute__((vector_size(16)));
> +
> +static
> +v4si __attribute__((__noinline__))
> +foo (v4si a)
> +{
> + return a + (v4si){ 1, 2, 3, 4 };
> +}
> +
> +int
> +bar (int a)
> +{
> + return foo ((v4si){ 1, 1, 1, 1 })[1];
> +}
> +
> +/* Big vector type only used as function argument and return value
> + without being a struct/union member. The alignment change is not
> + relevant here. */
> +
> +typedef double v4df __attribute__((vector_size(32)));
> +
> +v4df
> +add (v4df a, v4df b, v4df c, v4df d,
> + v4df e, v4df f, v4df g, v4df h, v4df i)
> +{
> + return a + b + c + d + e + f + g + h + i;
> +}
> +
> +double
> +bar2 (int n, ...)
> +{
> + double ret;
> + v4df a;
> + va_list va;
> +
> + va_start (va, n);
> + ret = va_arg (va, v4df)[2];
> + va_end (va);
> +
> + return ret;
> +}
> diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-3.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-3.c
> new file mode 100644
> index 0000000..f3dc368
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-3.c
> @@ -0,0 +1,18 @@
> +/* Check calling convention in the vector ABI. */
> +
> +/* { dg-do compile { target { s390*-*-* } } } */
> +/* { dg-options "-O3 -mzarch -march=z13" } */
> +
> +/* { dg-final { scan-assembler "gnu_attribute 8, 2" } } */
> +
> +typedef double v4df __attribute__((vector_size(32)));
> +typedef struct { v4df a; } s;
> +
> +s
> +add (v4df a, v4df b, v4df c, v4df d,
> + v4df e, v4df f, v4df g, v4df h, v4df i)
> +{
> + s t;
> + t.a = a + b + c + d + e + f + g + h + i;
> + return t;
> +}
> diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-4.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-4.c
> new file mode 100644
> index 0000000..ad9b29a
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-4.c
> @@ -0,0 +1,17 @@
> +/* Check calling convention in the vector ABI. */
> +
> +/* { dg-do compile { target { s390*-*-* } } } */
> +/* { dg-options "-O3 -mzarch -march=z13" } */
> +
> +/* { dg-final { scan-assembler "gnu_attribute 8, 2" } } */
> +
> +typedef int __attribute__((vector_size(16))) v4si;
> +
> +extern void bar (v4si);
> +
> +void
> +foo (int a)
> +{
> + v4si b = (v4si){ a, a, a, a };
> + bar (b);
> +}
> diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-5.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-5.c
> new file mode 100644
> index 0000000..fb5de4e
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-5.c
> @@ -0,0 +1,19 @@
> +/* Check calling convention in the vector ABI. */
> +
> +/* { dg-do compile { target { s390*-*-* } } } */
> +/* { dg-options "-O3 -mzarch -march=z13" } */
> +
> +/* { dg-final { scan-assembler "gnu_attribute 8, 2" } } */
> +
> +#include <stdarg.h>
> +
> +typedef int __attribute__((vector_size(16))) v4si;
> +
> +extern void bar (int, ...);
> +
> +void
> +foo (int a)
> +{
> + v4si b = (v4si){ a, a, a, a };
> + bar (1, b);
> +}
> diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-6.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-6.c
> new file mode 100644
> index 0000000..9134fa7
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-6.c
> @@ -0,0 +1,24 @@
> +/* Check calling convention in the vector ABI. */
> +
> +/* { dg-do compile { target { s390*-*-* } } } */
> +/* { dg-options "-O3 -mzarch -march=z13" } */
> +
> +/* { dg-final { scan-assembler "gnu_attribute 8, 2" } } */
> +
> +#include <stdarg.h>
> +
> +typedef int __attribute__((vector_size(16))) v4si;
> +
> +int
> +bar (int n, ...)
> +{
> + int ret;
> + v4si a;
> + va_list va;
> +
> + va_start (va, n);
> + ret = va_arg (va, v4si)[2];
> + va_end (va);
> +
> + return ret;
> +}
> --
> 1.7.9.5
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/8] S/390 Vector ABI GNU Attribute.
2015-06-24 10:21 ` Richard Biener
@ 2015-06-24 14:35 ` Andreas Krebbel
0 siblings, 0 replies; 11+ messages in thread
From: Andreas Krebbel @ 2015-06-24 14:35 UTC (permalink / raw)
To: Richard Biener; +Cc: GCC Patches
On 06/24/2015 12:14 PM, Richard Biener wrote:
> On Wed, Jun 24, 2015 at 8:57 AM, Andreas Krebbel
>> Ideas about how to improve the implementation without creating too
>> many false postives are welcome.
>
> I'd be more conservative and instead hook into
> targetm.vector_mode_supported_p (and thus vector_type_mode).
>
> Yes, it will trip on "local" vector types. But I can't see how you
> can avoid this in general without seeing the whole program.
This would mean that the GNU ABI marker would be set for code which makes use of one of the builtins
locally to optimize a special case wrapped in a runtime check. This is what I was trying to avoid
actually.
We do have some optimizations for Glibc. However, these are all written in assembler what would not
trigger the ABI flag to be set. So for Glibc the more conservative approach would be no problem so far.
The current implementation has the hole that an ABI vector type usage might not be detected if the
type is used in a sizeof construct without being used anywhere else. One question is how big that
problem actually is? Another is if there are more cases which might slip through? If it turns out to
be too risky I probably have to go with one of the more conservative approaches :(
> If I'd do it retro-actively I'd reverse the flag and instead mark units
> which use generic non-z13 vectors...
>
> Note that other targets simply emit -Wpsabi warnings here:
>
>> gcc t.c -S -m32
> t.c: In function âfooâ:
> t.c:4:1: warning: SSE vector return without SSE enabled changes the
> ABI [-Wpsabi]
> {
> ^
> t.c:3:6: note: The ABI for passing parameters with 16-byte alignment
> has changed in GCC 4.6
> v4si foo (v4si x)
> ^
> t.c:3:6: warning: SSE vector argument without SSE enabled changes the
> ABI [-Wpsabi]
>
> for
>
> typedef int v4si __attribute__((vector_size(16)));
>
> v4si foo (v4si x)
> {
> return x;
> }
>
> on i?86 without -msse2. So you could as well do that - warn for vector
> type uses on non-z13 and be done with that.
Yes. I've seen this and plan to implement this ontop of the other mechanism. But we would still need
something like the GNU ABI marker for GDB.
Bye,
-Andreas-
>
> Richard.
>
>> In particular we do not want to set the attribute for local uses of
>> vector types as they would be natural for ifunc optimizations.
>>
>> gcc/
>> * config/s390/s390.c (s390_vector_abi): New variable definition.
>> (s390_check_type_for_vector_abi): New function.
>> (TARGET_ASM_FILE_END): New macro definition.
>> (s390_asm_file_end): New function.
>> (s390_function_arg): Call s390_check_type_for_vector_abi.
>> (s390_gimplify_va_arg): Likewise.
>> * configure: Regenerate.
>> * configure.ac: Check for .gnu_attribute Binutils feature.
>>
>> gcc/testsuite/
>> * gcc.target/s390/vector/vec-abi-1.c: Add gnu attribute check.
>> * gcc.target/s390/vector/vec-abi-attr-1.c: New test.
>> * gcc.target/s390/vector/vec-abi-attr-2.c: New test.
>> * gcc.target/s390/vector/vec-abi-attr-3.c: New test.
>> * gcc.target/s390/vector/vec-abi-attr-4.c: New test.
>> * gcc.target/s390/vector/vec-abi-attr-5.c: New test.
>> * gcc.target/s390/vector/vec-abi-attr-6.c: New test.
>> ---
>> gcc/config/s390/s390.c | 121 ++++++++++++++++++++
>> gcc/configure | 36 ++++++
>> gcc/configure.ac | 7 ++
>> gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c | 1 +
>> .../gcc.target/s390/vector/vec-abi-attr-1.c | 18 +++
>> .../gcc.target/s390/vector/vec-abi-attr-2.c | 53 +++++++++
>> .../gcc.target/s390/vector/vec-abi-attr-3.c | 18 +++
>> .../gcc.target/s390/vector/vec-abi-attr-4.c | 17 +++
>> .../gcc.target/s390/vector/vec-abi-attr-5.c | 19 +++
>> .../gcc.target/s390/vector/vec-abi-attr-6.c | 24 ++++
>> 10 files changed, 314 insertions(+)
>> create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-1.c
>> create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-2.c
>> create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-3.c
>> create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-4.c
>> create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-5.c
>> create mode 100644 gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-6.c
>>
>> diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
>> index d6ed179..934f7c0 100644
>> --- a/gcc/config/s390/s390.c
>> +++ b/gcc/config/s390/s390.c
>> @@ -461,6 +461,97 @@ struct GTY(()) machine_function
>> #define PREDICT_DISTANCE (TARGET_Z10 ? 384 : 2048)
>>
>>
>> +/* Indicate which ABI has been used for passing vector args.
>> + 0 - no vector type arguments have been passed where the ABI is relevant
>> + 1 - the old ABI has been used
>> + 2 - a vector type argument has been passed either in a vector register
>> + or on the stack by value */
>> +static int s390_vector_abi = 0;
>> +
>> +/* Set the vector ABI marker if TYPE is subject to the vector ABI
>> + switch. The vector ABI affects only vector data types. There are
>> + two aspects of the vector ABI relevant here:
>> +
>> + 1. vectors >= 16 bytes have an alignment of 8 bytes with the new
>> + ABI and natural alignment with the old.
>> +
>> + 2. vector <= 16 bytes are passed in VRs or by value on the stack
>> + with the new ABI but by reference on the stack with the old.
>> +
>> + If ARG_P is true TYPE is used for a function argument or return
>> + value. The ABI marker then is set for all vector data types. If
>> + ARG_P is false only type 1 vectors are being checked. */
>> +
>> +static void
>> +s390_check_type_for_vector_abi (const_tree type, bool arg_p, bool in_struct_p)
>> +{
>> + static hash_set<const_tree> visited_types_hash;
>> +
>> + if (s390_vector_abi)
>> + return;
>> +
>> + if (type == NULL_TREE || TREE_CODE (type) == ERROR_MARK)
>> + return;
>> +
>> + if (visited_types_hash.contains (type))
>> + return;
>> +
>> + visited_types_hash.add (type);
>> +
>> + if (VECTOR_TYPE_P (type))
>> + {
>> + int type_size = int_size_in_bytes (type);
>> +
>> + /* Outside arguments only the alignment is changing and this
>> + only happens for vector types >= 16 bytes. */
>> + if (!arg_p && type_size < 16)
>> + return;
>> +
>> + /* In arguments vector types > 16 are passed as before (GCC
>> + never enforced the bigger alignment for arguments which was
>> + required by the old vector ABI). However, it might still be
>> + ABI relevant due to the changed alignment if it is a struct
>> + member. */
>> + if (arg_p && type_size > 16 && !in_struct_p)
>> + return;
>> +
>> + s390_vector_abi = TARGET_VX_ABI ? 2 : 1;
>> + }
>> + else if (POINTER_TYPE_P (type) || TREE_CODE (type) == ARRAY_TYPE)
>> + {
>> + /* ARRAY_TYPE: Since with neither of the ABIs we have more than
>> + natural alignment there will never be ABI dependent padding
>> + in an array type. That's why we do not set in_struct_p to
>> + true here. */
>> + s390_check_type_for_vector_abi (TREE_TYPE (type), arg_p, in_struct_p);
>> + }
>> + else if (TREE_CODE (type) == FUNCTION_TYPE || TREE_CODE (type) == METHOD_TYPE)
>> + {
>> + tree arg_chain;
>> +
>> + /* Check the return type. */
>> + s390_check_type_for_vector_abi (TREE_TYPE (type), true, false);
>> +
>> + for (arg_chain = TYPE_ARG_TYPES (type);
>> + arg_chain;
>> + arg_chain = TREE_CHAIN (arg_chain))
>> + s390_check_type_for_vector_abi (TREE_VALUE (arg_chain), true, false);
>> + }
>> + else if (RECORD_OR_UNION_TYPE_P (type))
>> + {
>> + tree field;
>> +
>> + for (field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
>> + {
>> + if (TREE_CODE (field) != FIELD_DECL)
>> + continue;
>> +
>> + s390_check_type_for_vector_abi (TREE_TYPE (field), arg_p, true);
>> + }
>> + }
>> +}
>> +
>> +
>> /* System z builtins. */
>>
>> #include "s390-builtins.h"
>> @@ -10898,6 +10989,8 @@ s390_function_arg (cumulative_args_t cum_v, machine_mode mode,
>> {
>> CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
>>
>> + if (!named)
>> + s390_check_type_for_vector_abi (type, true, false);
>>
>> if (s390_function_arg_vector (mode, type))
>> {
>> @@ -11289,6 +11382,8 @@ s390_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p,
>>
>> size = int_size_in_bytes (type);
>>
>> + s390_check_type_for_vector_abi (type, true, false);
>> +
>> if (pass_by_reference (NULL, TYPE_MODE (type), type, false))
>> {
>> if (TARGET_DEBUG_ARG)
>> @@ -13651,6 +13746,29 @@ s390_vector_alignment (const_tree type)
>> return MIN (64, tree_to_shwi (TYPE_SIZE (type)));
>> }
>>
>> +/* Implement TARGET_ASM_FILE_END. */
>> +static void
>> +s390_asm_file_end (void)
>> +{
>> +#ifdef HAVE_AS_GNU_ATTRIBUTE
>> + varpool_node *vnode;
>> + cgraph_node *cnode;
>> +
>> + FOR_EACH_VARIABLE (vnode)
>> + if (TREE_PUBLIC (vnode->decl))
>> + s390_check_type_for_vector_abi (TREE_TYPE (vnode->decl), false, false);
>> +
>> + FOR_EACH_FUNCTION (cnode)
>> + if (TREE_PUBLIC (cnode->decl))
>> + s390_check_type_for_vector_abi (TREE_TYPE (cnode->decl), false, false);
>> +
>> +
>> + if (s390_vector_abi != 0)
>> + fprintf (asm_out_file, "\t.gnu_attribute 8, %d\n",
>> + s390_vector_abi);
>> +#endif
>> + file_end_indicate_exec_stack ();
>> +}
>>
>> /* Return true if TYPE is a vector bool type. */
>> static inline bool
>> @@ -13927,6 +14045,9 @@ s390_invalid_binary_op (int op ATTRIBUTE_UNUSED, const_tree type1, const_tree ty
>> #undef TARGET_INVALID_BINARY_OP
>> #define TARGET_INVALID_BINARY_OP s390_invalid_binary_op
>>
>> +#undef TARGET_ASM_FILE_END
>> +#define TARGET_ASM_FILE_END s390_asm_file_end
>> +
>> struct gcc_target targetm = TARGET_INITIALIZER;
>>
>> #include "gt-s390.h"
>> diff --git a/gcc/configure b/gcc/configure
>> index b26a86f..3f3f578 100755
>> --- a/gcc/configure
>> +++ b/gcc/configure
>> @@ -26708,6 +26708,42 @@ fi
>> as_fn_error "Requesting --with-nan= requires assembler support for -mnan=" "$LINENO" 5
>> fi
>> ;;
>> + s390*-*-*)
>> + { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .gnu_attribute support" >&5
>> +$as_echo_n "checking assembler for .gnu_attribute support... " >&6; }
>> +if test "${gcc_cv_as_s390_gnu_attribute+set}" = set; then :
>> + $as_echo_n "(cached) " >&6
>> +else
>> + gcc_cv_as_s390_gnu_attribute=no
>> + if test $in_tree_gas = yes; then
>> + if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 18 \) \* 1000 + 0`
>> + then gcc_cv_as_s390_gnu_attribute=yes
>> +fi
>> + elif test x$gcc_cv_as != x; then
>> + $as_echo '.gnu_attribute 8,1' > conftest.s
>> + if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5'
>> + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
>> + (eval $ac_try) 2>&5
>> + ac_status=$?
>> + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
>> + test $ac_status = 0; }; }
>> + then
>> + gcc_cv_as_s390_gnu_attribute=yes
>> + else
>> + echo "configure: failed program was" >&5
>> + cat conftest.s >&5
>> + fi
>> + rm -f conftest.o conftest.s
>> + fi
>> +fi
>> +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_s390_gnu_attribute" >&5
>> +$as_echo "$gcc_cv_as_s390_gnu_attribute" >&6; }
>> +if test $gcc_cv_as_s390_gnu_attribute = yes; then
>> +
>> +$as_echo "#define HAVE_AS_GNU_ATTRIBUTE 1" >>confdefs.h
>> +
>> +fi
>> + ;;
>> esac
>>
>> # Mips and HP-UX need the GNU assembler.
>> diff --git a/gcc/configure.ac b/gcc/configure.ac
>> index c09f3ae5..85f72d5 100644
>> --- a/gcc/configure.ac
>> +++ b/gcc/configure.ac
>> @@ -4442,6 +4442,13 @@ pointers into PC-relative form.])
>> [Requesting --with-nan= requires assembler support for -mnan=])
>> fi
>> ;;
>> + s390*-*-*)
>> + gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
>> + gcc_cv_as_s390_gnu_attribute, [2,18,0],,
>> + [.gnu_attribute 8,1],,
>> + [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
>> + [Define if your assembler supports .gnu_attribute.])])
>> + ;;
>> esac
>>
>> # Mips and HP-UX need the GNU assembler.
>> diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c
>> index 5484664..db18e5e 100644
>> --- a/gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c
>> +++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c
>> @@ -6,6 +6,7 @@
>> /* Make sure the last argument is fetched from the argument overflow area. */
>> /* { dg-final { scan-assembler "vl\t%v\[0-9\]*,160\\(%r15\\)" { target lp64 } } } */
>> /* { dg-final { scan-assembler "vl\t%v\[0-9\]*,96\\(%r15\\)" { target ilp32 } } } */
>> +/* { dg-final { scan-assembler "gnu_attribute 8, 2" } } */
>>
>> typedef double v2df __attribute__((vector_size(16)));
>>
>> diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-1.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-1.c
>> new file mode 100644
>> index 0000000..a06b338
>> --- /dev/null
>> +++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-1.c
>> @@ -0,0 +1,18 @@
>> +/* Check calling convention in the vector ABI. */
>> +
>> +/* { dg-do compile { target { s390*-*-* } } } */
>> +/* { dg-options "-O3 -mzarch -march=z13 -mno-vx" } */
>> +
>> +/* The function passes arguments whose calling conventions change with
>> + -mvx/-mno-vx. In that case GCC has to emit the ABI attribute to
>> + allow GDB and Binutils to detect this. */
>> +/* { dg-final { scan-assembler "gnu_attribute 8, 1" } } */
>> +
>> +typedef double v2df __attribute__((vector_size(16)));
>> +
>> +v2df
>> +add (v2df a, v2df b, v2df c, v2df d,
>> + v2df e, v2df f, v2df g, v2df h, v2df i)
>> +{
>> + return a + b + c + d + e + f + g + h + i;
>> +}
>> diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-2.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-2.c
>> new file mode 100644
>> index 0000000..97b9748
>> --- /dev/null
>> +++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-2.c
>> @@ -0,0 +1,53 @@
>> +/* Check calling convention in the vector ABI. */
>> +
>> +/* { dg-do compile { target { s390*-*-* } } } */
>> +/* { dg-options "-O3 -mzarch -march=z13" } */
>> +
>> +/* No abi attribute should be emitted when nothing relevant happened. */
>> +/* { dg-final { scan-assembler-not "gnu_attribute" } } */
>> +
>> +#include <stdarg.h>
>> +
>> +/* Local use is ok. */
>> +
>> +typedef int v4si __attribute__((vector_size(16)));
>> +
>> +static
>> +v4si __attribute__((__noinline__))
>> +foo (v4si a)
>> +{
>> + return a + (v4si){ 1, 2, 3, 4 };
>> +}
>> +
>> +int
>> +bar (int a)
>> +{
>> + return foo ((v4si){ 1, 1, 1, 1 })[1];
>> +}
>> +
>> +/* Big vector type only used as function argument and return value
>> + without being a struct/union member. The alignment change is not
>> + relevant here. */
>> +
>> +typedef double v4df __attribute__((vector_size(32)));
>> +
>> +v4df
>> +add (v4df a, v4df b, v4df c, v4df d,
>> + v4df e, v4df f, v4df g, v4df h, v4df i)
>> +{
>> + return a + b + c + d + e + f + g + h + i;
>> +}
>> +
>> +double
>> +bar2 (int n, ...)
>> +{
>> + double ret;
>> + v4df a;
>> + va_list va;
>> +
>> + va_start (va, n);
>> + ret = va_arg (va, v4df)[2];
>> + va_end (va);
>> +
>> + return ret;
>> +}
>> diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-3.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-3.c
>> new file mode 100644
>> index 0000000..f3dc368
>> --- /dev/null
>> +++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-3.c
>> @@ -0,0 +1,18 @@
>> +/* Check calling convention in the vector ABI. */
>> +
>> +/* { dg-do compile { target { s390*-*-* } } } */
>> +/* { dg-options "-O3 -mzarch -march=z13" } */
>> +
>> +/* { dg-final { scan-assembler "gnu_attribute 8, 2" } } */
>> +
>> +typedef double v4df __attribute__((vector_size(32)));
>> +typedef struct { v4df a; } s;
>> +
>> +s
>> +add (v4df a, v4df b, v4df c, v4df d,
>> + v4df e, v4df f, v4df g, v4df h, v4df i)
>> +{
>> + s t;
>> + t.a = a + b + c + d + e + f + g + h + i;
>> + return t;
>> +}
>> diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-4.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-4.c
>> new file mode 100644
>> index 0000000..ad9b29a
>> --- /dev/null
>> +++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-4.c
>> @@ -0,0 +1,17 @@
>> +/* Check calling convention in the vector ABI. */
>> +
>> +/* { dg-do compile { target { s390*-*-* } } } */
>> +/* { dg-options "-O3 -mzarch -march=z13" } */
>> +
>> +/* { dg-final { scan-assembler "gnu_attribute 8, 2" } } */
>> +
>> +typedef int __attribute__((vector_size(16))) v4si;
>> +
>> +extern void bar (v4si);
>> +
>> +void
>> +foo (int a)
>> +{
>> + v4si b = (v4si){ a, a, a, a };
>> + bar (b);
>> +}
>> diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-5.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-5.c
>> new file mode 100644
>> index 0000000..fb5de4e
>> --- /dev/null
>> +++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-5.c
>> @@ -0,0 +1,19 @@
>> +/* Check calling convention in the vector ABI. */
>> +
>> +/* { dg-do compile { target { s390*-*-* } } } */
>> +/* { dg-options "-O3 -mzarch -march=z13" } */
>> +
>> +/* { dg-final { scan-assembler "gnu_attribute 8, 2" } } */
>> +
>> +#include <stdarg.h>
>> +
>> +typedef int __attribute__((vector_size(16))) v4si;
>> +
>> +extern void bar (int, ...);
>> +
>> +void
>> +foo (int a)
>> +{
>> + v4si b = (v4si){ a, a, a, a };
>> + bar (1, b);
>> +}
>> diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-6.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-6.c
>> new file mode 100644
>> index 0000000..9134fa7
>> --- /dev/null
>> +++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-attr-6.c
>> @@ -0,0 +1,24 @@
>> +/* Check calling convention in the vector ABI. */
>> +
>> +/* { dg-do compile { target { s390*-*-* } } } */
>> +/* { dg-options "-O3 -mzarch -march=z13" } */
>> +
>> +/* { dg-final { scan-assembler "gnu_attribute 8, 2" } } */
>> +
>> +#include <stdarg.h>
>> +
>> +typedef int __attribute__((vector_size(16))) v4si;
>> +
>> +int
>> +bar (int n, ...)
>> +{
>> + int ret;
>> + v4si a;
>> + va_list va;
>> +
>> + va_start (va, n);
>> + ret = va_arg (va, v4si)[2];
>> + va_end (va);
>> +
>> + return ret;
>> +}
>> --
>> 1.7.9.5
>>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2015-06-24 14:22 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-24 6:57 [PATCH 0/8] S/390: z13 support fixes and improvements Andreas Krebbel
2015-06-24 6:57 ` [PATCH 7/8] S/390: Add proper comments to vpopct builtins for automated testsuite generation Andreas Krebbel
2015-06-24 6:57 ` [PATCH 3/8] S/390: Disable effect of support_vector_misalignment hook for non-z13 targets Andreas Krebbel
2015-06-24 6:57 ` [PATCH 2/8] S/390: Limit legitimate_constant_p changes to TARGET_VX Andreas Krebbel
2015-06-24 6:57 ` [PATCH 1/8] S/390 Vector ABI GNU Attribute Andreas Krebbel
2015-06-24 10:21 ` Richard Biener
2015-06-24 14:35 ` Andreas Krebbel
2015-06-24 6:57 ` [PATCH 8/8] S/390: Switch mode attribute to bhfgq for vec scatter patterns Andreas Krebbel
2015-06-24 6:58 ` [PATCH 6/8] S/390: Make builtin creation conditional Andreas Krebbel
2015-06-24 6:58 ` [PATCH 5/8] S/390: Remove internal builtins from vecintrin.h Andreas Krebbel
2015-06-24 7:10 ` [PATCH 4/8] S/390: Fix s390_secondary_reload register class check Andreas Krebbel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).