Openwall GNU/*/Linux 3.0 - a small security-enhanced Linux distro for servers
[<prev] [next>] [day] [month] [year] [list]
Date: Mon, 10 Dec 2012 12:33:10 -0800 (PST)
From: Christian Kujau <lists@...dbynature.de>
To: magnum <john.magnum@...hmail.com>
cc: john-users@...ts.openwall.com
Subject: Re: invalid parameter combination for AltiVec intrinsic

On Mon, 10 Dec 2012 at 19:56, magnum wrote:
> I reported the issue to Solar and he replied here:
> http://www.openwall.com/lists/john-dev/2012/09/08/6
> 
> Working issue#82 link here:
> https://github.com/magnumripper/JohnTheRipper/issues/82

Ah, there it is! Thanks, with both the sboxes-s.c and DES_bs_b.c patch 
applied, compiling for linux-ppc32-altivec works.

Since the patches were all mangled in the Github issue tracker, I attached 
the patch to this email.

Thanks again,
Christian.
-- 
BOFH excuse #141:

disks spinning backwards - toggle the hemisphere jumper.
diff --git a/src/DES_bs_b.c b/src/DES_bs_b.c
index 684ac94..0f91c3c 100644
--- a/src/DES_bs_b.c
+++ b/src/DES_bs_b.c
@@ -30,7 +30,7 @@
 typedef vector signed int vtype;
 
 #define vst(dst, ofs, src) \
-	vec_st((src), (ofs) * sizeof(DES_bs_vector), &(dst))
+	vec_st((src), (ofs) * sizeof(DES_bs_vector), (dst))
 
 #define vxorf(a, b) \
 	vec_xor((a), (b))
diff --git a/src/sboxes-s.c b/src/sboxes-s.c
index 852a474..96dc6d2 100644
--- a/src/sboxes-s.c
+++ b/src/sboxes-s.c
@@ -34,7 +34,7 @@
 /* PowerPC with AltiVec, etc. */
 #define regs 32
 #endif
-
+#include "altivec.h"
 #undef latency
 /* Latency 2 may also mean dual-issue with latency 1 */
 #define latency 2
@@ -56,52 +56,52 @@ s1(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype xC9C93B62, x89490F02, xB96C2D16;
 	vtype x0, x1, x2, x3;
 
-	vsel(x0F0F3333, a3, a2, a5);
+	vsel(x0F0F3333, a3, a2, (vector bool int)a5);
 	vxor(x3C3C3C3C, a2, a3);
 	vor(x55FF55FF, a1, a4);
 	vxor(x69C369C3, x3C3C3C3C, x55FF55FF);
-	vsel(x0903B73F, a5, x0F0F3333, x69C369C3);
+	vsel(x0903B73F, a5, x0F0F3333, (vector bool int)x69C369C3);
 	vxor(x09FCB7C0, a4, x0903B73F);
 	vxor(x5CA9E295, a1, x09FCB7C0);
 
-	vsel(x55AFD1B7, x5CA9E295, x55FF55FF, x0F0F3333);
-	vsel(x3C3C69C3, x3C3C3C3C, x69C369C3, a5);
+	vsel(x55AFD1B7, x5CA9E295, x55FF55FF, (vector bool int)x0F0F3333);
+	vsel(x3C3C69C3, x3C3C3C3C, x69C369C3, (vector bool int)a5);
 	vxor(x6993B874, x55AFD1B7, x3C3C69C3);
 
-	vsel(x5CEDE59F, x55FF55FF, x5CA9E295, x6993B874);
-	vsel(x09FCE295, x09FCB7C0, x5CA9E295, a5);
-	vsel(x5D91A51E, x5CEDE59F, x6993B874, x09FCE295);
+	vsel(x5CEDE59F, x55FF55FF, x5CA9E295, (vector bool int)x6993B874);
+	vsel(x09FCE295, x09FCB7C0, x5CA9E295, (vector bool int)a5);
+	vsel(x5D91A51E, x5CEDE59F, x6993B874, (vector bool int)x09FCE295);
 	vxor(x529E962D, x0F0F3333, x5D91A51E);
 
-	vsel(x29EEADC0, x69C369C3, x09FCB7C0, x5CEDE59F);
-	vsel(x4B8771A3, x0F0F3333, x69C369C3, x5CA9E295);
-	vsel(x428679F3, a5, x4B8771A3, x529E962D);
+	vsel(x29EEADC0, x69C369C3, x09FCB7C0, (vector bool int)x5CEDE59F);
+	vsel(x4B8771A3, x0F0F3333, x69C369C3, (vector bool int)x5CA9E295);
+	vsel(x428679F3, a5, x4B8771A3, (vector bool int)x529E962D);
 	vxor(x6B68D433, x29EEADC0, x428679F3);
 
-	vsel(x5BA7E193, x5CA9E295, x4B8771A3, a3);
-	vsel(x026F12F3, a4, x0F0F3333, x529E962D);
-	vsel(x6B27C493, x6B68D433, x5BA7E193, x026F12F3);
+	vsel(x5BA7E193, x5CA9E295, x4B8771A3, (vector bool int)a3);
+	vsel(x026F12F3, a4, x0F0F3333, (vector bool int)x529E962D);
+	vsel(x6B27C493, x6B68D433, x5BA7E193, (vector bool int)x026F12F3);
 	vnot(x94D83B6C, x6B27C493);
-	vsel(x0, x94D83B6C, x6B68D433, a6);
+	vsel(x0, x94D83B6C, x6B68D433, (vector bool int)a6);
 	vxor(*out1, *out1, x0);
 
-	vsel(x965E0B0F, x94D83B6C, a3, x428679F3);
-	vsel(x3327A113, x5BA7E193, a2, x69C369C3);
-	vsel(x847F0A1F, x965E0B0F, a4, x3327A113);
+	vsel(x965E0B0F, x94D83B6C, a3, (vector bool int)x428679F3);
+	vsel(x3327A113, x5BA7E193, a2, (vector bool int)x69C369C3);
+	vsel(x847F0A1F, x965E0B0F, a4, (vector bool int)x3327A113);
 	vxor(xD6E19C32, x529E962D, x847F0A1F);
-	vsel(x1, xD6E19C32, x5CA9E295, a6);
+	vsel(x1, xD6E19C32, x5CA9E295, (vector bool int)a6);
 	vxor(*out2, *out2, x1);
 
-	vsel(x0DBCE883, x09FCE295, x3C3C69C3, x847F0A1F);
-	vsel(x3A25A215, x3327A113, x5CA9E295, x0903B73F);
+	vsel(x0DBCE883, x09FCE295, x3C3C69C3, (vector bool int)x847F0A1F);
+	vsel(x3A25A215, x3327A113, x5CA9E295, (vector bool int)x0903B73F);
 	vxor(x37994A96, x0DBCE883, x3A25A215);
-	vsel(x3, x37994A96, x529E962D, a6);
+	vsel(x3, x37994A96, x529E962D, (vector bool int)a6);
 	vxor(*out4, *out4, x3);
 
-	vsel(xC9C93B62, x94D83B6C, x69C369C3, x5D91A51E);
-	vsel(x89490F02, a3, xC9C93B62, x965E0B0F);
-	vsel(xB96C2D16, x89490F02, x3C3C3C3C, x3A25A215);
-	vsel(x2, xB96C2D16, x6993B874, a6);
+	vsel(xC9C93B62, x94D83B6C, x69C369C3, (vector bool int)x5D91A51E);
+	vsel(x89490F02, a3, xC9C93B62, (vector bool int)x965E0B0F);
+	vsel(xB96C2D16, x89490F02, x3C3C3C3C, (vector bool int)x3A25A215);
+	vsel(x2, xB96C2D16, x6993B874, (vector bool int)a6);
 	vxor(*out3, *out3, x2);
 }
 #else
@@ -121,52 +121,52 @@ s1(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x8A487EA7, x8B480F07, xB96C2D16;
 	vtype x0, x1, x2, x3;
 
-	vsel(x0F0F3333, a3, a2, a5);
+	vsel(x0F0F3333, a3, a2, (vector bool int)a5);
 	vxor(x3C3C3C3C, a2, a3);
 	vor(x55FF55FF, a1, a4);
 	vxor(x69C369C3, x3C3C3C3C, x55FF55FF);
-	vsel(x0903B73F, a5, x0F0F3333, x69C369C3);
+	vsel(x0903B73F, a5, x0F0F3333, (vector bool int)x69C369C3);
 	vxor(x09FCB7C0, a4, x0903B73F);
 	vxor(x5CA9E295, a1, x09FCB7C0);
 
-	vsel(x55AFD1B7, x5CA9E295, x55FF55FF, x0F0F3333);
-	vsel(x3C3C69C3, x3C3C3C3C, x69C369C3, a5);
+	vsel(x55AFD1B7, x5CA9E295, x55FF55FF, (vector bool int)x0F0F3333);
+	vsel(x3C3C69C3, x3C3C3C3C, x69C369C3, (vector bool int)a5);
 	vxor(x6993B874, x55AFD1B7, x3C3C69C3);
 
-	vsel(x5CEDE59F, x55FF55FF, x5CA9E295, x6993B874);
-	vsel(x09FCE295, x09FCB7C0, x5CA9E295, a5);
-	vsel(x5D91A51E, x5CEDE59F, x6993B874, x09FCE295);
+	vsel(x5CEDE59F, x55FF55FF, x5CA9E295, (vector bool int)x6993B874);
+	vsel(x09FCE295, x09FCB7C0, x5CA9E295, (vector bool int)a5);
+	vsel(x5D91A51E, x5CEDE59F, x6993B874, (vector bool int)x09FCE295);
 	vxor(x529E962D, x0F0F3333, x5D91A51E);
 
-	vsel(x29EEADC0, x69C369C3, x09FCB7C0, x5CEDE59F);
-	vsel(x4B8771A3, x0F0F3333, x69C369C3, x5CA9E295);
-	vsel(x428679F3, a5, x4B8771A3, x529E962D);
+	vsel(x29EEADC0, x69C369C3, x09FCB7C0, (vector bool int)x5CEDE59F);
+	vsel(x4B8771A3, x0F0F3333, x69C369C3, (vector bool int)x5CA9E295);
+	vsel(x428679F3, a5, x4B8771A3, (vector bool int)x529E962D);
 	vxor(x6B68D433, x29EEADC0, x428679F3);
 
-	vsel(x5BA7E193, x5CA9E295, x4B8771A3, a3);
-	vsel(x026F12F3, a4, x0F0F3333, x529E962D);
-	vsel(x6B27C493, x6B68D433, x5BA7E193, x026F12F3);
+	vsel(x5BA7E193, x5CA9E295, x4B8771A3, (vector bool int)a3);
+	vsel(x026F12F3, a4, x0F0F3333, (vector bool int)x529E962D);
+	vsel(x6B27C493, x6B68D433, x5BA7E193, (vector bool int)x026F12F3);
 	vnot(x94D83B6C, x6B27C493);
-	vsel(x0, x94D83B6C, x6B68D433, a6);
+	vsel(x0, x94D83B6C, x6B68D433, (vector bool int)a6);
 	vxor(*out1, *out1, x0);
 
-	vsel(x965E0B0F, x94D83B6C, a3, x428679F3);
-	vsel(x3327A113, x5BA7E193, a2, x69C369C3);
-	vsel(x847F0A1F, x965E0B0F, a4, x3327A113);
+	vsel(x965E0B0F, x94D83B6C, a3, (vector bool int)x428679F3);
+	vsel(x3327A113, x5BA7E193, a2, (vector bool int)x69C369C3);
+	vsel(x847F0A1F, x965E0B0F, a4, (vector bool int)x3327A113);
 	vxor(xD6E19C32, x529E962D, x847F0A1F);
-	vsel(x1, xD6E19C32, x5CA9E295, a6);
+	vsel(x1, xD6E19C32, x5CA9E295, (vector bool int)a6);
 	vxor(*out2, *out2, x1);
 
-	vsel(x0DBCE883, x09FCE295, x3C3C69C3, x847F0A1F);
-	vsel(x3A25A215, x3327A113, x5CA9E295, x0903B73F);
+	vsel(x0DBCE883, x09FCE295, x3C3C69C3, (vector bool int)x847F0A1F);
+	vsel(x3A25A215, x3327A113, x5CA9E295, (vector bool int)x0903B73F);
 	vxor(x37994A96, x0DBCE883, x3A25A215);
-	vsel(x3, x37994A96, x529E962D, a6);
+	vsel(x3, x37994A96, x529E962D, (vector bool int)a6);
 	vxor(*out4, *out4, x3);
 
 	vxor(x8A487EA7, x5CA9E295, xD6E19C32);
-	vsel(x8B480F07, a3, x8A487EA7, x847F0A1F);
-	vsel(xB96C2D16, x8B480F07, x3C3C3C3C, x3A25A215);
-	vsel(x2, xB96C2D16, x6993B874, a6);
+	vsel(x8B480F07, a3, x8A487EA7, (vector bool int)x847F0A1F);
+	vsel(xB96C2D16, x8B480F07, x3C3C3C3C, (vector bool int)x3A25A215);
+	vsel(x2, xB96C2D16, x6993B874, (vector bool int)a6);
 	vxor(*out3, *out3, x2);
 }
 #endif
