public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [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 ` 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

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 ` [PATCH 2/8] S/390: Limit legitimate_constant_p changes to TARGET_VX 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

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 2/8] S/390: Limit legitimate_constant_p changes to TARGET_VX Andreas Krebbel
@ 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
                   ` (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 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 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 2/8] S/390: Limit legitimate_constant_p changes to TARGET_VX 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 2/8] S/390: Limit legitimate_constant_p changes to TARGET_VX 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 7/8] S/390: Add proper comments to vpopct builtins for automated testsuite generation 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).