@@ -187,49 +187,49 @@ s2(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x278D0F2D, x2E0E547B, x09976748;
 	vtype x0, x1, x2, x3;
 
-	vsel(x55553333, a1, a3, a6);
-	vsel(x0055FF33, a6, x55553333, a5);
-	vsel(x33270F03, a3, a4, x0055FF33);
+	vsel(x55553333, a1, a3, (vector bool int)a6);
+	vsel(x0055FF33, a6, x55553333, (vector bool int)a5);
+	vsel(x33270F03, a3, a4, (vector bool int)x0055FF33);
 	vxor(x66725A56, a1, x33270F03);
 	vxor(x00FFFF00, a5, a6);
 	vxor(x668DA556, x66725A56, x00FFFF00);
 
-	vsel(x0F0F5A56, a4, x66725A56, a6);
+	vsel(x0F0F5A56, a4, x66725A56, (vector bool int)a6);
 	vnot(xF0F0A5A9, x0F0F5A56);
 	vxor(xA5A5969A, x55553333, xF0F0A5A9);
 	vxor(xA55A699A, x00FFFF00, xA5A5969A);
-	vsel(x1, xA55A699A, x668DA556, a2);
+	vsel(x1, xA55A699A, x668DA556, (vector bool int)a2);
 	vxor(*out2, *out2, x1);
 
 	vxor(x0F5AF03C, a4, x0055FF33);
-	vsel(x6600FF56, x66725A56, a6, x00FFFF00);
-	vsel(x87A5F09C, xA5A5969A, x0F5AF03C, x6600FF56);
+	vsel(x6600FF56, x66725A56, a6, (vector bool int)x00FFFF00);
+	vsel(x87A5F09C, xA5A5969A, x0F5AF03C, (vector bool int)x6600FF56);
 
-	vsel(xA55A963C, xA5A5969A, x0F5AF03C, a5);
+	vsel(xA55A963C, xA5A5969A, x0F5AF03C, (vector bool int)a5);
 	vxor(x3C69C30F, a3, x0F5AF03C);
-	vsel(xB44BC32D, xA55A963C, x3C69C30F, a1);
+	vsel(xB44BC32D, xA55A963C, x3C69C30F, (vector bool int)a1);
 
-	vsel(x66D7CC56, x66725A56, x668DA556, xA5A5969A);
-	vsel(x0F4B0F2D, a4, xB44BC32D, a5);
+	vsel(x66D7CC56, x66725A56, x668DA556, (vector bool int)xA5A5969A);
+	vsel(x0F4B0F2D, a4, xB44BC32D, (vector bool int)a5);
 	vxor(x699CC37B, x66D7CC56, x0F4B0F2D);
 	vxor(x996C66D2, xF0F0A5A9, x699CC37B);
-	vsel(x0, x996C66D2, xB44BC32D, a2);
+	vsel(x0, x996C66D2, xB44BC32D, (vector bool int)a2);
 	vxor(*out1, *out1, x0);
 
-	vsel(xB46C662D, xB44BC32D, x996C66D2, x00FFFF00);
-	vsel(x278DB412, x668DA556, xA5A5969A, a1);
-	vsel(xB66CB43B, xB46C662D, x278DB412, x6600FF56);
+	vsel(xB46C662D, xB44BC32D, x996C66D2, (vector bool int)x00FFFF00);
+	vsel(x278DB412, x668DA556, xA5A5969A, (vector bool int)a1);
+	vsel(xB66CB43B, xB46C662D, x278DB412, (vector bool int)x6600FF56);
 
-	vsel(xD2DC4E52, x66D7CC56, x996C66D2, xB44BC32D);
-	vsel(x27993333, x278DB412, a3, x0055FF33);
-	vsel(xD2994E33, xD2DC4E52, x27993333, a5);
-	vsel(x3, x87A5F09C, xD2994E33, a2);
+	vsel(xD2DC4E52, x66D7CC56, x996C66D2, (vector bool int)xB44BC32D);
+	vsel(x27993333, x278DB412, a3, (vector bool int)x0055FF33);
+	vsel(xD2994E33, xD2DC4E52, x27993333, (vector bool int)a5);
+	vsel(x3, x87A5F09C, xD2994E33, (vector bool int)a2);
 	vxor(*out4, *out4, x3);
 
-	vsel(x278D0F2D, x278DB412, x0F4B0F2D, a6);
-	vsel(x2E0E547B, x0F0F5A56, xB66CB43B, x278D0F2D);
+	vsel(x278D0F2D, x278DB412, x0F4B0F2D, (vector bool int)a6);
+	vsel(x2E0E547B, x0F0F5A56, xB66CB43B, (vector bool int)x278D0F2D);
 	vxor(x09976748, x27993333, x2E0E547B);
-	vsel(x2, xB66CB43B, x09976748, a2);
+	vsel(x2, xB66CB43B, x09976748, (vector bool int)a2);
 	vxor(*out3, *out3, x2);
 }
 #elif regs >= 18 && latency >= 4
@@ -248,49 +248,49 @@ s2(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x278D0F2D, x2E0E547B, x09976748;
 	vtype x0, x1, x2, x3;
 
-	vsel(x55553333, a1, a3, a6);
-	vsel(x0055FF33, a6, x55553333, a5);
-	vsel(x33270F03, a3, a4, x0055FF33);
+	vsel(x55553333, a1, a3, (vector bool int)a6);
+	vsel(x0055FF33, a6, x55553333, (vector bool int)a5);
+	vsel(x33270F03, a3, a4, (vector bool int)x0055FF33);
 	vxor(x66725A56, a1, x33270F03);
 	vxor(x00FFFF00, a5, a6);
 	vxor(x668DA556, x66725A56, x00FFFF00);
 
-	vsel(x0F0F5A56, a4, x66725A56, a6);
+	vsel(x0F0F5A56, a4, x66725A56, (vector bool int)a6);
 	vnot(xF0F0A5A9, x0F0F5A56);
 	vxor(xA5A5969A, x55553333, xF0F0A5A9);
 	vxor(xA55A699A, x00FFFF00, xA5A5969A);
-	vsel(x1, xA55A699A, x668DA556, a2);
+	vsel(x1, xA55A699A, x668DA556, (vector bool int)a2);
 	vxor(*out2, *out2, x1);
 
 	vxor(x0F5AF03C, a4, x0055FF33);
-	vsel(x6600FF56, x66725A56, a6, x00FFFF00);
-	vsel(x87A5F09C, xA5A5969A, x0F5AF03C, x6600FF56);
+	vsel(x6600FF56, x66725A56, a6, (vector bool int)x00FFFF00);
+	vsel(x87A5F09C, xA5A5969A, x0F5AF03C, (vector bool int)x6600FF56);
 
-	vsel(xA55A963C, xA5A5969A, x0F5AF03C, a5);
+	vsel(xA55A963C, xA5A5969A, x0F5AF03C, (vector bool int)a5);
 	vxor(x3C69C30F, a3, x0F5AF03C);
-	vsel(xB44BC32D, xA55A963C, x3C69C30F, a1);
+	vsel(xB44BC32D, xA55A963C, x3C69C30F, (vector bool int)a1);
 
-	vsel(x0F4B0F2D, a4, xB44BC32D, a5);
-	vsel(x66D7CC56, x66725A56, x668DA556, xA5A5969A);
+	vsel(x0F4B0F2D, a4, xB44BC32D, (vector bool int)a5);
+	vsel(x66D7CC56, x66725A56, x668DA556, (vector bool int)xA5A5969A);
 	vxor(x962769FF, xF0F0A5A9, x66D7CC56);
 	vxor(x996C66D2, x0F4B0F2D, x962769FF);
-	vsel(x0, x996C66D2, xB44BC32D, a2);
+	vsel(x0, x996C66D2, xB44BC32D, (vector bool int)a2);
 	vxor(*out1, *out1, x0);
 
-	vsel(xB46C662D, xB44BC32D, x996C66D2, x00FFFF00);
-	vsel(x278DB412, x668DA556, xA5A5969A, a1);
-	vsel(xB66CB43B, xB46C662D, x278DB412, x6600FF56);
+	vsel(xB46C662D, xB44BC32D, x996C66D2, (vector bool int)x00FFFF00);
+	vsel(x278DB412, x668DA556, xA5A5969A, (vector bool int)a1);
+	vsel(xB66CB43B, xB46C662D, x278DB412, (vector bool int)x6600FF56);
 
-	vsel(xD2DC4E52, x66D7CC56, x996C66D2, xB44BC32D);
-	vsel(x27993333, x278DB412, a3, x0055FF33);
-	vsel(xD2994E33, xD2DC4E52, x27993333, a5);
-	vsel(x3, x87A5F09C, xD2994E33, a2);
+	vsel(xD2DC4E52, x66D7CC56, x996C66D2, (vector bool int)xB44BC32D);
+	vsel(x27993333, x278DB412, a3, (vector bool int)x0055FF33);
+	vsel(xD2994E33, xD2DC4E52, x27993333, (vector bool int)a5);
+	vsel(x3, x87A5F09C, xD2994E33, (vector bool int)a2);
 	vxor(*out4, *out4, x3);
 
-	vsel(x278D0F2D, x278DB412, x0F4B0F2D, a6);
-	vsel(x2E0E547B, x0F0F5A56, xB66CB43B, x278D0F2D);
+	vsel(x278D0F2D, x278DB412, x0F4B0F2D, (vector bool int)a6);
+	vsel(x2E0E547B, x0F0F5A56, xB66CB43B, (vector bool int)x278D0F2D);
 	vxor(x09976748, x27993333, x2E0E547B);
-	vsel(x2, xB66CB43B, x09976748, a2);
+	vsel(x2, xB66CB43B, x09976748, (vector bool int)a2);
 	vxor(*out3, *out3, x2);
 }
 #else
@@ -309,49 +309,49 @@ s2(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x9927C3E1, x089F3F0C, x09976748;
 	vtype x0, x1, x2, x3;
 
-	vsel(x55553333, a1, a3, a6);
-	vsel(x0055FF33, a6, x55553333, a5);
-	vsel(x33270F03, a3, a4, x0055FF33);
+	vsel(x55553333, a1, a3, (vector bool int)a6);
+	vsel(x0055FF33, a6, x55553333, (vector bool int)a5);
+	vsel(x33270F03, a3, a4, (vector bool int)x0055FF33);
 	vxor(x66725A56, a1, x33270F03);
 	vxor(x00FFFF00, a5, a6);
 	vxor(x668DA556, x66725A56, x00FFFF00);
 
-	vsel(x0F0F5A56, a4, x66725A56, a6);
+	vsel(x0F0F5A56, a4, x66725A56, (vector bool int)a6);
 	vnot(xF0F0A5A9, x0F0F5A56);
 	vxor(xA5A5969A, x55553333, xF0F0A5A9);
 	vxor(xA55A699A, x00FFFF00, xA5A5969A);
-	vsel(x1, xA55A699A, x668DA556, a2);
+	vsel(x1, xA55A699A, x668DA556, (vector bool int)a2);
 	vxor(*out2, *out2, x1);
 
 	vxor(x0F5AF03C, a4, x0055FF33);
-	vsel(x6600FF56, x66725A56, a6, x00FFFF00);
-	vsel(x87A5F09C, xA5A5969A, x0F5AF03C, x6600FF56);
+	vsel(x6600FF56, x66725A56, a6, (vector bool int)x00FFFF00);
+	vsel(x87A5F09C, xA5A5969A, x0F5AF03C, (vector bool int)x6600FF56);
 
-	vsel(x875AF03C, x87A5F09C, x0F5AF03C, a5);
-	vsel(xF00F0FA9, xF0F0A5A9, a4, x00FFFF00);
-	vsel(xB44BC32D, x875AF03C, xF00F0FA9, a3);
+	vsel(x875AF03C, x87A5F09C, x0F5AF03C, (vector bool int)a5);
+	vsel(xF00F0FA9, xF0F0A5A9, a4, (vector bool int)x00FFFF00);
+	vsel(xB44BC32D, x875AF03C, xF00F0FA9, (vector bool int)a3);
 
-	vsel(x6627A556, x66725A56, x668DA556, x0055FF33);
+	vsel(x6627A556, x66725A56, x668DA556, (vector bool int)x0055FF33);
 	vxor(xD26C667B, xB44BC32D, x6627A556);
-	vsel(x278DB412, x668DA556, xA5A5969A, a1);
-	vsel(xB66CB43B, xD26C667B, x278DB412, x6600FF56);
+	vsel(x278DB412, x668DA556, xA5A5969A, (vector bool int)a1);
+	vsel(xB66CB43B, xD26C667B, x278DB412, (vector bool int)x6600FF56);
 
-	vsel(x668DC32D, x668DA556, xB44BC32D, a6);
+	vsel(x668DC32D, x668DA556, xB44BC32D, (vector bool int)a6);
 	vnot(x99723CD2, x668DC32D);
-	vsel(x996C66D2, x99723CD2, xD26C667B, x00FFFF00);
-	vsel(x0, x996C66D2, xB44BC32D, a2);
+	vsel(x996C66D2, x99723CD2, xD26C667B, (vector bool int)x00FFFF00);
+	vsel(x0, x996C66D2, xB44BC32D, (vector bool int)a2);
 	vxor(*out1, *out1, x0);
 
-	vsel(xD20E4EA9, xF00F0FA9, xD26C667B, x668DC32D);
-	vsel(x27993333, x278DB412, a3, x0055FF33);
-	vsel(xD2994E33, xD20E4EA9, x27993333, a5);
-	vsel(x3, x87A5F09C, xD2994E33, a2);
+	vsel(xD20E4EA9, xF00F0FA9, xD26C667B, (vector bool int)x668DC32D);
+	vsel(x27993333, x278DB412, a3, (vector bool int)x0055FF33);
+	vsel(xD2994E33, xD20E4EA9, x27993333, (vector bool int)a5);
+	vsel(x3, x87A5F09C, xD2994E33, (vector bool int)a2);
 	vxor(*out4, *out4, x3);
 
 	vxor(x9927C3E1, x0055FF33, x99723CD2);
-	vsel(x089F3F0C, a4, x00FFFF00, x27993333);
-	vsel(x09976748, x089F3F0C, x9927C3E1, x0F0F5A56);
-	vsel(x2, xB66CB43B, x09976748, a2);
+	vsel(x089F3F0C, a4, x00FFFF00, (vector bool int)x27993333);
+	vsel(x09976748, x089F3F0C, x9927C3E1, (vector bool int)x0F0F5A56);
+	vsel(x2, xB66CB43B, x09976748, (vector bool int)a2);
 	vxor(*out3, *out3, x2);
 }
 #endif
@@ -372,49 +372,49 @@ s3(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x665F9364, xD573F0F2, xB32C6396;
 	vtype x0, x1, x2, x3;
 
-	vsel(x0F330F33, a4, a3, a5);
+	vsel(x0F330F33, a4, a3, (vector bool int)a5);
 	vxor(x0F33F0CC, a6, x0F330F33);
 	vxor(x5A66A599, a2, x0F33F0CC);
 
-	vsel(x2111B7BB, a3, a6, x5A66A599);
-	vsel(x03FF3033, a5, a3, x0F33F0CC);
-	vsel(x05BB50EE, a5, x0F33F0CC, a2);
-	vsel(x074F201F, x03FF3033, a4, x05BB50EE);
+	vsel(x2111B7BB, a3, a6, (vector bool int)x5A66A599);
+	vsel(x03FF3033, a5, a3, (vector bool int)x0F33F0CC);
+	vsel(x05BB50EE, a5, x0F33F0CC, (vector bool int)a2);
+	vsel(x074F201F, x03FF3033, a4, (vector bool int)x05BB50EE);
 	vxor(x265E97A4, x2111B7BB, x074F201F);
 
-	vsel(x556BA09E, x5A66A599, x05BB50EE, a4);
-	vsel(x665A93AC, x556BA09E, x265E97A4, a3);
+	vsel(x556BA09E, x5A66A599, x05BB50EE, (vector bool int)a4);
+	vsel(x665A93AC, x556BA09E, x265E97A4, (vector bool int)a3);
 	vnot(x99A56C53, x665A93AC);
-	vsel(x1, x265E97A4, x99A56C53, a1);
+	vsel(x1, x265E97A4, x99A56C53, (vector bool int)a1);
 	vxor(*out2, *out2, x1);
 
 	vxor(x25A1A797, x03FF3033, x265E97A4);
-	vsel(x5713754C, a2, x0F33F0CC, x074F201F);
-	vsel(x66559355, x665A93AC, a2, a5);
-	vsel(x47B135C6, x25A1A797, x5713754C, x66559355);
+	vsel(x5713754C, a2, x0F33F0CC, (vector bool int)x074F201F);
+	vsel(x66559355, x665A93AC, a2, (vector bool int)a5);
+	vsel(x47B135C6, x25A1A797, x5713754C, (vector bool int)x66559355);
 
 	vxor(x9A5A5C60, x03FF3033, x99A56C53);
-	vsel(xD07AF8F8, x9A5A5C60, x556BA09E, x5A66A599);
+	vsel(xD07AF8F8, x9A5A5C60, x556BA09E, (vector bool int)x5A66A599);
 	vxor(x87698DB4, x5713754C, xD07AF8F8);
 	vxor(xE13C1EE1, x66559355, x87698DB4);
 
-	vsel(x9E48CDE4, x9A5A5C60, x87698DB4, x265E97A4);
-	vsel(x655B905E, x66559355, x05BB50EE, a4);
-	vsel(x00A55CFF, a5, a6, x9A5A5C60);
-	vsel(x9E49915E, x9E48CDE4, x655B905E, x00A55CFF);
-	vsel(x0, x9E49915E, xE13C1EE1, a1);
+	vsel(x9E48CDE4, x9A5A5C60, x87698DB4, (vector bool int)x265E97A4);
+	vsel(x655B905E, x66559355, x05BB50EE, (vector bool int)a4);
+	vsel(x00A55CFF, a5, a6, (vector bool int)x9A5A5C60);
+	vsel(x9E49915E, x9E48CDE4, x655B905E, (vector bool int)x00A55CFF);
+	vsel(x0, x9E49915E, xE13C1EE1, (vector bool int)a1);
 	vxor(*out1, *out1, x0);
 
-	vsel(xD6599874, xD07AF8F8, x66559355, x0F33F0CC);
+	vsel(xD6599874, xD07AF8F8, x66559355, (vector bool int)x0F33F0CC);
 	vand(x05330022, x0F330F33, x05BB50EE);
-	vsel(xD2699876, xD6599874, x00A55CFF, x05330022);
-	vsel(x3, x5A66A599, xD2699876, a1);
+	vsel(xD2699876, xD6599874, x00A55CFF, (vector bool int)x05330022);
+	vsel(x3, x5A66A599, xD2699876, (vector bool int)a1);
 	vxor(*out4, *out4, x3);
 
-	vsel(x665F9364, x265E97A4, x66559355, x47B135C6);
-	vsel(xD573F0F2, xD07AF8F8, x05330022, a4);
+	vsel(x665F9364, x265E97A4, x66559355, (vector bool int)x47B135C6);
+	vsel(xD573F0F2, xD07AF8F8, x05330022, (vector bool int)a4);
 	vxor(xB32C6396, x665F9364, xD573F0F2);
-	vsel(x2, xB32C6396, x47B135C6, a1);
+	vsel(x2, xB32C6396, x47B135C6, (vector bool int)a1);
 	vxor(*out3, *out3, x2);
 }
 #else
@@ -433,49 +433,49 @@ s3(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype xD579DDF4, xD579F0C3, xB32C6396;
 	vtype x0, x1, x2, x3;
 
-	vsel(x0F330F33, a4, a3, a5);
+	vsel(x0F330F33, a4, a3, (vector bool int)a5);
 	vxor(x0F33F0CC, a6, x0F330F33);
 	vxor(x5A66A599, a2, x0F33F0CC);
 
-	vsel(x2111B7BB, a3, a6, x5A66A599);
-	vsel(x03FF3033, a5, a3, x0F33F0CC);
-	vsel(x05BB50EE, a5, x0F33F0CC, a2);
-	vsel(x074F201F, x03FF3033, a4, x05BB50EE);
+	vsel(x2111B7BB, a3, a6, (vector bool int)x5A66A599);
+	vsel(x03FF3033, a5, a3, (vector bool int)x0F33F0CC);
+	vsel(x05BB50EE, a5, x0F33F0CC, (vector bool int)a2);
+	vsel(x074F201F, x03FF3033, a4, (vector bool int)x05BB50EE);
 	vxor(x265E97A4, x2111B7BB, x074F201F);
 
-	vsel(x556BA09E, x5A66A599, x05BB50EE, a4);
-	vsel(x665A93AC, x556BA09E, x265E97A4, a3);
+	vsel(x556BA09E, x5A66A599, x05BB50EE, (vector bool int)a4);
+	vsel(x665A93AC, x556BA09E, x265E97A4, (vector bool int)a3);
 	vnot(x99A56C53, x665A93AC);
-	vsel(x1, x265E97A4, x99A56C53, a1);
+	vsel(x1, x265E97A4, x99A56C53, (vector bool int)a1);
 	vxor(*out2, *out2, x1);
 
 	vxor(x25A1A797, x03FF3033, x265E97A4);
-	vsel(x5713754C, a2, x0F33F0CC, x074F201F);
-	vsel(x66559355, x665A93AC, a2, a5);
-	vsel(x47B135C6, x25A1A797, x5713754C, x66559355);
+	vsel(x5713754C, a2, x0F33F0CC, (vector bool int)x074F201F);
+	vsel(x66559355, x665A93AC, a2, (vector bool int)a5);
+	vsel(x47B135C6, x25A1A797, x5713754C, (vector bool int)x66559355);
 
 	vxor(x9A5A5C60, x03FF3033, x99A56C53);
-	vsel(xD07AF8F8, x9A5A5C60, x556BA09E, x5A66A599);
+	vsel(xD07AF8F8, x9A5A5C60, x556BA09E, (vector bool int)x5A66A599);
 	vxor(x87698DB4, x5713754C, xD07AF8F8);
 	vxor(xE13C1EE1, x66559355, x87698DB4);
 
-	vsel(x000CFFCF, a4, a6, x0F33F0CC);
-	vsel(x9A485CCE, x9A5A5C60, x000CFFCF, x05BB50EE);
-	vsel(x0521DDF4, x87698DB4, a6, x9A5A5C60);
-	vsel(x9E49915E, x9A485CCE, x66559355, x0521DDF4);
-	vsel(x0, x9E49915E, xE13C1EE1, a1);
+	vsel(x000CFFCF, a4, a6, (vector bool int)x0F33F0CC);
+	vsel(x9A485CCE, x9A5A5C60, x000CFFCF, (vector bool int)x05BB50EE);
+	vsel(x0521DDF4, x87698DB4, a6, (vector bool int)x9A5A5C60);
+	vsel(x9E49915E, x9A485CCE, x66559355, (vector bool int)x0521DDF4);
+	vsel(x0, x9E49915E, xE13C1EE1, (vector bool int)a1);
 	vxor(*out1, *out1, x0);
 
-	vsel(xD069F8B4, xD07AF8F8, x87698DB4, a5);
-	vsel(x030FF0C3, x000CFFCF, x03FF3033, a4);
-	vsel(xD2699876, xD069F8B4, x9E49915E, x030FF0C3);
-	vsel(x3, x5A66A599, xD2699876, a1);
+	vsel(xD069F8B4, xD07AF8F8, x87698DB4, (vector bool int)a5);
+	vsel(x030FF0C3, x000CFFCF, x03FF3033, (vector bool int)a4);
+	vsel(xD2699876, xD069F8B4, x9E49915E, (vector bool int)x030FF0C3);
+	vsel(x3, x5A66A599, xD2699876, (vector bool int)a1);
 	vxor(*out4, *out4, x3);
 
-	vsel(xD579DDF4, xD07AF8F8, a2, x5713754C);
-	vsel(xD579F0C3, xD579DDF4, x030FF0C3, a6);
+	vsel(xD579DDF4, xD07AF8F8, a2, (vector bool int)x5713754C);
+	vsel(xD579F0C3, xD579DDF4, x030FF0C3, (vector bool int)a6);
 	vxor(xB32C6396, x66559355, xD579F0C3);
-	vsel(x2, xB32C6396, x47B135C6, a1);
+	vsel(x2, xB32C6396, x47B135C6, (vector bool int)a1);
 	vxor(*out3, *out3, x2);
 }
 #endif
@@ -495,40 +495,40 @@ s4(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x31F720B3, x11FB21B3, x4712A7AD, x9586CA37;
 	vtype x0, x1, x2, x3;
 
-	vsel(x0505AFAF, a5, a3, a1);
-	vsel(x0555AF55, x0505AFAF, a1, a4);
+	vsel(x0505AFAF, a5, a3, (vector bool int)a1);
+	vsel(x0555AF55, x0505AFAF, a1, (vector bool int)a4);
 	vxor(x0A5AA05A, a3, x0555AF55);
-	vsel(x46566456, a1, x0A5AA05A, a2);
-	vsel(x0A0A5F5F, a3, a5, a1);
+	vsel(x46566456, a1, x0A5AA05A, (vector bool int)a2);
+	vsel(x0A0A5F5F, a3, a5, (vector bool int)a1);
 	vxor(x0AF55FA0, a4, x0A0A5F5F);
-	vsel(x0AF50F0F, x0AF55FA0, a3, a5);
+	vsel(x0AF50F0F, x0AF55FA0, a3, (vector bool int)a5);
 	vxor(x4CA36B59, x46566456, x0AF50F0F);
 
 	vnot(xB35C94A6, x4CA36B59);
 
-	vsel(x01BB23BB, a4, a2, x0555AF55);
+	vsel(x01BB23BB, a4, a2, (vector bool int)x0555AF55);
 	vxor(x5050FAFA, a1, x0505AFAF);
-	vsel(xA31C26BE, xB35C94A6, x01BB23BB, x5050FAFA);
+	vsel(xA31C26BE, xB35C94A6, x01BB23BB, (vector bool int)x5050FAFA);
 	vxor(xA91679E1, x0A0A5F5F, xA31C26BE);
 
 	vnot(x56E9861E, xA91679E1);
 
-	vsel(x50E9FA1E, x5050FAFA, x56E9861E, a4);
-	vsel(x0AF55F00, x0AF50F0F, x0AF55FA0, x0A0A5F5F);
-	vsel(x827D9784, xB35C94A6, x0AF55F00, a2);
+	vsel(x50E9FA1E, x5050FAFA, x56E9861E, (vector bool int)a4);
+	vsel(x0AF55F00, x0AF50F0F, x0AF55FA0, (vector bool int)x0A0A5F5F);
+	vsel(x827D9784, xB35C94A6, x0AF55F00, (vector bool int)a2);
 	vxor(xD2946D9A, x50E9FA1E, x827D9784);
-	vsel(x2, xD2946D9A, x4CA36B59, a6);
+	vsel(x2, xD2946D9A, x4CA36B59, (vector bool int)a6);
 	vxor(*out3, *out3, x2);
-	vsel(x3, xB35C94A6, xD2946D9A, a6);
+	vsel(x3, xB35C94A6, xD2946D9A, (vector bool int)a6);
 	vxor(*out4, *out4, x3);
 
-	vsel(x31F720B3, a2, a4, x0AF55FA0);
-	vsel(x11FB21B3, x01BB23BB, x31F720B3, x5050FAFA);
+	vsel(x31F720B3, a2, a4, (vector bool int)x0AF55FA0);
+	vsel(x11FB21B3, x01BB23BB, x31F720B3, (vector bool int)x5050FAFA);
 	vxor(x4712A7AD, x56E9861E, x11FB21B3);
 	vxor(x9586CA37, xD2946D9A, x4712A7AD);
-	vsel(x0, x56E9861E, x9586CA37, a6);
+	vsel(x0, x56E9861E, x9586CA37, (vector bool int)a6);
 	vxor(*out1, *out1, x0);
-	vsel(x1, x9586CA37, xA91679E1, a6);
+	vsel(x1, x9586CA37, xA91679E1, (vector bool int)a6);
 	vxor(*out2, *out2, x1);
 }
 #else
@@ -546,40 +546,40 @@ s4(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype xD2F56D00, x46F9870F, x4773A737, x9586CA37;
 	vtype x0, x1, x2, x3;
 
-	vsel(x0505AFAF, a5, a3, a1);
-	vsel(x0555AF55, x0505AFAF, a1, a4);
+	vsel(x0505AFAF, a5, a3, (vector bool int)a1);
+	vsel(x0555AF55, x0505AFAF, a1, (vector bool int)a4);
 	vxor(x0A5AA05A, a3, x0555AF55);
-	vsel(x46566456, a1, x0A5AA05A, a2);
-	vsel(x0A0A5F5F, a3, a5, a1);
+	vsel(x46566456, a1, x0A5AA05A, (vector bool int)a2);
+	vsel(x0A0A5F5F, a3, a5, (vector bool int)a1);
 	vxor(x0AF55FA0, a4, x0A0A5F5F);
-	vsel(x0AF50F0F, x0AF55FA0, a3, a5);
+	vsel(x0AF50F0F, x0AF55FA0, a3, (vector bool int)a5);
 	vxor(x4CA36B59, x46566456, x0AF50F0F);
 
 	vnot(xB35C94A6, x4CA36B59);
 
-	vsel(x01BB23BB, a4, a2, x0555AF55);
+	vsel(x01BB23BB, a4, a2, (vector bool int)x0555AF55);
 	vxor(x5050FAFA, a1, x0505AFAF);
-	vsel(xA31C26BE, xB35C94A6, x01BB23BB, x5050FAFA);
+	vsel(xA31C26BE, xB35C94A6, x01BB23BB, (vector bool int)x5050FAFA);
 	vxor(xA91679E1, x0A0A5F5F, xA31C26BE);
 
 	vnot(x56E9861E, xA91679E1);
 
-	vsel(x50E9FA1E, x5050FAFA, x56E9861E, a4);
-	vsel(x0AF55F00, x0AF50F0F, x0AF55FA0, x0A0A5F5F);
-	vsel(x827D9784, xB35C94A6, x0AF55F00, a2);
+	vsel(x50E9FA1E, x5050FAFA, x56E9861E, (vector bool int)a4);
+	vsel(x0AF55F00, x0AF50F0F, x0AF55FA0, (vector bool int)x0A0A5F5F);
+	vsel(x827D9784, xB35C94A6, x0AF55F00, (vector bool int)a2);
 	vxor(xD2946D9A, x50E9FA1E, x827D9784);
-	vsel(x2, xD2946D9A, x4CA36B59, a6);
+	vsel(x2, xD2946D9A, x4CA36B59, (vector bool int)a6);
 	vxor(*out3, *out3, x2);
-	vsel(x3, xB35C94A6, xD2946D9A, a6);
+	vsel(x3, xB35C94A6, xD2946D9A, (vector bool int)a6);
 	vxor(*out4, *out4, x3);
 
-	vsel(xD2F56D00, xD2946D9A, x0AF55F00, a4);
-	vsel(x46F9870F, x56E9861E, x0AF50F0F, a2);
-	vsel(x4773A737, x46F9870F, a2, x01BB23BB);
+	vsel(xD2F56D00, xD2946D9A, x0AF55F00, (vector bool int)a4);
+	vsel(x46F9870F, x56E9861E, x0AF50F0F, (vector bool int)a2);
+	vsel(x4773A737, x46F9870F, a2, (vector bool int)x01BB23BB);
 	vxor(x9586CA37, xD2F56D00, x4773A737);
-	vsel(x0, x56E9861E, x9586CA37, a6);
+	vsel(x0, x56E9861E, x9586CA37, (vector bool int)a6);
 	vxor(*out1, *out1, x0);
-	vsel(x1, x9586CA37, xA91679E1, a6);
+	vsel(x1, x9586CA37, xA91679E1, (vector bool int)a6);
 	vxor(*out2, *out2, x1);
 }
 #endif
@@ -600,51 +600,51 @@ s5(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x891556DF, xE5E77F82, x6CF2295D;
 	vtype x0, x1, x2, x3;
 
-	vsel(x550F550F, a1, a3, a5);
+	vsel(x550F550F, a1, a3, (vector bool int)a5);
 	vnot(xAAF0AAF0, x550F550F);
-	vsel(xA5F5A5F5, xAAF0AAF0, a1, a3);
+	vsel(xA5F5A5F5, xAAF0AAF0, a1, (vector bool int)a3);
 	vxor(x96C696C6, a2, xA5F5A5F5);
 	vxor(x00FFFF00, a5, a6);
 	vxor(x963969C6, x96C696C6, x00FFFF00);
 
-	vsel(x2E3C2E3C, a3, xAAF0AAF0, a2);
-	vsel(xB73121F7, a2, x963969C6, x96C696C6);
-	vsel(x1501DF0F, a6, x550F550F, xB73121F7);
-	vsel(x00558A5F, x1501DF0F, a5, a1);
+	vsel(x2E3C2E3C, a3, xAAF0AAF0, (vector bool int)a2);
+	vsel(xB73121F7, a2, x963969C6, (vector bool int)x96C696C6);
+	vsel(x1501DF0F, a6, x550F550F, (vector bool int)xB73121F7);
+	vsel(x00558A5F, x1501DF0F, a5, (vector bool int)a1);
 	vxor(x2E69A463, x2E3C2E3C, x00558A5F);
 
-	vsel(x0679ED42, x00FFFF00, x2E69A463, x96C696C6);
-	vsel(x045157FD, a6, a1, x0679ED42);
-	vsel(xB32077FF, xB73121F7, a6, x045157FD);
+	vsel(x0679ED42, x00FFFF00, x2E69A463, (vector bool int)x96C696C6);
+	vsel(x045157FD, a6, a1, (vector bool int)x0679ED42);
+	vsel(xB32077FF, xB73121F7, a6, (vector bool int)x045157FD);
 	vxor(x9D49D39C, x2E69A463, xB32077FF);
-	vsel(x2, x9D49D39C, x2E69A463, a4);
+	vsel(x2, x9D49D39C, x2E69A463, (vector bool int)a4);
 	vxor(*out3, *out3, x2);
 
-	vsel(xAC81CFB2, xAAF0AAF0, x1501DF0F, x0679ED42);
-	vsel(xF72577AF, xB32077FF, x550F550F, a1);
+	vsel(xAC81CFB2, xAAF0AAF0, x1501DF0F, (vector bool int)x0679ED42);
+	vsel(xF72577AF, xB32077FF, x550F550F, (vector bool int)a1);
 	vxor(x5BA4B81D, xAC81CFB2, xF72577AF);
-	vsel(x1, x5BA4B81D, x963969C6, a4);
+	vsel(x1, x5BA4B81D, x963969C6, (vector bool int)a4);
 	vxor(*out2, *out2, x1);
 
-	vsel(x5BA477AF, x5BA4B81D, xF72577AF, a6);
-	vsel(x4895469F, x5BA477AF, x00558A5F, a2);
-	vsel(x3A35273A, x2E3C2E3C, a2, x963969C6);
-	vsel(x1A35669A, x4895469F, x3A35273A, x5BA4B81D);
+	vsel(x5BA477AF, x5BA4B81D, xF72577AF, (vector bool int)a6);
+	vsel(x4895469F, x5BA477AF, x00558A5F, (vector bool int)a2);
+	vsel(x3A35273A, x2E3C2E3C, a2, (vector bool int)x963969C6);
+	vsel(x1A35669A, x4895469F, x3A35273A, (vector bool int)x5BA4B81D);
 
-	vsel(x12E6283D, a5, x5BA4B81D, x963969C6);
-	vsel(x9E47D3D4, x96C696C6, x9D49D39C, xAC81CFB2);
-	vsel(x1A676AB4, x12E6283D, x9E47D3D4, x4895469F);
+	vsel(x12E6283D, a5, x5BA4B81D, (vector bool int)x963969C6);
+	vsel(x9E47D3D4, x96C696C6, x9D49D39C, (vector bool int)xAC81CFB2);
+	vsel(x1A676AB4, x12E6283D, x9E47D3D4, (vector bool int)x4895469F);
 
-	vsel(x2E3C69C6, x2E3C2E3C, x963969C6, a6);
-	vsel(x92C7C296, x96C696C6, x1A676AB4, a1);
-	vsel(x369CC1D6, x2E3C69C6, x92C7C296, x5BA4B81D);
-	vsel(x0, x369CC1D6, x1A676AB4, a4);
+	vsel(x2E3C69C6, x2E3C2E3C, x963969C6, (vector bool int)a6);
+	vsel(x92C7C296, x96C696C6, x1A676AB4, (vector bool int)a1);
+	vsel(x369CC1D6, x2E3C69C6, x92C7C296, (vector bool int)x5BA4B81D);
+	vsel(x0, x369CC1D6, x1A676AB4, (vector bool int)a4);
 	vxor(*out1, *out1, x0);
 
-	vsel(x891556DF, xB32077FF, x4895469F, x3A35273A);
-	vsel(xE5E77F82, xF72577AF, x00FFFF00, x12E6283D);
+	vsel(x891556DF, xB32077FF, x4895469F, (vector bool int)x3A35273A);
+	vsel(xE5E77F82, xF72577AF, x00FFFF00, (vector bool int)x12E6283D);
 	vxor(x6CF2295D, x891556DF, xE5E77F82);
-	vsel(x3, x1A35669A, x6CF2295D, a4);
+	vsel(x3, x1A35669A, x6CF2295D, (vector bool int)a4);
 	vxor(*out4, *out4, x3);
 }
 #elif regs == 19 || (regs >= 20 && latency >= 3)
@@ -663,51 +663,51 @@ s5(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x891556DF, xE5E77F82, x6CF2295D;
 	vtype x0, x1, x2, x3;
 
-	vsel(x550F550F, a1, a3, a5);
+	vsel(x550F550F, a1, a3, (vector bool int)a5);
 	vnot(xAAF0AAF0, x550F550F);
-	vsel(xA5F5A5F5, xAAF0AAF0, a1, a3);
+	vsel(xA5F5A5F5, xAAF0AAF0, a1, (vector bool int)a3);
 	vxor(x96C696C6, a2, xA5F5A5F5);
 	vxor(x00FFFF00, a5, a6);
 	vxor(x963969C6, x96C696C6, x00FFFF00);
 
-	vsel(x2E3C2E3C, a3, xAAF0AAF0, a2);
-	vsel(xB73121F7, a2, x963969C6, x96C696C6);
-	vsel(x1501DF0F, a6, x550F550F, xB73121F7);
-	vsel(x00558A5F, x1501DF0F, a5, a1);
+	vsel(x2E3C2E3C, a3, xAAF0AAF0, (vector bool int)a2);
+	vsel(xB73121F7, a2, x963969C6, (vector bool int)x96C696C6);
+	vsel(x1501DF0F, a6, x550F550F, (vector bool int)xB73121F7);
+	vsel(x00558A5F, x1501DF0F, a5, (vector bool int)a1);
 	vxor(x2E69A463, x2E3C2E3C, x00558A5F);
 
-	vsel(x0679ED42, x00FFFF00, x2E69A463, x96C696C6);
-	vsel(x045157FD, a6, a1, x0679ED42);
-	vsel(xB32077FF, xB73121F7, a6, x045157FD);
+	vsel(x0679ED42, x00FFFF00, x2E69A463, (vector bool int)x96C696C6);
+	vsel(x045157FD, a6, a1, (vector bool int)x0679ED42);
+	vsel(xB32077FF, xB73121F7, a6, (vector bool int)x045157FD);
 	vxor(x9D49D39C, x2E69A463, xB32077FF);
-	vsel(x2, x9D49D39C, x2E69A463, a4);
+	vsel(x2, x9D49D39C, x2E69A463, (vector bool int)a4);
 	vxor(*out3, *out3, x2);
 
-	vsel(xAC81CFB2, xAAF0AAF0, x1501DF0F, x0679ED42);
-	vsel(xF72577AF, xB32077FF, x550F550F, a1);
+	vsel(xAC81CFB2, xAAF0AAF0, x1501DF0F, (vector bool int)x0679ED42);
+	vsel(xF72577AF, xB32077FF, x550F550F, (vector bool int)a1);
 	vxor(x5BA4B81D, xAC81CFB2, xF72577AF);
-	vsel(x1, x5BA4B81D, x963969C6, a4);
+	vsel(x1, x5BA4B81D, x963969C6, (vector bool int)a4);
 	vxor(*out2, *out2, x1);
 
-	vsel(x5BA477AF, x5BA4B81D, xF72577AF, a6);
-	vsel(x4895469F, x5BA477AF, x00558A5F, a2);
-	vsel(x3A35273A, x2E3C2E3C, a2, x963969C6);
-	vsel(x1A35669A, x4895469F, x3A35273A, x5BA4B81D);
+	vsel(x5BA477AF, x5BA4B81D, xF72577AF, (vector bool int)a6);
+	vsel(x4895469F, x5BA477AF, x00558A5F, (vector bool int)a2);
+	vsel(x3A35273A, x2E3C2E3C, a2, (vector bool int)x963969C6);
+	vsel(x1A35669A, x4895469F, x3A35273A, (vector bool int)x5BA4B81D);
 
-	vsel(x12E6283D, a5, x5BA4B81D, x963969C6);
-	vsel(x9E47D3D4, x96C696C6, x9D49D39C, xAC81CFB2);
-	vsel(x1A676AB4, x12E6283D, x9E47D3D4, x4895469F);
+	vsel(x12E6283D, a5, x5BA4B81D, (vector bool int)x963969C6);
+	vsel(x9E47D3D4, x96C696C6, x9D49D39C, (vector bool int)xAC81CFB2);
+	vsel(x1A676AB4, x12E6283D, x9E47D3D4, (vector bool int)x4895469F);
 
-	vsel(x2E3CD3D4, x2E3C2E3C, x9E47D3D4, a6);
-	vsel(x9697C1C6, x96C696C6, x963969C6, x045157FD);
-	vsel(x369CC1D6, x2E3CD3D4, x9697C1C6, x5BA477AF);
-	vsel(x0, x369CC1D6, x1A676AB4, a4);
+	vsel(x2E3CD3D4, x2E3C2E3C, x9E47D3D4, (vector bool int)a6);
+	vsel(x9697C1C6, x96C696C6, x963969C6, (vector bool int)x045157FD);
+	vsel(x369CC1D6, x2E3CD3D4, x9697C1C6, (vector bool int)x5BA477AF);
+	vsel(x0, x369CC1D6, x1A676AB4, (vector bool int)a4);
 	vxor(*out1, *out1, x0);
 
-	vsel(x891556DF, xB32077FF, x4895469F, x3A35273A);
-	vsel(xE5E77F82, xF72577AF, x00FFFF00, x12E6283D);
+	vsel(x891556DF, xB32077FF, x4895469F, (vector bool int)x3A35273A);
+	vsel(xE5E77F82, xF72577AF, x00FFFF00, (vector bool int)x12E6283D);
 	vxor(x6CF2295D, x891556DF, xE5E77F82);
-	vsel(x3, x1A35669A, x6CF2295D, a4);
+	vsel(x3, x1A35669A, x6CF2295D, (vector bool int)a4);
 	vxor(*out4, *out4, x3);
 }
 #elif regs <= 18 && latency >= 5
@@ -726,51 +726,51 @@ s5(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x891556DF, xE5E77F82, x6CF2295D;
 	vtype x0, x1, x2, x3;
 
-	vsel(x550F550F, a1, a3, a5);
+	vsel(x550F550F, a1, a3, (vector bool int)a5);
 	vnot(xAAF0AAF0, x550F550F);
-	vsel(xA5F5A5F5, xAAF0AAF0, a1, a3);
+	vsel(xA5F5A5F5, xAAF0AAF0, a1, (vector bool int)a3);
 	vxor(x96C696C6, a2, xA5F5A5F5);
 	vxor(x00FFFF00, a5, a6);
 	vxor(x963969C6, x96C696C6, x00FFFF00);
 
-	vsel(x2E3C2E3C, a3, xAAF0AAF0, a2);
-	vsel(xB73121F7, a2, x963969C6, x96C696C6);
-	vsel(x1501DF0F, a6, x550F550F, xB73121F7);
-	vsel(x00558A5F, x1501DF0F, a5, a1);
+	vsel(x2E3C2E3C, a3, xAAF0AAF0, (vector bool int)a2);
+	vsel(xB73121F7, a2, x963969C6, (vector bool int)x96C696C6);
+	vsel(x1501DF0F, a6, x550F550F, (vector bool int)xB73121F7);
+	vsel(x00558A5F, x1501DF0F, a5, (vector bool int)a1);
 	vxor(x2E69A463, x2E3C2E3C, x00558A5F);
 
-	vsel(x0679ED42, x00FFFF00, x2E69A463, x96C696C6);
-	vsel(x045157FD, a6, a1, x0679ED42);
-	vsel(xB32077FF, xB73121F7, a6, x045157FD);
+	vsel(x0679ED42, x00FFFF00, x2E69A463, (vector bool int)x96C696C6);
+	vsel(x045157FD, a6, a1, (vector bool int)x0679ED42);
+	vsel(xB32077FF, xB73121F7, a6, (vector bool int)x045157FD);
 	vxor(x9D49D39C, x2E69A463, xB32077FF);
-	vsel(x2, x9D49D39C, x2E69A463, a4);
+	vsel(x2, x9D49D39C, x2E69A463, (vector bool int)a4);
 	vxor(*out3, *out3, x2);
 
-	vsel(xAC81CFB2, xAAF0AAF0, x1501DF0F, x0679ED42);
-	vsel(xF72577AF, xB32077FF, x550F550F, a1);
+	vsel(xAC81CFB2, xAAF0AAF0, x1501DF0F, (vector bool int)x0679ED42);
+	vsel(xF72577AF, xB32077FF, x550F550F, (vector bool int)a1);
 	vxor(x5BA4B81D, xAC81CFB2, xF72577AF);
-	vsel(x1, x5BA4B81D, x963969C6, a4);
+	vsel(x1, x5BA4B81D, x963969C6, (vector bool int)a4);
 	vxor(*out2, *out2, x1);
 
-	vsel(x5BA477AF, x5BA4B81D, xF72577AF, a6);
-	vsel(x4895469F, x5BA477AF, x00558A5F, a2);
-	vsel(x3A35273A, x2E3C2E3C, a2, x963969C6);
-	vsel(x1A35669A, x4895469F, x3A35273A, x5BA4B81D);
+	vsel(x5BA477AF, x5BA4B81D, xF72577AF, (vector bool int)a6);
+	vsel(x4895469F, x5BA477AF, x00558A5F, (vector bool int)a2);
+	vsel(x3A35273A, x2E3C2E3C, a2, (vector bool int)x963969C6);
+	vsel(x1A35669A, x4895469F, x3A35273A, (vector bool int)x5BA4B81D);
 
-	vsel(x12E6283D, a5, x5BA4B81D, x963969C6);
-	vsel(x9E47D3D4, x96C696C6, x9D49D39C, xAC81CFB2);
-	vsel(x1A676AB4, x12E6283D, x9E47D3D4, x4895469F);
+	vsel(x12E6283D, a5, x5BA4B81D, (vector bool int)x963969C6);
+	vsel(x9E47D3D4, x96C696C6, x9D49D39C, (vector bool int)xAC81CFB2);
+	vsel(x1A676AB4, x12E6283D, x9E47D3D4, (vector bool int)x4895469F);
 
-	vsel(x2E3CD3D4, x2E3C2E3C, x9E47D3D4, a6);
-	vsel(x96DF41C6, x963969C6, x96C696C6, x12E6283D);
-	vsel(x369CC1D6, x2E3CD3D4, x96DF41C6, x5BA477AF);
-	vsel(x0, x369CC1D6, x1A676AB4, a4);
+	vsel(x2E3CD3D4, x2E3C2E3C, x9E47D3D4, (vector bool int)a6);
+	vsel(x96DF41C6, x963969C6, x96C696C6, (vector bool int)x12E6283D);
+	vsel(x369CC1D6, x2E3CD3D4, x96DF41C6, (vector bool int)x5BA477AF);
+	vsel(x0, x369CC1D6, x1A676AB4, (vector bool int)a4);
 	vxor(*out1, *out1, x0);
 
-	vsel(x891556DF, xB32077FF, x4895469F, x3A35273A);
-	vsel(xE5E77F82, xF72577AF, x00FFFF00, x12E6283D);
+	vsel(x891556DF, xB32077FF, x4895469F, (vector bool int)x3A35273A);
+	vsel(xE5E77F82, xF72577AF, x00FFFF00, (vector bool int)x12E6283D);
 	vxor(x6CF2295D, x891556DF, xE5E77F82);
-	vsel(x3, x1A35669A, x6CF2295D, a4);
+	vsel(x3, x1A35669A, x6CF2295D, (vector bool int)a4);
 	vxor(*out4, *out4, x3);
 }
 #elif regs >= 20
@@ -789,51 +789,51 @@ s5(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x2E3CA5F5, x9697C1C6, x369CC1D6;
 	vtype x0, x1, x2, x3;
 
-	vsel(x550F550F, a1, a3, a5);
+	vsel(x550F550F, a1, a3, (vector bool int)a5);
 	vnot(xAAF0AAF0, x550F550F);
-	vsel(xA5F5A5F5, xAAF0AAF0, a1, a3);
+	vsel(xA5F5A5F5, xAAF0AAF0, a1, (vector bool int)a3);
 	vxor(x96C696C6, a2, xA5F5A5F5);
 	vxor(x00FFFF00, a5, a6);
 	vxor(x963969C6, x96C696C6, x00FFFF00);
 
-	vsel(x2E3C2E3C, a3, xAAF0AAF0, a2);
-	vsel(xB73121F7, a2, x963969C6, x96C696C6);
-	vsel(x1501DF0F, a6, x550F550F, xB73121F7);
-	vsel(x00558A5F, x1501DF0F, a5, a1);
+	vsel(x2E3C2E3C, a3, xAAF0AAF0, (vector bool int)a2);
+	vsel(xB73121F7, a2, x963969C6, (vector bool int)x96C696C6);
+	vsel(x1501DF0F, a6, x550F550F, (vector bool int)xB73121F7);
+	vsel(x00558A5F, x1501DF0F, a5, (vector bool int)a1);
 	vxor(x2E69A463, x2E3C2E3C, x00558A5F);
 
-	vsel(x0679ED42, x00FFFF00, x2E69A463, x96C696C6);
-	vsel(x045157FD, a6, a1, x0679ED42);
-	vsel(xB32077FF, xB73121F7, a6, x045157FD);
+	vsel(x0679ED42, x00FFFF00, x2E69A463, (vector bool int)x96C696C6);
+	vsel(x045157FD, a6, a1, (vector bool int)x0679ED42);
+	vsel(xB32077FF, xB73121F7, a6, (vector bool int)x045157FD);
 	vxor(x9D49D39C, x2E69A463, xB32077FF);
-	vsel(x2, x9D49D39C, x2E69A463, a4);
+	vsel(x2, x9D49D39C, x2E69A463, (vector bool int)a4);
 	vxor(*out3, *out3, x2);
 
-	vsel(xAC81CFB2, xAAF0AAF0, x1501DF0F, x0679ED42);
-	vsel(xF72577AF, xB32077FF, x550F550F, a1);
+	vsel(xAC81CFB2, xAAF0AAF0, x1501DF0F, (vector bool int)x0679ED42);
+	vsel(xF72577AF, xB32077FF, x550F550F, (vector bool int)a1);
 	vxor(x5BA4B81D, xAC81CFB2, xF72577AF);
-	vsel(x1, x5BA4B81D, x963969C6, a4);
+	vsel(x1, x5BA4B81D, x963969C6, (vector bool int)a4);
 	vxor(*out2, *out2, x1);
 
-	vsel(x5BA477AF, x5BA4B81D, xF72577AF, a6);
-	vsel(x4895469F, x5BA477AF, x00558A5F, a2);
-	vsel(x3A35273A, x2E3C2E3C, a2, x963969C6);
-	vsel(x1A35669A, x4895469F, x3A35273A, x5BA4B81D);
+	vsel(x5BA477AF, x5BA4B81D, xF72577AF, (vector bool int)a6);
+	vsel(x4895469F, x5BA477AF, x00558A5F, (vector bool int)a2);
+	vsel(x3A35273A, x2E3C2E3C, a2, (vector bool int)x963969C6);
+	vsel(x1A35669A, x4895469F, x3A35273A, (vector bool int)x5BA4B81D);
 
-	vsel(x12E6283D, a5, x5BA4B81D, x963969C6);
-	vsel(x9E47D3D4, x96C696C6, x9D49D39C, xAC81CFB2);
-	vsel(x1A676AB4, x12E6283D, x9E47D3D4, x4895469F);
+	vsel(x12E6283D, a5, x5BA4B81D, (vector bool int)x963969C6);
+	vsel(x9E47D3D4, x96C696C6, x9D49D39C, (vector bool int)xAC81CFB2);
+	vsel(x1A676AB4, x12E6283D, x9E47D3D4, (vector bool int)x4895469F);
 
-	vsel(x891556DF, xB32077FF, x4895469F, x3A35273A);
-	vsel(xE5E77F82, xF72577AF, x00FFFF00, x12E6283D);
+	vsel(x891556DF, xB32077FF, x4895469F, (vector bool int)x3A35273A);
+	vsel(xE5E77F82, xF72577AF, x00FFFF00, (vector bool int)x12E6283D);
 	vxor(x6CF2295D, x891556DF, xE5E77F82);
-	vsel(x3, x1A35669A, x6CF2295D, a4);
+	vsel(x3, x1A35669A, x6CF2295D, (vector bool int)a4);
 	vxor(*out4, *out4, x3);
 
-	vsel(x2E3CA5F5, x2E3C2E3C, xA5F5A5F5, a6);
-	vsel(x9697C1C6, x96C696C6, x963969C6, x045157FD);
-	vsel(x369CC1D6, x2E3CA5F5, x9697C1C6, x5BA477AF);
-	vsel(x0, x369CC1D6, x1A676AB4, a4);
+	vsel(x2E3CA5F5, x2E3C2E3C, xA5F5A5F5, (vector bool int)a6);
+	vsel(x9697C1C6, x96C696C6, x963969C6, (vector bool int)x045157FD);
+	vsel(x369CC1D6, x2E3CA5F5, x9697C1C6, (vector bool int)x5BA477AF);
+	vsel(x0, x369CC1D6, x1A676AB4, (vector bool int)a4);
 	vxor(*out1, *out1, x0);
 }
 #else
@@ -852,51 +852,51 @@ s5(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x2E3CD3D4, x96DF41C6, x369CC1D6;
 	vtype x0, x1, x2, x3;
 
-	vsel(x550F550F, a1, a3, a5);
+	vsel(x550F550F, a1, a3, (vector bool int)a5);
 	vnot(xAAF0AAF0, x550F550F);
-	vsel(xA5F5A5F5, xAAF0AAF0, a1, a3);
+	vsel(xA5F5A5F5, xAAF0AAF0, a1, (vector bool int)a3);
 	vxor(x96C696C6, a2, xA5F5A5F5);
 	vxor(x00FFFF00, a5, a6);
 	vxor(x963969C6, x96C696C6, x00FFFF00);
 
-	vsel(x2E3C2E3C, a3, xAAF0AAF0, a2);
-	vsel(xB73121F7, a2, x963969C6, x96C696C6);
-	vsel(x1501DF0F, a6, x550F550F, xB73121F7);
-	vsel(x00558A5F, x1501DF0F, a5, a1);
+	vsel(x2E3C2E3C, a3, xAAF0AAF0, (vector bool int)a2);
+	vsel(xB73121F7, a2, x963969C6, (vector bool int)x96C696C6);
+	vsel(x1501DF0F, a6, x550F550F, (vector bool int)xB73121F7);
+	vsel(x00558A5F, x1501DF0F, a5, (vector bool int)a1);
 	vxor(x2E69A463, x2E3C2E3C, x00558A5F);
 
-	vsel(x0679ED42, x00FFFF00, x2E69A463, x96C696C6);
-	vsel(x045157FD, a6, a1, x0679ED42);
-	vsel(xB32077FF, xB73121F7, a6, x045157FD);
+	vsel(x0679ED42, x00FFFF00, x2E69A463, (vector bool int)x96C696C6);
+	vsel(x045157FD, a6, a1, (vector bool int)x0679ED42);
+	vsel(xB32077FF, xB73121F7, a6, (vector bool int)x045157FD);
 	vxor(x9D49D39C, x2E69A463, xB32077FF);
-	vsel(x2, x9D49D39C, x2E69A463, a4);
+	vsel(x2, x9D49D39C, x2E69A463, (vector bool int)a4);
 	vxor(*out3, *out3, x2);
 
-	vsel(xAC81CFB2, xAAF0AAF0, x1501DF0F, x0679ED42);
-	vsel(xF72577AF, xB32077FF, x550F550F, a1);
+	vsel(xAC81CFB2, xAAF0AAF0, x1501DF0F, (vector bool int)x0679ED42);
+	vsel(xF72577AF, xB32077FF, x550F550F, (vector bool int)a1);
 	vxor(x5BA4B81D, xAC81CFB2, xF72577AF);
-	vsel(x1, x5BA4B81D, x963969C6, a4);
+	vsel(x1, x5BA4B81D, x963969C6, (vector bool int)a4);
 	vxor(*out2, *out2, x1);
 
-	vsel(x5BA477AF, x5BA4B81D, xF72577AF, a6);
-	vsel(x4895469F, x5BA477AF, x00558A5F, a2);
-	vsel(x3A35273A, x2E3C2E3C, a2, x963969C6);
-	vsel(x1A35669A, x4895469F, x3A35273A, x5BA4B81D);
+	vsel(x5BA477AF, x5BA4B81D, xF72577AF, (vector bool int)a6);
+	vsel(x4895469F, x5BA477AF, x00558A5F, (vector bool int)a2);
+	vsel(x3A35273A, x2E3C2E3C, a2, (vector bool int)x963969C6);
+	vsel(x1A35669A, x4895469F, x3A35273A, (vector bool int)x5BA4B81D);
 
-	vsel(x12E6283D, a5, x5BA4B81D, x963969C6);
-	vsel(x9E47D3D4, x96C696C6, x9D49D39C, xAC81CFB2);
-	vsel(x1A676AB4, x12E6283D, x9E47D3D4, x4895469F);
+	vsel(x12E6283D, a5, x5BA4B81D, (vector bool int)x963969C6);
+	vsel(x9E47D3D4, x96C696C6, x9D49D39C, (vector bool int)xAC81CFB2);
+	vsel(x1A676AB4, x12E6283D, x9E47D3D4, (vector bool int)x4895469F);
 
-	vsel(x891556DF, xB32077FF, x4895469F, x3A35273A);
-	vsel(xE5E77F82, xF72577AF, x00FFFF00, x12E6283D);
+	vsel(x891556DF, xB32077FF, x4895469F, (vector bool int)x3A35273A);
+	vsel(xE5E77F82, xF72577AF, x00FFFF00, (vector bool int)x12E6283D);
 	vxor(x6CF2295D, x891556DF, xE5E77F82);
-	vsel(x3, x1A35669A, x6CF2295D, a4);
+	vsel(x3, x1A35669A, x6CF2295D, (vector bool int)a4);
 	vxor(*out4, *out4, x3);
 
-	vsel(x2E3CD3D4, x2E3C2E3C, x9E47D3D4, a6);
-	vsel(x96DF41C6, x963969C6, x96C696C6, x12E6283D);
-	vsel(x369CC1D6, x2E3CD3D4, x96DF41C6, x5BA477AF);
-	vsel(x0, x369CC1D6, x1A676AB4, a4);
+	vsel(x2E3CD3D4, x2E3C2E3C, x9E47D3D4, (vector bool int)a6);
+	vsel(x96DF41C6, x963969C6, x96C696C6, (vector bool int)x12E6283D);
+	vsel(x369CC1D6, x2E3CD3D4, x96DF41C6, (vector bool int)x5BA477AF);
+	vsel(x0, x369CC1D6, x1A676AB4, (vector bool int)a4);
 	vxor(*out1, *out1, x0);
 }
 #endif
@@ -917,50 +917,50 @@ s6(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x9C3CA761, x257A75D5, xB946D2B4;
 	vtype x0, x1, x2, x3;
 
-	vsel(x555500FF, a1, a4, a5);
+	vsel(x555500FF, a1, a4, (vector bool int)a5);
 	vxor(x666633CC, a2, x555500FF);
-	vsel(x606F30CF, x666633CC, a4, a3);
+	vsel(x606F30CF, x666633CC, a4, (vector bool int)a3);
 	vxor(x353A659A, a1, x606F30CF);
 	vxor(x353A9A65, a5, x353A659A);
 	vnot(xCAC5659A, x353A9A65);
 
-	vsel(x353A6565, x353A659A, x353A9A65, a4);
-	vsel(x0A3F0A6F, a3, a4, x353A6565);
+	vsel(x353A6565, x353A659A, x353A9A65, (vector bool int)a4);
+	vsel(x0A3F0A6F, a3, a4, (vector bool int)x353A6565);
 	vxor(x6C5939A3, x666633CC, x0A3F0A6F);
 	vxor(x5963A3C6, x353A9A65, x6C5939A3);
 
-	vsel(x35FF659A, a4, x353A659A, x353A6565);
+	vsel(x35FF659A, a4, x353A659A, (vector bool int)x353A6565);
 	vxor(x3AF06A95, a3, x35FF659A);
-	vsel(x05CF0A9F, a4, a3, x353A9A65);
-	vsel(x16E94A97, x3AF06A95, x05CF0A9F, x6C5939A3);
+	vsel(x05CF0A9F, a4, a3, (vector bool int)x353A9A65);
+	vsel(x16E94A97, x3AF06A95, x05CF0A9F, (vector bool int)x6C5939A3);
 
-	vsel(x86CD4C9B, xCAC5659A, x05CF0A9F, x6C5939A3);
-	vsel(x12E0FFFD, a5, x3AF06A95, x16E94A97);
-	vsel(x942D9A67, x86CD4C9B, x353A9A65, x12E0FFFD);
-	vsel(x0, xCAC5659A, x942D9A67, a6);
+	vsel(x86CD4C9B, xCAC5659A, x05CF0A9F, (vector bool int)x6C5939A3);
+	vsel(x12E0FFFD, a5, x3AF06A95, (vector bool int)x16E94A97);
+	vsel(x942D9A67, x86CD4C9B, x353A9A65, (vector bool int)x12E0FFFD);
+	vsel(x0, xCAC5659A, x942D9A67, (vector bool int)a6);
 	vxor(*out1, *out1, x0);
 
-	vsel(x142956AB, x353A659A, x942D9A67, a2);
-	vsel(x455D45DF, a1, x86CD4C9B, x142956AB);
+	vsel(x142956AB, x353A659A, x942D9A67, (vector bool int)a2);
+	vsel(x455D45DF, a1, x86CD4C9B, (vector bool int)x142956AB);
 	vxor(x1C3EE619, x5963A3C6, x455D45DF);
-	vsel(x3, x5963A3C6, x1C3EE619, a6);
+	vsel(x3, x5963A3C6, x1C3EE619, (vector bool int)a6);
 	vxor(*out4, *out4, x3);
 
-	vsel(x2AEA70D5, x3AF06A95, x606F30CF, x353A9A65);
-	vsel(x20CF7A9F, x2AEA70D5, x05CF0A9F, x0A3F0A6F);
+	vsel(x2AEA70D5, x3AF06A95, x606F30CF, (vector bool int)x353A9A65);
+	vsel(x20CF7A9F, x2AEA70D5, x05CF0A9F, (vector bool int)x0A3F0A6F);
 	vxor(x3CF19C86, x1C3EE619, x20CF7A9F);
 	vxor(x69A49C79, x555500FF, x3CF19C86);
 
-	vsel(x840DBB67, a5, x942D9A67, x86CD4C9B);
-	vsel(x6DA19C1E, x69A49C79, x3CF19C86, x840DBB67);
+	vsel(x840DBB67, a5, x942D9A67, (vector bool int)x86CD4C9B);
+	vsel(x6DA19C1E, x69A49C79, x3CF19C86, (vector bool int)x840DBB67);
 	vnot(x925E63E1, x6DA19C1E);
-	vsel(x1, x925E63E1, x69A49C79, a6);
+	vsel(x1, x925E63E1, x69A49C79, (vector bool int)a6);
 	vxor(*out2, *out2, x1);
 
-	vsel(x9C3CA761, x840DBB67, x1C3EE619, x3CF19C86);
-	vsel(x257A75D5, x455D45DF, x2AEA70D5, x606F30CF);
+	vsel(x9C3CA761, x840DBB67, x1C3EE619, (vector bool int)x3CF19C86);
+	vsel(x257A75D5, x455D45DF, x2AEA70D5, (vector bool int)x606F30CF);
 	vxor(xB946D2B4, x9C3CA761, x257A75D5);
-	vsel(x2, x16E94A97, xB946D2B4, a6);
+	vsel(x2, x16E94A97, xB946D2B4, (vector bool int)a6);
 	vxor(*out3, *out3, x2);
 }
 #elif regs == 15
@@ -979,36 +979,36 @@ s6(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x1C2E8201, xA56850B5, xB946D2B4;
 	vtype x0, x1, x2, x3;
 
-	vsel(x555500FF, a1, a4, a5);
+	vsel(x555500FF, a1, a4, (vector bool int)a5);
 	vxor(x666633CC, a2, x555500FF);
-	vsel(x606F30CF, x666633CC, a4, a3);
+	vsel(x606F30CF, x666633CC, a4, (vector bool int)a3);
 	vxor(x353A659A, a1, x606F30CF);
 	vxor(x353A9A65, a5, x353A659A);
 	vnot(xCAC5659A, x353A9A65);
 
-	vsel(x353A6565, x353A659A, x353A9A65, a4);
-	vsel(x0A3F0A6F, a3, a4, x353A6565);
+	vsel(x353A6565, x353A659A, x353A9A65, (vector bool int)a4);
+	vsel(x0A3F0A6F, a3, a4, (vector bool int)x353A6565);
 	vxor(x6C5939A3, x666633CC, x0A3F0A6F);
 	vxor(x5963A3C6, x353A9A65, x6C5939A3);
 
-	vsel(x35FF659A, a4, x353A659A, x353A6565);
+	vsel(x35FF659A, a4, x353A659A, (vector bool int)x353A6565);
 	vxor(x3AF06A95, a3, x35FF659A);
-	vsel(x05CF0A9F, a4, a3, x353A9A65);
-	vsel(x16E94A97, x3AF06A95, x05CF0A9F, x6C5939A3);
+	vsel(x05CF0A9F, a4, a3, (vector bool int)x353A9A65);
+	vsel(x16E94A97, x3AF06A95, x05CF0A9F, (vector bool int)x6C5939A3);
 
-	vsel(x86CD4C9B, xCAC5659A, x05CF0A9F, x6C5939A3);
-	vsel(x12E0FFFD, a5, x3AF06A95, x16E94A97);
+	vsel(x86CD4C9B, xCAC5659A, x05CF0A9F, (vector bool int)x6C5939A3);
+	vsel(x12E0FFFD, a5, x3AF06A95, (vector bool int)x16E94A97);
 	vsel(x942D9A67, x86CD4C9B, x353A9A65, x12E0FFFD);
-	vsel(x0, xCAC5659A, x942D9A67, a6);
+	vsel(x0, xCAC5659A, x942D9A67, (vector bool int)a6);
 	vxor(*out1, *out1, x0);
 
-	vsel(x142956AB, x353A659A, x942D9A67, a2);
-	vsel(x455D45DF, a1, x86CD4C9B, x142956AB);
+	vsel(x142956AB, x353A659A, x942D9A67, (vector bool int)a2);
+	vsel(x455D45DF, a1, x86CD4C9B, (vector bool int)x142956AB);
 	vxor(x1C3EE619, x5963A3C6, x455D45DF);
-	vsel(x3, x5963A3C6, x1C3EE619, a6);
+	vsel(x3, x5963A3C6, x1C3EE619, (vector bool int)a6);
 	vxor(*out4, *out4, x3);
 
-	vsel(xC3C36393, xCAC5659A, a2, a3);
+	vsel(xC3C36393, xCAC5659A, a2, (vector bool int)a3);
 	vsel(x2D1B471E, x353A659A, a3, x5963A3C6);
 	vsel(xC70B631E, xC3C36393, x2D1B471E, x05CF0A9F);
 	vxor(x925E63E1, x555500FF, xC70B631E);
@@ -1016,13 +1016,13 @@ s6(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vsel(x8C2F1A67, x942D9A67, x0A3F0A6F, x5963A3C6);
 	vsel(x965B6386, x925E63E1, xC70B631E, x8C2F1A67);
 	vnot(x69A49C79, x965B6386);
-	vsel(x1, x925E63E1, x69A49C79, a6);
+	vsel(x1, x925E63E1, x69A49C79, (vector bool int)a6);
 	vxor(*out2, *out2, x1);
 
 	vsel(x1C2E8201, x942D9A67, x1C3EE619, x8C2F1A67);
 	vxor(xA56850B5, a2, x965B6386);
 	vxor(xB946D2B4, x1C2E8201, xA56850B5);
-	vsel(x2, x16E94A97, xB946D2B4, a6);
+	vsel(x2, x16E94A97, xB946D2B4, (vector bool int)a6);
 	vxor(*out3, *out3, x2);
 }
 #elif regs <= 14
@@ -1041,50 +1041,50 @@ s6(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x375A7BA0, x965B6386, x69A49C79;
 	vtype x0, x1, x2, x3;
 
-	vsel(x555500FF, a1, a4, a5);
+	vsel(x555500FF, a1, a4, (vector bool int)a5);
 	vxor(x666633CC, a2, x555500FF);
-	vsel(x606F30CF, x666633CC, a4, a3);
+	vsel(x606F30CF, x666633CC, a4, (vector bool int)a3);
 	vxor(x353A659A, a1, x606F30CF);
 	vxor(x353A9A65, a5, x353A659A);
 	vnot(xCAC5659A, x353A9A65);
 
-	vsel(x353A6565, x353A659A, x353A9A65, a4);
-	vsel(x0A3F0A6F, a3, a4, x353A6565);
+	vsel(x353A6565, x353A659A, x353A9A65, (vector bool int)a4);
+	vsel(x0A3F0A6F, a3, a4, (vector bool int)x353A6565);
 	vxor(x6C5939A3, x666633CC, x0A3F0A6F);
 	vxor(x5963A3C6, x353A9A65, x6C5939A3);
 
-	vsel(x35FF659A, a4, x353A659A, x353A6565);
+	vsel(x35FF659A, a4, x353A659A, (vector bool int)x353A6565);
 	vxor(x3AF06A95, a3, x35FF659A);
 	vsel(x066F0CCF, a3, a4, x5963A3C6);
-	vsel(x16E94A97, x3AF06A95, x066F0CCF, x6C5939A3);
+	vsel(x16E94A97, x3AF06A95, x066F0CCF, (vector bool int)x6C5939A3);
 
-	vsel(x1872E297, x5963A3C6, x3AF06A95, a1);
-	vsel(x35BE6539, x35FF659A, x353A6565, x6C5939A3);
+	vsel(x1872E297, x5963A3C6, x3AF06A95, (vector bool int)a1);
+	vsel(x35BE6539, x35FF659A, x353A6565, (vector bool int)x6C5939A3);
 	vsel(x1C3EE619, x1872E297, x35BE6539, x066F0CCF);
-	vsel(x3, x5963A3C6, x1C3EE619, a6);
+	vsel(x3, x5963A3C6, x1C3EE619, (vector bool int)a6);
 	vxor(*out4, *out4, x3);
 
-	vsel(x86CD4C9B, xCAC5659A, x066F0CCF, x6C5939A3);
-	vsel(x12E0FFFD, a5, x3AF06A95, x16E94A97);
+	vsel(x86CD4C9B, xCAC5659A, x066F0CCF, (vector bool int)x6C5939A3);
+	vsel(x12E0FFFD, a5, x3AF06A95, (vector bool int)x16E94A97);
 	vsel(x942D9A67, x86CD4C9B, x353A9A65, x12E0FFFD);
-	vsel(x0, xCAC5659A, x942D9A67, a6);
+	vsel(x0, xCAC5659A, x942D9A67, (vector bool int)a6);
 	vxor(*out1, *out1, x0);
 
-	vsel(x0A63C087, x1872E297, x066F0CCF, a2);
+	vsel(x0A63C087, x1872E297, x066F0CCF, (vector bool int)a2);
 	vxor(x9E4E5AE0, x942D9A67, x0A63C087);
-	vsel(x02FA65FD, x12E0FFFD, a4, x353A9A65);
-	vsel(x925E63E1, x9E4E5AE0, x02FA65FD, x6C5939A3);
+	vsel(x02FA65FD, x12E0FFFD, a4, (vector bool int)x353A9A65);
+	vsel(x925E63E1, x9E4E5AE0, x02FA65FD, (vector bool int)x6C5939A3);
 
 	vsel(xAB756193, a2, xCAC5659A, x9E4E5AE0);
 	vsel(x8A75E187, x0A63C087, xAB756193, x925E63E1);
 	vxor(xB946D2B4, a2, x8A75E187);
-	vsel(x2, x16E94A97, xB946D2B4, a6);
+	vsel(x2, x16E94A97, xB946D2B4, (vector bool int)a6);
 	vxor(*out3, *out3, x2);
 
-	vsel(x375A7BA0, a2, x9E4E5AE0, x16E94A97);
+	vsel(x375A7BA0, a2, x9E4E5AE0, (vector bool int)x16E94A97);
 	vsel(x965B6386, x8A75E187, x375A7BA0, x1C3EE619);
 	vnot(x69A49C79, x965B6386);
-	vsel(x1, x925E63E1, x69A49C79, a6);
+	vsel(x1, x925E63E1, x69A49C79, (vector bool int)a6);
 	vxor(*out2, *out2, x1);
 }
 #else
@@ -1103,14 +1103,14 @@ s6(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x9867CA97, x69339C33, xB946D2B4;
 	vtype x0, x1, x2, x3;
 
-	vsel(x555500FF, a1, a4, a5);
+	vsel(x555500FF, a1, a4, (vector bool int)a5);
 	vxor(x666633CC, a2, x555500FF);
-	vsel(x606F30CF, x666633CC, a4, a3);
+	vsel(x606F30CF, x666633CC, a4, (vector bool int)a3);
 	vxor(x353A659A, a1, x606F30CF);
 	vxor(x353A9A65, a5, x353A659A);
 	vnot(xCAC5659A, x353A9A65);
 
-	vsel(x553A5565, a1, x353A9A65, a4);
+	vsel(x553A5565, a1, x353A9A65, (vector bool int)a4);
 	vsel(x0A3F0A6F, a3, a4, x553A5565);
 	vxor(x6C5939A3, x666633CC, x0A3F0A6F);
 	vxor(x5963A3C6, x353A9A65, x6C5939A3);
@@ -1118,18 +1118,18 @@ s6(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vsel(x15FF459A, a4, x353A659A, x553A5565);
 	vxor(x1AF04A95, a3, x15FF459A);
 	vsel(x066F0CCF, a3, a4, x5963A3C6);
-	vsel(x16E94A97, x1AF04A95, x066F0CCF, x6C5939A3);
+	vsel(x16E94A97, x1AF04A95, x066F0CCF, (vector bool int)x6C5939A3);
 
-	vsel(x1872E297, x5963A3C6, x1AF04A95, a1);
-	vsel(x55BE5539, x15FF459A, x553A5565, x6C5939A3);
+	vsel(x1872E297, x5963A3C6, x1AF04A95, (vector bool int)a1);
+	vsel(x55BE5539, x15FF459A, x553A5565, (vector bool int)x6C5939A3);
 	vsel(x1C3EE619, x1872E297, x55BE5539, x066F0CCF);
-	vsel(x3, x5963A3C6, x1C3EE619, a6);
+	vsel(x3, x5963A3C6, x1C3EE619, (vector bool int)a6);
 	vxor(*out4, *out4, x3);
 
-	vsel(x86CD4C9B, xCAC5659A, x066F0CCF, x6C5939A3);
-	vsel(x12E0FFFD, a5, x1AF04A95, x16E94A97);
+	vsel(x86CD4C9B, xCAC5659A, x066F0CCF, (vector bool int)x6C5939A3);
+	vsel(x12E0FFFD, a5, x1AF04A95, (vector bool int)x16E94A97);
 	vsel(x942D9A67, x86CD4C9B, x353A9A65, x12E0FFFD);
-	vsel(x0, xCAC5659A, x942D9A67, a6);
+	vsel(x0, xCAC5659A, x942D9A67, (vector bool int)a6);
 	vxor(*out1, *out1, x0);
 
 	vxor(x2FCAD0F0, x353A9A65, x1AF04A95);
@@ -1140,13 +1140,13 @@ s6(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vnot(x965B6386, x69A49C79);
 	vsel(x12769BE1, x1BF21BB1, x942D9A67, x69A49C79);
 	vsel(x925E63E1, x965B6386, x12769BE1, x555500FF);
-	vsel(x1, x925E63E1, x69A49C79, a6);
+	vsel(x1, x925E63E1, x69A49C79, (vector bool int)a6);
 	vxor(*out2, *out2, x1);
 
 	vsel(x9867CA97, x942D9A67, x1872E297, x2FCAD0F0);
-	vsel(x69339C33, x69A49C79, a2, a4);
+	vsel(x69339C33, x69A49C79, a2, (vector bool int)a4);
 	vsel(xB946D2B4, x9867CA97, x2FCAD0F0, x69339C33);
-	vsel(x2, x16E94A97, xB946D2B4, a6);
+	vsel(x2, x16E94A97, xB946D2B4, (vector bool int)a6);
 	vxor(*out3, *out3, x2);
 }
 #endif
@@ -1167,50 +1167,50 @@ s7(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x333D9639, x74879639, x8B7869C6;
 	vtype x0, x1, x2, x3;
 
-	vsel(x44447777, a2, a6, a3);
+	vsel(x44447777, a2, a6, (vector bool int)a3);
 	vxor(x4B4B7878, a4, x44447777);
-	vsel(x22772277, a3, a5, a2);
-	vsel(x0505F5F5, a6, a2, a4);
-	vsel(x220522F5, x22772277, x0505F5F5, a5);
+	vsel(x22772277, a3, a5, (vector bool int)a2);
+	vsel(x0505F5F5, a6, a2, (vector bool int)a4);
+	vsel(x220522F5, x22772277, x0505F5F5, (vector bool int)a5);
 	vxor(x694E5A8D, x4B4B7878, x220522F5);
 
 	vxor(x00FFFF00, a5, a6);
 	vxor(x66666666, a2, a3);
-	vsel(x32353235, a3, x220522F5, a4);
+	vsel(x32353235, a3, x220522F5, (vector bool int)a4);
 	vsel(x26253636, x66666666, x32353235, x4B4B7878);
 	vxor(x26DAC936, x00FFFF00, x26253636);
-	vsel(x0, x26DAC936, x694E5A8D, a1);
+	vsel(x0, x26DAC936, x694E5A8D, (vector bool int)a1);
 	vxor(*out1, *out1, x0);
 
 	vxor(x738F9C63, a2, x26DAC936);
 	vsel(x11EF9867, x738F9C63, a5, x66666666);
-	vsel(x26DA9867, x26DAC936, x11EF9867, a6);
+	vsel(x26DA9867, x26DAC936, x11EF9867, (vector bool int)a6);
 
-	vsel(x4B4B9C63, x4B4B7878, x738F9C63, a6);
+	vsel(x4B4B9C63, x4B4B7878, x738F9C63, (vector bool int)a6);
 	vsel(x4B666663, x4B4B9C63, x66666666, x00FFFF00);
 	vxor(x4E639396, x0505F5F5, x4B666663);
 
-	vsel(x4E4B393C, x4B4B7878, x4E639396, a2);
+	vsel(x4E4B393C, x4B4B7878, x4E639396, (vector bool int)a2);
 	vnot(xFF00FF00, a5);
 	vsel(xFF05DD21, xFF00FF00, x738F9C63, x32353235);
 	vxor(xB14EE41D, x4E4B393C, xFF05DD21);
-	vsel(x1, xB14EE41D, x26DA9867, a1);
+	vsel(x1, xB14EE41D, x26DA9867, (vector bool int)a1);
 	vxor(*out2, *out2, x1);
 
 	vxor(xD728827B, x66666666, xB14EE41D);
 	vsel(x6698807B, x26DA9867, xD728827B, x4E4B393C);
 	vsel(x699C585B, x6698807B, x694E5A8D, xFF05DD21);
-	vsel(x2, x699C585B, x4E639396, a1);
+	vsel(x2, x699C585B, x4E639396, (vector bool int)a1);
 	vxor(*out3, *out3, x2);
 
 	vsel(x738C847B, x738F9C63, xD728827B, x4B4B7878);
 	vxor(xA4A71E18, x738F9C63, xD728827B);
-	vsel(x74878E78, x738C847B, xA4A71E18, a4);
+	vsel(x74878E78, x738C847B, xA4A71E18, (vector bool int)a4);
 
 	vsel(x333D9639, x32353235, x738C847B, xB14EE41D);
-	vsel(x74879639, x74878E78, x333D9639, a6);
+	vsel(x74879639, x74878E78, x333D9639, (vector bool int)a6);
 	vnot(x8B7869C6, x74879639);
-	vsel(x3, x74878E78, x8B7869C6, a1);
+	vsel(x3, x74878E78, x8B7869C6, (vector bool int)a1);
 	vxor(*out4, *out4, x3);
 }
 #else
@@ -1229,50 +1229,50 @@ s7(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x204A5845, x74879639, x8B7869C6;
 	vtype x0, x1, x2, x3;
 
-	vsel(x44447777, a2, a6, a3);
+	vsel(x44447777, a2, a6, (vector bool int)a3);
 	vxor(x4B4B7878, a4, x44447777);
-	vsel(x22772277, a3, a5, a2);
-	vsel(x0505F5F5, a6, a2, a4);
-	vsel(x220522F5, x22772277, x0505F5F5, a5);
+	vsel(x22772277, a3, a5, (vector bool int)a2);
+	vsel(x0505F5F5, a6, a2, (vector bool int)a4);
+	vsel(x220522F5, x22772277, x0505F5F5, (vector bool int)a5);
 	vxor(x694E5A8D, x4B4B7878, x220522F5);
 
 	vxor(x00FFFF00, a5, a6);
 	vxor(x66666666, a2, a3);
-	vsel(x32353235, a3, x220522F5, a4);
-	vsel(x26253636, x66666666, x32353235, x4B4B7878);
+	vsel(x32353235, a3, x220522F5, (vector bool int)a4);
+	vsel(x26253636, x66666666, x32353235, (vector bool int)x4B4B7878);
 	vxor(x26DAC936, x00FFFF00, x26253636);
-	vsel(x0, x26DAC936, x694E5A8D, a1);
+	vsel(x0, x26DAC936, x694E5A8D, (vector bool int)a1);
 	vxor(*out1, *out1, x0);
 
 	vxor(x738F9C63, a2, x26DAC936);
-	vsel(x11EF9867, x738F9C63, a5, x66666666);
-	vsel(x26DA9867, x26DAC936, x11EF9867, a6);
+	vsel(x11EF9867, x738F9C63, a5, (vector bool int)x66666666);
+	vsel(x26DA9867, x26DAC936, x11EF9867, (vector bool int)a6);
 
-	vsel(x4B4B9C63, x4B4B7878, x738F9C63, a6);
-	vsel(x4B666663, x4B4B9C63, x66666666, x00FFFF00);
+	vsel(x4B4B9C63, x4B4B7878, x738F9C63, (vector bool int)a6);
+	vsel(x4B666663, x4B4B9C63, x66666666, (vector bool int)x00FFFF00);
 	vxor(x4E639396, x0505F5F5, x4B666663);
 
-	vsel(x4E4B393C, x4B4B7878, x4E639396, a2);
+	vsel(x4E4B393C, x4B4B7878, x4E639396, (vector bool int)a2);
 	vnot(xFF00FF00, a5);
-	vsel(xFF05DD21, xFF00FF00, x738F9C63, x32353235);
+	vsel(xFF05DD21, xFF00FF00, x738F9C63, (vector bool int)x32353235);
 	vxor(xB14EE41D, x4E4B393C, xFF05DD21);
-	vsel(x1, xB14EE41D, x26DA9867, a1);
+	vsel(x1, xB14EE41D, x26DA9867, (vector bool int)a1);
 	vxor(*out2, *out2, x1);
 
 	vxor(xD728827B, x66666666, xB14EE41D);
-	vsel(x6698807B, x26DA9867, xD728827B, x4E4B393C);
-	vsel(x699C585B, x6698807B, x694E5A8D, xFF05DD21);
-	vsel(x2, x699C585B, x4E639396, a1);
+	vsel(x6698807B, x26DA9867, xD728827B, (vector bool int)x4E4B393C);
+	vsel(x699C585B, x6698807B, x694E5A8D, (vector bool int)xFF05DD21);
+	vsel(x2, x699C585B, x4E639396, (vector bool int)a1);
 	vxor(*out3, *out3, x2);
 
-	vsel(x778A8877, x738F9C63, x26DAC936, x26253636);
+	vsel(x778A8877, x738F9C63, x26DAC936, (vector bool int)x26253636);
 	vxor(xA4A71E18, x738F9C63, xD728827B);
-	vsel(x74878E78, x778A8877, xA4A71E18, a4);
+	vsel(x74878E78, x778A8877, xA4A71E18, (vector bool int)a4);
 
-	vsel(x204A5845, x26DA9867, x694E5A8D, x26DAC936);
-	vsel(x74879639, x74878E78, a3, x204A5845);
+	vsel(x204A5845, x26DA9867, x694E5A8D, (vector bool int)x26DAC936);
+	vsel(x74879639, x74878E78, a3, (vector bool int)x204A5845);
 	vnot(x8B7869C6, x74879639);
-	vsel(x3, x74878E78, x8B7869C6, a1);
+	vsel(x3, x74878E78, x8B7869C6, (vector bool int)a1);
 	vxor(*out4, *out4, x3);
 }
 #endif
@@ -1293,48 +1293,48 @@ s8(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x03DA807F, x613CD515, x62E6556A, xA59E6C31;
 	vtype x0, x1, x2, x3;
 
-	vsel(x0505F5F5, a5, a1, a3);
+	vsel(x0505F5F5, a5, a1, (vector bool int)a3);
 	vxor(x05FAF50A, a4, x0505F5F5);
-	vsel(x0F0F00FF, a3, a4, a5);
-	vsel(x22227777, a2, a5, a1);
-	vsel(x07DA807F, x05FAF50A, x0F0F00FF, x22227777);
+	vsel(x0F0F00FF, a3, a4, (vector bool int)a5);
+	vsel(x22227777, a2, a5, (vector bool int)a1);
+	vsel(x07DA807F, x05FAF50A, x0F0F00FF, (vector bool int)x22227777);
 	vxor(x34E9B34C, a2, x07DA807F);
 
-	vsel(x00FFF00F, x05FAF50A, a4, a3);
-	vsel(x0033FCCF, a5, x00FFF00F, a2);
-	vsel(x5565B15C, a1, x34E9B34C, x0033FCCF);
-	vsel(x0C0C3F3F, a3, a5, a2);
+	vsel(x00FFF00F, x05FAF50A, a4, (vector bool int)a3);
+	vsel(x0033FCCF, a5, x00FFF00F, (vector bool int)a2);
+	vsel(x5565B15C, a1, x34E9B34C, (vector bool int)x0033FCCF);
+	vsel(x0C0C3F3F, a3, a5, (vector bool int)a2);
 	vxor(x59698E63, x5565B15C, x0C0C3F3F);
 
-	vsel(x3001F74E, x34E9B34C, a5, x05FAF50A);
-	vsel(x30555745, x3001F74E, a1, x00FFF00F);
+	vsel(x3001F74E, x34E9B34C, a5, (vector bool int)x05FAF50A);
+	vsel(x30555745, x3001F74E, a1, (vector bool int)x00FFF00F);
 	vxor(x693CD926, x59698E63, x30555745);
-	vsel(x2, x693CD926, x59698E63, a6);
+	vsel(x2, x693CD926, x59698E63, (vector bool int)a6);
 	vxor(*out3, *out3, x2);
 
-	vsel(x0C0CD926, x0C0C3F3F, x693CD926, a5);
+	vsel(x0C0CD926, x0C0C3F3F, x693CD926, (vector bool int)a5);
 	vxor(x0C3F25E9, x0033FCCF, x0C0CD926);
 	vxor(x38D696A5, x34E9B34C, x0C3F25E9);
 
 	vnot(xC729695A, x38D696A5);
 
-	vsel(x03D2117B, x07DA807F, a2, x0C0CD926);
-	vsel(xC778395B, xC729695A, x03D2117B, x30555745);
+	vsel(x03D2117B, x07DA807F, a2, (vector bool int)x0C0CD926);
+	vsel(xC778395B, xC729695A, x03D2117B, (vector bool int)x30555745);
 	vxor(xCB471CB2, x0C3F25E9, xC778395B);
-	vsel(x1, xCB471CB2, x34E9B34C, a6);
+	vsel(x1, xCB471CB2, x34E9B34C, (vector bool int)a6);
 	vxor(*out2, *out2, x1);
 
-	vsel(x5425B13F, x5565B15C, x0C0C3F3F, x03D2117B);
-	vsel(x56B3803F, x07DA807F, x5425B13F, x59698E63);
+	vsel(x5425B13F, x5565B15C, x0C0C3F3F, (vector bool int)x03D2117B);
+	vsel(x56B3803F, x07DA807F, x5425B13F, (vector bool int)x59698E63);
 	vxor(x919AE965, xC729695A, x56B3803F);
-	vsel(x3, xC729695A, x919AE965, a6);
+	vsel(x3, xC729695A, x919AE965, (vector bool int)a6);
 	vxor(*out4, *out4, x3);
 
-	vsel(x03DA807F, x03D2117B, x07DA807F, x693CD926);
-	vsel(x613CD515, a1, x693CD926, x34E9B34C);
+	vsel(x03DA807F, x03D2117B, x07DA807F, (vector bool int)x693CD926);
+	vsel(x613CD515, a1, x693CD926, (vector bool int)x34E9B34C);
 	vxor(x62E6556A, x03DA807F, x613CD515);
 	vxor(xA59E6C31, xC778395B, x62E6556A);
-	vsel(x0, xA59E6C31, x38D696A5, a6);
+	vsel(x0, xA59E6C31, x38D696A5, (vector bool int)a6);
 	vxor(*out1, *out1, x0);
 }
 #else
@@ -1353,48 +1353,48 @@ s8(vtype a1, vtype a2, vtype a3, vtype a4, vtype a5, vtype a6,
 	vtype x17B3023F, x75555755, x62E6556A, xA59E6C31;
 	vtype x0, x1, x2, x3;
 
-	vsel(x0505F5F5, a5, a1, a3);
+	vsel(x0505F5F5, a5, a1, (vector bool int)a3);
 	vxor(x05FAF50A, a4, x0505F5F5);
-	vsel(x0F0F00FF, a3, a4, a5);
-	vsel(x22227777, a2, a5, a1);
-	vsel(x07DA807F, x05FAF50A, x0F0F00FF, x22227777);
+	vsel(x0F0F00FF, a3, a4, (vector bool int)a5);
+	vsel(x22227777, a2, a5, (vector bool int)a1);
+	vsel(x07DA807F, x05FAF50A, x0F0F00FF, (vector bool int)x22227777);
 	vxor(x34E9B34C, a2, x07DA807F);
 
-	vsel(x00FFF00F, x05FAF50A, a4, a3);
-	vsel(x0033FCCF, a5, x00FFF00F, a2);
-	vsel(x5565B15C, a1, x34E9B34C, x0033FCCF);
-	vsel(x0C0C3F3F, a3, a5, a2);
+	vsel(x00FFF00F, x05FAF50A, a4, (vector bool int)a3);
+	vsel(x0033FCCF, a5, x00FFF00F, (vector bool int)a2);
+	vsel(x5565B15C, a1, x34E9B34C, (vector bool int)x0033FCCF);
+	vsel(x0C0C3F3F, a3, a5, (vector bool int)a2);
 	vxor(x59698E63, x5565B15C, x0C0C3F3F);
 
-	vsel(x3001F74E, x34E9B34C, a5, x05FAF50A);
-	vsel(x30555745, x3001F74E, a1, x00FFF00F);
+	vsel(x3001F74E, x34E9B34C, a5, (vector bool int)x05FAF50A);
+	vsel(x30555745, x3001F74E, a1, (vector bool int)x00FFF00F);
 	vxor(x693CD926, x59698E63, x30555745);
-	vsel(x2, x693CD926, x59698E63, a6);
+	vsel(x2, x693CD926, x59698E63, (vector bool int)a6);
 	vxor(*out3, *out3, x2);
 
-	vsel(x0C0CD926, x0C0C3F3F, x693CD926, a5);
+	vsel(x0C0CD926, x0C0C3F3F, x693CD926, (vector bool int)a5);
 	vxor(x0C3F25E9, x0033FCCF, x0C0CD926);
 	vxor(x38D696A5, x34E9B34C, x0C3F25E9);
 
 	vnot(xC729695A, x38D696A5);
 
-	vsel(x03D2117B, x07DA807F, a2, x0C0CD926);
-	vsel(xC778395B, xC729695A, x03D2117B, x30555745);
+	vsel(x03D2117B, x07DA807F, a2, (vector bool int)x0C0CD926);
+	vsel(xC778395B, xC729695A, x03D2117B, (vector bool int)x30555745);
 	vxor(xCB471CB2, x0C3F25E9, xC778395B);
-	vsel(x1, xCB471CB2, x34E9B34C, a6);
+	vsel(x1, xCB471CB2, x34E9B34C, (vector bool int)a6);
 	vxor(*out2, *out2, x1);
 
-	vsel(x5425B13F, x5565B15C, x0C0C3F3F, x03D2117B);
-	vsel(x56B3803F, x07DA807F, x5425B13F, x59698E63);
+	vsel(x5425B13F, x5565B15C, x0C0C3F3F, (vector bool int)x03D2117B);
+	vsel(x56B3803F, x07DA807F, x5425B13F, (vector bool int)x59698E63);
 	vxor(x919AE965, xC729695A, x56B3803F);
-	vsel(x3, xC729695A, x919AE965, a6);
+	vsel(x3, xC729695A, x919AE965, (vector bool int)a6);
 	vxor(*out4, *out4, x3);
 
-	vsel(x17B3023F, x07DA807F, a2, x59698E63);
+	vsel(x17B3023F, x07DA807F, a2, (vector bool int)x59698E63);
 	vor(x75555755, a1, x30555745);
 	vxor(x62E6556A, x17B3023F, x75555755);
 	vxor(xA59E6C31, xC778395B, x62E6556A);
-	vsel(x0, xA59E6C31, x38D696A5, a6);
+	vsel(x0, xA59E6C31, x38D696A5, (vector bool int)a6);
 	vxor(*out1, *out1, x0);
 }
 #endif

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux - Powered by OpenVZ