Mercurial > vec
changeset 46:31cee67540b5
f32/f64: add floor, ceil, round, and trunc operations
we also need saturated add sub mul etc
author | Paper <paper@tflc.us> |
---|---|
date | Sat, 09 Aug 2025 15:55:59 -0400 |
parents | 7955bed1d169 |
children | d26d22c602bd |
files | gen/gendouble.c gen/gengeneric.c gen/genlib.c gen/genlib.h include/vec/impl/double.h include/vec/impl/generic.h include/vec/mem.h test/test.c test/test_arith.h |
diffstat | 9 files changed, 2575 insertions(+), 887 deletions(-) [+] |
line wrap: on
line diff
--- a/gen/gendouble.c Wed Apr 30 18:36:38 2025 -0400 +++ b/gen/gendouble.c Sat Aug 09 15:55:59 2025 -0400 @@ -24,123 +24,6 @@ #include "genlib.h" -#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0])) - -/* XXX: would it be faster to unroll literally everything instead of defining everything, - * and then unpacking it all? */ -static const char *header = - "/**\n" - " * vec - a tiny SIMD vector library in C99\n" - " * \n" - " * Copyright (c) 2024-2025 Paper\n" - " * \n" - " * Permission is hereby granted, free of charge, to any person obtaining a copy\n" - " * of this software and associated documentation files (the \"Software\"), to deal\n" - " * in the Software without restriction, including without limitation the rights\n" - " * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n" - " * copies of the Software, and to permit persons to whom the Software is\n" - " * furnished to do so, subject to the following conditions:\n" - " * \n" - " * The above copyright notice and this permission notice shall be included in all\n" - " * copies or substantial portions of the Software.\n" - " * \n" - " * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n" - " * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n" - " * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n" - " * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n" - " * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n" - " * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n" - " * SOFTWARE.\n" - "**/\n" - "\n" - "/* This file is automatically generated! Do not edit it directly!\n" - " * Edit the code that generates it in utils/gendbl.c --paper */\n" - "\n" - "#ifndef VEC_IMPL_DOUBLE_H_\n" - "#define VEC_IMPL_DOUBLE_H_\n" - "\n" - "#define VEC_DOUBLE_SPLAT(sign, bits, size, halfsize) \\\n" - " VEC_FUNC_IMPL v##sign##int##bits##x##size v##sign##int##bits##x##size##_splat(vec_##sign##int##bits x) \\\n" - " { \\\n" - " v##sign##int##bits##x##size vec; \\\n" - " \\\n" - " vec.dbl[0] = v##sign##int##bits##x##halfsize##_splat(x); \\\n" - " vec.dbl[1] = v##sign##int##bits##x##halfsize##_splat(x); \\\n" - " \\\n" - " return vec; \\\n" - " }\n" - "\n" - "#define VEC_DOUBLE_LOAD_EX(name, sign, bits, size, halfsize) \\\n" - " VEC_FUNC_IMPL v##sign##int##bits##x##size v##sign##int##bits##x##size##_##name(const vec_##sign##int##bits x[size]) \\\n" - " { \\\n" - " v##sign##int##bits##x##size vec; \\\n" - " \\\n" - " vec.dbl[0] = v##sign##int##bits##x##halfsize##_##name(x); \\\n" - " vec.dbl[1] = v##sign##int##bits##x##halfsize##_##name(x + halfsize); \\\n" - " \\\n" - " return vec; \\\n" - " }\n" - "\n" - "#define VEC_DOUBLE_LOAD(sign, bits, size, halfsize) VEC_DOUBLE_LOAD_EX(load, sign, bits, size, halfsize)\n" - "#define VEC_DOUBLE_LOAD_ALIGNED(sign, bits, size, halfsize) VEC_DOUBLE_LOAD_EX(load_aligned, sign, bits, size, halfsize)\n" - "\n" - "#define VEC_DOUBLE_STORE_EX(name, sign, bits, size, halfsize) \\\n" - " VEC_FUNC_IMPL void v##sign##int##bits##x##size##_##name(v##sign##int##bits##x##size vec, vec_##sign##int##bits x[size]) \\\n" - " { \\\n" - " v##sign##int##bits##x##halfsize##_##name(vec.dbl[0], x); \\\n" - " v##sign##int##bits##x##halfsize##_##name(vec.dbl[1], x + halfsize); \\\n" - " }\n" - "\n" - "#define VEC_DOUBLE_STORE(sign, bits, size, halfsize) VEC_DOUBLE_STORE_EX(store, sign, bits, size, halfsize)\n" - "#define VEC_DOUBLE_STORE_ALIGNED(sign, bits, size, halfsize) VEC_DOUBLE_STORE_EX(store_aligned, sign, bits, size, halfsize)\n" - "\n" - "#define VEC_DOUBLE_OP(name, sign, bits, size, halfsize, secondsign) \\\n" - " VEC_FUNC_IMPL v##sign##int##bits##x##size v##sign##int##bits##x##size##_##name(v##sign##int##bits##x##size vec1, v##secondsign##int##bits##x##size vec2) \\\n" - " { \\\n" - " vec1.dbl[0] = v##sign##int##bits##x##halfsize##_##name(vec1.dbl[0], vec2.dbl[0]); \\\n" - " vec1.dbl[1] = v##sign##int##bits##x##halfsize##_##name(vec1.dbl[1], vec2.dbl[1]); \\\n" - " \\\n" - " return vec1; \\\n" - " }\n" - "\n" - "#define VEC_DOUBLE_ADD(sign, bits, size, halfsize) VEC_DOUBLE_OP(add, sign, bits, size, halfsize, sign)\n" - "#define VEC_DOUBLE_SUB(sign, bits, size, halfsize) VEC_DOUBLE_OP(sub, sign, bits, size, halfsize, sign)\n" - "#define VEC_DOUBLE_MUL(sign, bits, size, halfsize) VEC_DOUBLE_OP(mul, sign, bits, size, halfsize, sign)\n" - "#define VEC_DOUBLE_DIV(sign, bits, size, halfsize) VEC_DOUBLE_OP(div, sign, bits, size, halfsize, sign)\n" - "#define VEC_DOUBLE_MOD(sign, bits, size, halfsize) VEC_DOUBLE_OP(mod, sign, bits, size, halfsize, sign)\n" - "#define VEC_DOUBLE_AVG(sign, bits, size, halfsize) VEC_DOUBLE_OP(avg, sign, bits, size, halfsize, sign)\n" - "#define VEC_DOUBLE_LSHIFT(sign, bits, size, halfsize) VEC_DOUBLE_OP(lshift, sign, bits, size, halfsize, u)\n" - "#define VEC_DOUBLE_RSHIFT(sign, bits, size, halfsize) VEC_DOUBLE_OP(rshift, sign, bits, size, halfsize, u)\n" - "#define VEC_DOUBLE_LRSHIFT(sign, bits, size, halfsize) VEC_DOUBLE_OP(lrshift, sign, bits, size, halfsize, u)\n" - "#define VEC_DOUBLE_AND(sign, bits, size, halfsize) VEC_DOUBLE_OP(and, sign, bits, size, halfsize, sign)\n" - "#define VEC_DOUBLE_OR(sign, bits, size, halfsize) VEC_DOUBLE_OP(or, sign, bits, size, halfsize, sign)\n" - "#define VEC_DOUBLE_XOR(sign, bits, size, halfsize) VEC_DOUBLE_OP(xor, sign, bits, size, halfsize, sign)\n" - "#define VEC_DOUBLE_MIN(sign, bits, size, halfsize) VEC_DOUBLE_OP(min, sign, bits, size, halfsize, sign)\n" - "#define VEC_DOUBLE_MAX(sign, bits, size, halfsize) VEC_DOUBLE_OP(max, sign, bits, size, halfsize, sign)\n" - "#define VEC_DOUBLE_CMPLT(sign, bits, size, halfsize) VEC_DOUBLE_OP(cmplt, sign, bits, size, halfsize, sign)\n" - "#define VEC_DOUBLE_CMPLE(sign, bits, size, halfsize) VEC_DOUBLE_OP(cmple, sign, bits, size, halfsize, sign)\n" - "#define VEC_DOUBLE_CMPEQ(sign, bits, size, halfsize) VEC_DOUBLE_OP(cmpeq, sign, bits, size, halfsize, sign)\n" - "#define VEC_DOUBLE_CMPGE(sign, bits, size, halfsize) VEC_DOUBLE_OP(cmpge, sign, bits, size, halfsize, sign)\n" - "#define VEC_DOUBLE_CMPGT(sign, bits, size, halfsize) VEC_DOUBLE_OP(cmpgt, sign, bits, size, halfsize, sign)\n" - "\n" - "#define VEC_DOUBLE_NOT(sign, bits, size, halfsize) \\\n" - " VEC_FUNC_IMPL v##sign##int##bits##x##size v##sign##int##bits##x##size##_not(v##sign##int##bits##x##size vec) \\\n" - " { \\\n" - " vec.dbl[0] = v##sign##int##bits##x##halfsize##_not(vec.dbl[0]); \\\n" - " vec.dbl[1] = v##sign##int##bits##x##halfsize##_not(vec.dbl[1]); \\\n" - " \\\n" - " return vec; \\\n" - " }\n" - "\n" - "#endif /* VEC_IMPL_DOUBLE_H_ */ \n" - "\n" - "/* ------------------------------------------------------------------------ */\n" - "/* PREPROCESSOR HELL INCOMING */\n" - ""; - -static const char *footer = - "" /* nothing */; - /* ------------------------------------------------------------------------ */ static void op_print_pp_halfsize(int op, int type, int bits, int size) @@ -173,7 +56,7 @@ gen_print_vtype(type, bits, size / 2); printf("_%s(vec.dbl[0]);\n", op_info->l); - printf("\tvec1.dbl[1] = "); + printf("\tvec.dbl[1] = "); gen_print_vtype(type, bits, size / 2); printf("_%s(vec.dbl[1]);\n", op_info->l); @@ -267,6 +150,11 @@ [OP_CMPEQ] = {NULL, op_print_pp_halfsize, op_print_twoop}, [OP_CMPGE] = {NULL, op_print_pp_halfsize, op_print_twoop}, [OP_CMPGT] = {NULL, op_print_pp_halfsize, op_print_twoop}, + + [OP_FLOOR] = {NULL, op_print_pp_halfsize, op_print_unoop}, + [OP_CEIL] = {NULL, op_print_pp_halfsize, op_print_unoop}, + [OP_ROUND] = {NULL, op_print_pp_halfsize, op_print_unoop}, + [OP_TRUNC] = {NULL, op_print_pp_halfsize, op_print_unoop}, }; int main(void)
--- a/gen/gengeneric.c Wed Apr 30 18:36:38 2025 -0400 +++ b/gen/gengeneric.c Sat Aug 09 15:55:59 2025 -0400 @@ -130,6 +130,7 @@ break; } case OP_RSHIFT: + /* ehhhh this feels weird ... */ for (i = 0; i < size; i++) printf("vec1.generic[%d] = ((~vec1.generic[%d]) >> vec2.generic[%d]);\n", i, i, i); break; @@ -151,7 +152,7 @@ if (op == OP_MOD && type == TYPE_FLOAT) { for (i = 0; i < size; i++) - printf("\tvec1.generic[%d] = (vec2.generic[%d] ? fmod(vec1.generic[%d], vec2.generic[%d]) : 0);\n", i, i, i, i); + printf("\tvec1.generic[%d] = (vec2.generic[%d] ? fmod%s(vec1.generic[%d], vec2.generic[%d]) : 0);\n", i, i, (bits == 32) ? "f" : "", i, i); } else { for (i = 0; i < size; i++) printf("\tvec1.generic[%d] = (vec2.generic[%d] ? (vec1.generic[%d] %s vec2.generic[%d]) : 0);\n", i, i, i, ops[op], i); @@ -226,6 +227,22 @@ printf("\tmemcpy(x, vec.generic, %d);\n", (bits / 8) * size); } +static void op_fmath_pbody(int op, int type, int bits, int size) +{ + static const char *ops[OP_FINAL_] = { + [OP_FLOOR] = "floor", + [OP_CEIL] = "ceil", + [OP_ROUND] = "round", + [OP_TRUNC] = "trunc", + }; + int i; + + for (i = 0; i < size; i++) + printf("\tvec.generic[%d] = %s%s(vec.generic[%d]);\n", i, ops[op], (bits == 32) ? "f" : "", i); + + puts("\treturn vec;"); +} + /* ------------------------------------------------------------------------ */ static struct op_impl op_impl[OP_FINAL_] = { @@ -264,6 +281,11 @@ [OP_CMPEQ] = {NULL, NULL, op_cmp_pbody}, [OP_CMPGE] = {NULL, NULL, op_cmp_pbody}, [OP_CMPGT] = {NULL, NULL, op_cmp_pbody}, + + [OP_FLOOR] = {NULL, NULL, op_fmath_pbody}, + [OP_ROUND] = {NULL, NULL, op_fmath_pbody}, + [OP_CEIL] = {NULL, NULL, op_fmath_pbody}, + [OP_TRUNC] = {NULL, NULL, op_fmath_pbody}, }; int main(void)
--- a/gen/genlib.c Wed Apr 30 18:36:38 2025 -0400 +++ b/gen/genlib.c Sat Aug 09 15:55:59 2025 -0400 @@ -111,7 +111,7 @@ (void)op; } -struct op_info ops[] = { +struct op_info ops[OP_FINAL_] = { [OP_SPLAT] = {"SPLAT", "splat", vret, vsplatparam}, [OP_LOAD_ALIGNED] = {"LOAD_ALIGNED", "load_aligned", vret, vloadparam}, [OP_LOAD] = {"LOAD", "load", vret, vloadparam}, @@ -137,6 +137,12 @@ [OP_RSHIFT] = {"RSHIFT", "rshift", vret, vshiftparam}, [OP_LRSHIFT] = {"LRSHIFT", "lrshift", vret, vshiftparam}, [OP_LSHIFT] = {"LSHIFT", "lshift", vret, vshiftparam}, + + /* floating-point specific operations */ + [OP_FLOOR] = {"FLOOR", "floor", vret, voneparam}, + [OP_CEIL] = {"CEIL", "ceil", vret, voneparam}, + [OP_ROUND] = {"ROUND", "round", vret, voneparam}, + [OP_TRUNC] = {"TRUNC", "trunc", vret, voneparam}, }; struct op_info *gen_op_info(int op) @@ -168,13 +174,18 @@ if (type == TYPE_FLOAT) return 0; break; + case OP_FLOOR: + case OP_CEIL: + case OP_ROUND: + /* likewise, these operations make no sense for integer types */ + if (type != TYPE_FLOAT) + return 0; + break; } return 1; } -/* XXX: would it be faster to unroll literally everything instead of defining everything, - * and then unpacking it all? */ static const char *header_tmpl = "/**\n" " * vec - a tiny SIMD vector library in C99\n"
--- a/gen/genlib.h Wed Apr 30 18:36:38 2025 -0400 +++ b/gen/genlib.h Sat Aug 09 15:55:59 2025 -0400 @@ -53,6 +53,11 @@ OP_LRSHIFT, OP_LSHIFT, + OP_FLOOR, + OP_CEIL, + OP_ROUND, + OP_TRUNC, + /* use this for array sizes and the like */ OP_FINAL_, };
--- a/include/vec/impl/double.h Wed Apr 30 18:36:38 2025 -0400 +++ b/include/vec/impl/double.h Sat Aug 09 15:55:59 2025 -0400 @@ -174,7 +174,7 @@ VEC_FUNC_IMPL vint8x2 vint8x2_not(vint8x2 vec) { vec.dbl[0] = vint8x1_not(vec.dbl[0]); - vec1.dbl[1] = vint8x1_not(vec.dbl[1]); + vec.dbl[1] = vint8x1_not(vec.dbl[1]); return vec; } # define VINT8x2_NOT_DEFINED @@ -279,6 +279,16 @@ } # define VINT8x2_LSHIFT_DEFINED #endif +#if !defined(VINT8x2_TRUNC_DEFINED) \ + && (defined(VINT8x1_TRUNC_DEFINED)) +VEC_FUNC_IMPL vint8x2 vint8x2_trunc(vint8x2 vec) +{ + vec.dbl[0] = vint8x1_trunc(vec.dbl[0]); + vec.dbl[1] = vint8x1_trunc(vec.dbl[1]); + return vec; +} +# define VINT8x2_TRUNC_DEFINED +#endif #if !defined(VUINT8x2_SPLAT_DEFINED) \ && (defined(VUINT8x1_SPLAT_DEFINED)) VEC_FUNC_IMPL vuint8x2 vuint8x2_splat(vec_uint8 x) @@ -425,7 +435,7 @@ VEC_FUNC_IMPL vuint8x2 vuint8x2_not(vuint8x2 vec) { vec.dbl[0] = vuint8x1_not(vec.dbl[0]); - vec1.dbl[1] = vuint8x1_not(vec.dbl[1]); + vec.dbl[1] = vuint8x1_not(vec.dbl[1]); return vec; } # define VUINT8x2_NOT_DEFINED @@ -530,6 +540,16 @@ } # define VUINT8x2_LSHIFT_DEFINED #endif +#if !defined(VUINT8x2_TRUNC_DEFINED) \ + && (defined(VUINT8x1_TRUNC_DEFINED)) +VEC_FUNC_IMPL vuint8x2 vuint8x2_trunc(vuint8x2 vec) +{ + vec.dbl[0] = vuint8x1_trunc(vec.dbl[0]); + vec.dbl[1] = vuint8x1_trunc(vec.dbl[1]); + return vec; +} +# define VUINT8x2_TRUNC_DEFINED +#endif #if !defined(VINT8x4_SPLAT_DEFINED) \ && (defined(VINT8x2_SPLAT_DEFINED)) VEC_FUNC_IMPL vint8x4 vint8x4_splat(vec_int8 x) @@ -676,7 +696,7 @@ VEC_FUNC_IMPL vint8x4 vint8x4_not(vint8x4 vec) { vec.dbl[0] = vint8x2_not(vec.dbl[0]); - vec1.dbl[1] = vint8x2_not(vec.dbl[1]); + vec.dbl[1] = vint8x2_not(vec.dbl[1]); return vec; } # define VINT8x4_NOT_DEFINED @@ -781,6 +801,16 @@ } # define VINT8x4_LSHIFT_DEFINED #endif +#if !defined(VINT8x4_TRUNC_DEFINED) \ + && (defined(VINT8x2_TRUNC_DEFINED)) +VEC_FUNC_IMPL vint8x4 vint8x4_trunc(vint8x4 vec) +{ + vec.dbl[0] = vint8x2_trunc(vec.dbl[0]); + vec.dbl[1] = vint8x2_trunc(vec.dbl[1]); + return vec; +} +# define VINT8x4_TRUNC_DEFINED +#endif #if !defined(VUINT8x4_SPLAT_DEFINED) \ && (defined(VUINT8x2_SPLAT_DEFINED)) VEC_FUNC_IMPL vuint8x4 vuint8x4_splat(vec_uint8 x) @@ -927,7 +957,7 @@ VEC_FUNC_IMPL vuint8x4 vuint8x4_not(vuint8x4 vec) { vec.dbl[0] = vuint8x2_not(vec.dbl[0]); - vec1.dbl[1] = vuint8x2_not(vec.dbl[1]); + vec.dbl[1] = vuint8x2_not(vec.dbl[1]); return vec; } # define VUINT8x4_NOT_DEFINED @@ -1032,6 +1062,16 @@ } # define VUINT8x4_LSHIFT_DEFINED #endif +#if !defined(VUINT8x4_TRUNC_DEFINED) \ + && (defined(VUINT8x2_TRUNC_DEFINED)) +VEC_FUNC_IMPL vuint8x4 vuint8x4_trunc(vuint8x4 vec) +{ + vec.dbl[0] = vuint8x2_trunc(vec.dbl[0]); + vec.dbl[1] = vuint8x2_trunc(vec.dbl[1]); + return vec; +} +# define VUINT8x4_TRUNC_DEFINED +#endif #if !defined(VINT8x8_SPLAT_DEFINED) \ && (defined(VINT8x4_SPLAT_DEFINED)) VEC_FUNC_IMPL vint8x8 vint8x8_splat(vec_int8 x) @@ -1178,7 +1218,7 @@ VEC_FUNC_IMPL vint8x8 vint8x8_not(vint8x8 vec) { vec.dbl[0] = vint8x4_not(vec.dbl[0]); - vec1.dbl[1] = vint8x4_not(vec.dbl[1]); + vec.dbl[1] = vint8x4_not(vec.dbl[1]); return vec; } # define VINT8x8_NOT_DEFINED @@ -1283,6 +1323,16 @@ } # define VINT8x8_LSHIFT_DEFINED #endif +#if !defined(VINT8x8_TRUNC_DEFINED) \ + && (defined(VINT8x4_TRUNC_DEFINED)) +VEC_FUNC_IMPL vint8x8 vint8x8_trunc(vint8x8 vec) +{ + vec.dbl[0] = vint8x4_trunc(vec.dbl[0]); + vec.dbl[1] = vint8x4_trunc(vec.dbl[1]); + return vec; +} +# define VINT8x8_TRUNC_DEFINED +#endif #if !defined(VUINT8x8_SPLAT_DEFINED) \ && (defined(VUINT8x4_SPLAT_DEFINED)) VEC_FUNC_IMPL vuint8x8 vuint8x8_splat(vec_uint8 x) @@ -1429,7 +1479,7 @@ VEC_FUNC_IMPL vuint8x8 vuint8x8_not(vuint8x8 vec) { vec.dbl[0] = vuint8x4_not(vec.dbl[0]); - vec1.dbl[1] = vuint8x4_not(vec.dbl[1]); + vec.dbl[1] = vuint8x4_not(vec.dbl[1]); return vec; } # define VUINT8x8_NOT_DEFINED @@ -1534,6 +1584,16 @@ } # define VUINT8x8_LSHIFT_DEFINED #endif +#if !defined(VUINT8x8_TRUNC_DEFINED) \ + && (defined(VUINT8x4_TRUNC_DEFINED)) +VEC_FUNC_IMPL vuint8x8 vuint8x8_trunc(vuint8x8 vec) +{ + vec.dbl[0] = vuint8x4_trunc(vec.dbl[0]); + vec.dbl[1] = vuint8x4_trunc(vec.dbl[1]); + return vec; +} +# define VUINT8x8_TRUNC_DEFINED +#endif #if !defined(VINT8x16_SPLAT_DEFINED) \ && (defined(VINT8x8_SPLAT_DEFINED)) VEC_FUNC_IMPL vint8x16 vint8x16_splat(vec_int8 x) @@ -1680,7 +1740,7 @@ VEC_FUNC_IMPL vint8x16 vint8x16_not(vint8x16 vec) { vec.dbl[0] = vint8x8_not(vec.dbl[0]); - vec1.dbl[1] = vint8x8_not(vec.dbl[1]); + vec.dbl[1] = vint8x8_not(vec.dbl[1]); return vec; } # define VINT8x16_NOT_DEFINED @@ -1785,6 +1845,16 @@ } # define VINT8x16_LSHIFT_DEFINED #endif +#if !defined(VINT8x16_TRUNC_DEFINED) \ + && (defined(VINT8x8_TRUNC_DEFINED)) +VEC_FUNC_IMPL vint8x16 vint8x16_trunc(vint8x16 vec) +{ + vec.dbl[0] = vint8x8_trunc(vec.dbl[0]); + vec.dbl[1] = vint8x8_trunc(vec.dbl[1]); + return vec; +} +# define VINT8x16_TRUNC_DEFINED +#endif #if !defined(VUINT8x16_SPLAT_DEFINED) \ && (defined(VUINT8x8_SPLAT_DEFINED)) VEC_FUNC_IMPL vuint8x16 vuint8x16_splat(vec_uint8 x) @@ -1931,7 +2001,7 @@ VEC_FUNC_IMPL vuint8x16 vuint8x16_not(vuint8x16 vec) { vec.dbl[0] = vuint8x8_not(vec.dbl[0]); - vec1.dbl[1] = vuint8x8_not(vec.dbl[1]); + vec.dbl[1] = vuint8x8_not(vec.dbl[1]); return vec; } # define VUINT8x16_NOT_DEFINED @@ -2036,6 +2106,16 @@ } # define VUINT8x16_LSHIFT_DEFINED #endif +#if !defined(VUINT8x16_TRUNC_DEFINED) \ + && (defined(VUINT8x8_TRUNC_DEFINED)) +VEC_FUNC_IMPL vuint8x16 vuint8x16_trunc(vuint8x16 vec) +{ + vec.dbl[0] = vuint8x8_trunc(vec.dbl[0]); + vec.dbl[1] = vuint8x8_trunc(vec.dbl[1]); + return vec; +} +# define VUINT8x16_TRUNC_DEFINED +#endif #if !defined(VINT8x32_SPLAT_DEFINED) \ && (defined(VINT8x16_SPLAT_DEFINED)) VEC_FUNC_IMPL vint8x32 vint8x32_splat(vec_int8 x) @@ -2182,7 +2262,7 @@ VEC_FUNC_IMPL vint8x32 vint8x32_not(vint8x32 vec) { vec.dbl[0] = vint8x16_not(vec.dbl[0]); - vec1.dbl[1] = vint8x16_not(vec.dbl[1]); + vec.dbl[1] = vint8x16_not(vec.dbl[1]); return vec; } # define VINT8x32_NOT_DEFINED @@ -2287,6 +2367,16 @@ } # define VINT8x32_LSHIFT_DEFINED #endif +#if !defined(VINT8x32_TRUNC_DEFINED) \ + && (defined(VINT8x16_TRUNC_DEFINED)) +VEC_FUNC_IMPL vint8x32 vint8x32_trunc(vint8x32 vec) +{ + vec.dbl[0] = vint8x16_trunc(vec.dbl[0]); + vec.dbl[1] = vint8x16_trunc(vec.dbl[1]); + return vec; +} +# define VINT8x32_TRUNC_DEFINED +#endif #if !defined(VUINT8x32_SPLAT_DEFINED) \ && (defined(VUINT8x16_SPLAT_DEFINED)) VEC_FUNC_IMPL vuint8x32 vuint8x32_splat(vec_uint8 x) @@ -2433,7 +2523,7 @@ VEC_FUNC_IMPL vuint8x32 vuint8x32_not(vuint8x32 vec) { vec.dbl[0] = vuint8x16_not(vec.dbl[0]); - vec1.dbl[1] = vuint8x16_not(vec.dbl[1]); + vec.dbl[1] = vuint8x16_not(vec.dbl[1]); return vec; } # define VUINT8x32_NOT_DEFINED @@ -2538,6 +2628,16 @@ } # define VUINT8x32_LSHIFT_DEFINED #endif +#if !defined(VUINT8x32_TRUNC_DEFINED) \ + && (defined(VUINT8x16_TRUNC_DEFINED)) +VEC_FUNC_IMPL vuint8x32 vuint8x32_trunc(vuint8x32 vec) +{ + vec.dbl[0] = vuint8x16_trunc(vec.dbl[0]); + vec.dbl[1] = vuint8x16_trunc(vec.dbl[1]); + return vec; +} +# define VUINT8x32_TRUNC_DEFINED +#endif #if !defined(VINT8x64_SPLAT_DEFINED) \ && (defined(VINT8x32_SPLAT_DEFINED)) VEC_FUNC_IMPL vint8x64 vint8x64_splat(vec_int8 x) @@ -2684,7 +2784,7 @@ VEC_FUNC_IMPL vint8x64 vint8x64_not(vint8x64 vec) { vec.dbl[0] = vint8x32_not(vec.dbl[0]); - vec1.dbl[1] = vint8x32_not(vec.dbl[1]); + vec.dbl[1] = vint8x32_not(vec.dbl[1]); return vec; } # define VINT8x64_NOT_DEFINED @@ -2789,6 +2889,16 @@ } # define VINT8x64_LSHIFT_DEFINED #endif +#if !defined(VINT8x64_TRUNC_DEFINED) \ + && (defined(VINT8x32_TRUNC_DEFINED)) +VEC_FUNC_IMPL vint8x64 vint8x64_trunc(vint8x64 vec) +{ + vec.dbl[0] = vint8x32_trunc(vec.dbl[0]); + vec.dbl[1] = vint8x32_trunc(vec.dbl[1]); + return vec; +} +# define VINT8x64_TRUNC_DEFINED +#endif #if !defined(VUINT8x64_SPLAT_DEFINED) \ && (defined(VUINT8x32_SPLAT_DEFINED)) VEC_FUNC_IMPL vuint8x64 vuint8x64_splat(vec_uint8 x) @@ -2935,7 +3045,7 @@ VEC_FUNC_IMPL vuint8x64 vuint8x64_not(vuint8x64 vec) { vec.dbl[0] = vuint8x32_not(vec.dbl[0]); - vec1.dbl[1] = vuint8x32_not(vec.dbl[1]); + vec.dbl[1] = vuint8x32_not(vec.dbl[1]); return vec; } # define VUINT8x64_NOT_DEFINED @@ -3040,6 +3150,16 @@ } # define VUINT8x64_LSHIFT_DEFINED #endif +#if !defined(VUINT8x64_TRUNC_DEFINED) \ + && (defined(VUINT8x32_TRUNC_DEFINED)) +VEC_FUNC_IMPL vuint8x64 vuint8x64_trunc(vuint8x64 vec) +{ + vec.dbl[0] = vuint8x32_trunc(vec.dbl[0]); + vec.dbl[1] = vuint8x32_trunc(vec.dbl[1]); + return vec; +} +# define VUINT8x64_TRUNC_DEFINED +#endif #if !defined(VINT16x2_SPLAT_DEFINED) \ && (defined(VINT16x1_SPLAT_DEFINED)) VEC_FUNC_IMPL vint16x2 vint16x2_splat(vec_int16 x) @@ -3186,7 +3306,7 @@ VEC_FUNC_IMPL vint16x2 vint16x2_not(vint16x2 vec) { vec.dbl[0] = vint16x1_not(vec.dbl[0]); - vec1.dbl[1] = vint16x1_not(vec.dbl[1]); + vec.dbl[1] = vint16x1_not(vec.dbl[1]); return vec; } # define VINT16x2_NOT_DEFINED @@ -3291,6 +3411,16 @@ } # define VINT16x2_LSHIFT_DEFINED #endif +#if !defined(VINT16x2_TRUNC_DEFINED) \ + && (defined(VINT16x1_TRUNC_DEFINED)) +VEC_FUNC_IMPL vint16x2 vint16x2_trunc(vint16x2 vec) +{ + vec.dbl[0] = vint16x1_trunc(vec.dbl[0]); + vec.dbl[1] = vint16x1_trunc(vec.dbl[1]); + return vec; +} +# define VINT16x2_TRUNC_DEFINED +#endif #if !defined(VUINT16x2_SPLAT_DEFINED) \ && (defined(VUINT16x1_SPLAT_DEFINED)) VEC_FUNC_IMPL vuint16x2 vuint16x2_splat(vec_uint16 x) @@ -3437,7 +3567,7 @@ VEC_FUNC_IMPL vuint16x2 vuint16x2_not(vuint16x2 vec) { vec.dbl[0] = vuint16x1_not(vec.dbl[0]); - vec1.dbl[1] = vuint16x1_not(vec.dbl[1]); + vec.dbl[1] = vuint16x1_not(vec.dbl[1]); return vec; } # define VUINT16x2_NOT_DEFINED @@ -3542,6 +3672,16 @@ } # define VUINT16x2_LSHIFT_DEFINED #endif +#if !defined(VUINT16x2_TRUNC_DEFINED) \ + && (defined(VUINT16x1_TRUNC_DEFINED)) +VEC_FUNC_IMPL vuint16x2 vuint16x2_trunc(vuint16x2 vec) +{ + vec.dbl[0] = vuint16x1_trunc(vec.dbl[0]); + vec.dbl[1] = vuint16x1_trunc(vec.dbl[1]); + return vec; +} +# define VUINT16x2_TRUNC_DEFINED +#endif #if !defined(VINT16x4_SPLAT_DEFINED) \ && (defined(VINT16x2_SPLAT_DEFINED)) VEC_FUNC_IMPL vint16x4 vint16x4_splat(vec_int16 x) @@ -3688,7 +3828,7 @@ VEC_FUNC_IMPL vint16x4 vint16x4_not(vint16x4 vec) { vec.dbl[0] = vint16x2_not(vec.dbl[0]); - vec1.dbl[1] = vint16x2_not(vec.dbl[1]); + vec.dbl[1] = vint16x2_not(vec.dbl[1]); return vec; } # define VINT16x4_NOT_DEFINED @@ -3793,6 +3933,16 @@ } # define VINT16x4_LSHIFT_DEFINED #endif +#if !defined(VINT16x4_TRUNC_DEFINED) \ + && (defined(VINT16x2_TRUNC_DEFINED)) +VEC_FUNC_IMPL vint16x4 vint16x4_trunc(vint16x4 vec) +{ + vec.dbl[0] = vint16x2_trunc(vec.dbl[0]); + vec.dbl[1] = vint16x2_trunc(vec.dbl[1]); + return vec; +} +# define VINT16x4_TRUNC_DEFINED +#endif #if !defined(VUINT16x4_SPLAT_DEFINED) \ && (defined(VUINT16x2_SPLAT_DEFINED)) VEC_FUNC_IMPL vuint16x4 vuint16x4_splat(vec_uint16 x) @@ -3939,7 +4089,7 @@ VEC_FUNC_IMPL vuint16x4 vuint16x4_not(vuint16x4 vec) { vec.dbl[0] = vuint16x2_not(vec.dbl[0]); - vec1.dbl[1] = vuint16x2_not(vec.dbl[1]); + vec.dbl[1] = vuint16x2_not(vec.dbl[1]); return vec; } # define VUINT16x4_NOT_DEFINED @@ -4044,6 +4194,16 @@ } # define VUINT16x4_LSHIFT_DEFINED #endif +#if !defined(VUINT16x4_TRUNC_DEFINED) \ + && (defined(VUINT16x2_TRUNC_DEFINED)) +VEC_FUNC_IMPL vuint16x4 vuint16x4_trunc(vuint16x4 vec) +{ + vec.dbl[0] = vuint16x2_trunc(vec.dbl[0]); + vec.dbl[1] = vuint16x2_trunc(vec.dbl[1]); + return vec; +} +# define VUINT16x4_TRUNC_DEFINED +#endif #if !defined(VINT16x8_SPLAT_DEFINED) \ && (defined(VINT16x4_SPLAT_DEFINED)) VEC_FUNC_IMPL vint16x8 vint16x8_splat(vec_int16 x) @@ -4190,7 +4350,7 @@ VEC_FUNC_IMPL vint16x8 vint16x8_not(vint16x8 vec) { vec.dbl[0] = vint16x4_not(vec.dbl[0]); - vec1.dbl[1] = vint16x4_not(vec.dbl[1]); + vec.dbl[1] = vint16x4_not(vec.dbl[1]); return vec; } # define VINT16x8_NOT_DEFINED @@ -4295,6 +4455,16 @@ } # define VINT16x8_LSHIFT_DEFINED #endif +#if !defined(VINT16x8_TRUNC_DEFINED) \ + && (defined(VINT16x4_TRUNC_DEFINED)) +VEC_FUNC_IMPL vint16x8 vint16x8_trunc(vint16x8 vec) +{ + vec.dbl[0] = vint16x4_trunc(vec.dbl[0]); + vec.dbl[1] = vint16x4_trunc(vec.dbl[1]); + return vec; +} +# define VINT16x8_TRUNC_DEFINED +#endif #if !defined(VUINT16x8_SPLAT_DEFINED) \ && (defined(VUINT16x4_SPLAT_DEFINED)) VEC_FUNC_IMPL vuint16x8 vuint16x8_splat(vec_uint16 x) @@ -4441,7 +4611,7 @@ VEC_FUNC_IMPL vuint16x8 vuint16x8_not(vuint16x8 vec) { vec.dbl[0] = vuint16x4_not(vec.dbl[0]); - vec1.dbl[1] = vuint16x4_not(vec.dbl[1]); + vec.dbl[1] = vuint16x4_not(vec.dbl[1]); return vec; } # define VUINT16x8_NOT_DEFINED @@ -4546,6 +4716,16 @@ } # define VUINT16x8_LSHIFT_DEFINED #endif +#if !defined(VUINT16x8_TRUNC_DEFINED) \ + && (defined(VUINT16x4_TRUNC_DEFINED)) +VEC_FUNC_IMPL vuint16x8 vuint16x8_trunc(vuint16x8 vec) +{ + vec.dbl[0] = vuint16x4_trunc(vec.dbl[0]); + vec.dbl[1] = vuint16x4_trunc(vec.dbl[1]); + return vec; +} +# define VUINT16x8_TRUNC_DEFINED +#endif #if !defined(VINT16x16_SPLAT_DEFINED) \ && (defined(VINT16x8_SPLAT_DEFINED)) VEC_FUNC_IMPL vint16x16 vint16x16_splat(vec_int16 x) @@ -4692,7 +4872,7 @@ VEC_FUNC_IMPL vint16x16 vint16x16_not(vint16x16 vec) { vec.dbl[0] = vint16x8_not(vec.dbl[0]); - vec1.dbl[1] = vint16x8_not(vec.dbl[1]); + vec.dbl[1] = vint16x8_not(vec.dbl[1]); return vec; } # define VINT16x16_NOT_DEFINED @@ -4797,6 +4977,16 @@ } # define VINT16x16_LSHIFT_DEFINED #endif +#if !defined(VINT16x16_TRUNC_DEFINED) \ + && (defined(VINT16x8_TRUNC_DEFINED)) +VEC_FUNC_IMPL vint16x16 vint16x16_trunc(vint16x16 vec) +{ + vec.dbl[0] = vint16x8_trunc(vec.dbl[0]); + vec.dbl[1] = vint16x8_trunc(vec.dbl[1]); + return vec; +} +# define VINT16x16_TRUNC_DEFINED +#endif #if !defined(VUINT16x16_SPLAT_DEFINED) \ && (defined(VUINT16x8_SPLAT_DEFINED)) VEC_FUNC_IMPL vuint16x16 vuint16x16_splat(vec_uint16 x) @@ -4943,7 +5133,7 @@ VEC_FUNC_IMPL vuint16x16 vuint16x16_not(vuint16x16 vec) { vec.dbl[0] = vuint16x8_not(vec.dbl[0]); - vec1.dbl[1] = vuint16x8_not(vec.dbl[1]); + vec.dbl[1] = vuint16x8_not(vec.dbl[1]); return vec; } # define VUINT16x16_NOT_DEFINED @@ -5048,6 +5238,16 @@ } # define VUINT16x16_LSHIFT_DEFINED #endif +#if !defined(VUINT16x16_TRUNC_DEFINED) \ + && (defined(VUINT16x8_TRUNC_DEFINED)) +VEC_FUNC_IMPL vuint16x16 vuint16x16_trunc(vuint16x16 vec) +{ + vec.dbl[0] = vuint16x8_trunc(vec.dbl[0]); + vec.dbl[1] = vuint16x8_trunc(vec.dbl[1]); + return vec; +} +# define VUINT16x16_TRUNC_DEFINED +#endif #if !defined(VINT16x32_SPLAT_DEFINED) \ && (defined(VINT16x16_SPLAT_DEFINED)) VEC_FUNC_IMPL vint16x32 vint16x32_splat(vec_int16 x) @@ -5194,7 +5394,7 @@ VEC_FUNC_IMPL vint16x32 vint16x32_not(vint16x32 vec) { vec.dbl[0] = vint16x16_not(vec.dbl[0]); - vec1.dbl[1] = vint16x16_not(vec.dbl[1]); + vec.dbl[1] = vint16x16_not(vec.dbl[1]); return vec; } # define VINT16x32_NOT_DEFINED @@ -5299,6 +5499,16 @@ } # define VINT16x32_LSHIFT_DEFINED #endif +#if !defined(VINT16x32_TRUNC_DEFINED) \ + && (defined(VINT16x16_TRUNC_DEFINED)) +VEC_FUNC_IMPL vint16x32 vint16x32_trunc(vint16x32 vec) +{ + vec.dbl[0] = vint16x16_trunc(vec.dbl[0]); + vec.dbl[1] = vint16x16_trunc(vec.dbl[1]); + return vec; +} +# define VINT16x32_TRUNC_DEFINED +#endif #if !defined(VUINT16x32_SPLAT_DEFINED) \ && (defined(VUINT16x16_SPLAT_DEFINED)) VEC_FUNC_IMPL vuint16x32 vuint16x32_splat(vec_uint16 x) @@ -5445,7 +5655,7 @@ VEC_FUNC_IMPL vuint16x32 vuint16x32_not(vuint16x32 vec) { vec.dbl[0] = vuint16x16_not(vec.dbl[0]); - vec1.dbl[1] = vuint16x16_not(vec.dbl[1]); + vec.dbl[1] = vuint16x16_not(vec.dbl[1]); return vec; } # define VUINT16x32_NOT_DEFINED @@ -5550,6 +5760,16 @@ } # define VUINT16x32_LSHIFT_DEFINED #endif +#if !defined(VUINT16x32_TRUNC_DEFINED) \ + && (defined(VUINT16x16_TRUNC_DEFINED)) +VEC_FUNC_IMPL vuint16x32 vuint16x32_trunc(vuint16x32 vec) +{ + vec.dbl[0] = vuint16x16_trunc(vec.dbl[0]); + vec.dbl[1] = vuint16x16_trunc(vec.dbl[1]); + return vec; +} +# define VUINT16x32_TRUNC_DEFINED +#endif #if !defined(VINT32x2_SPLAT_DEFINED) \ && (defined(VINT32x1_SPLAT_DEFINED)) VEC_FUNC_IMPL vint32x2 vint32x2_splat(vec_int32 x) @@ -5696,7 +5916,7 @@ VEC_FUNC_IMPL vint32x2 vint32x2_not(vint32x2 vec) { vec.dbl[0] = vint32x1_not(vec.dbl[0]); - vec1.dbl[1] = vint32x1_not(vec.dbl[1]); + vec.dbl[1] = vint32x1_not(vec.dbl[1]); return vec; } # define VINT32x2_NOT_DEFINED @@ -5801,6 +6021,16 @@ } # define VINT32x2_LSHIFT_DEFINED #endif +#if !defined(VINT32x2_TRUNC_DEFINED) \ + && (defined(VINT32x1_TRUNC_DEFINED)) +VEC_FUNC_IMPL vint32x2 vint32x2_trunc(vint32x2 vec) +{ + vec.dbl[0] = vint32x1_trunc(vec.dbl[0]); + vec.dbl[1] = vint32x1_trunc(vec.dbl[1]); + return vec; +} +# define VINT32x2_TRUNC_DEFINED +#endif #if !defined(VUINT32x2_SPLAT_DEFINED) \ && (defined(VUINT32x1_SPLAT_DEFINED)) VEC_FUNC_IMPL vuint32x2 vuint32x2_splat(vec_uint32 x) @@ -5947,7 +6177,7 @@ VEC_FUNC_IMPL vuint32x2 vuint32x2_not(vuint32x2 vec) { vec.dbl[0] = vuint32x1_not(vec.dbl[0]); - vec1.dbl[1] = vuint32x1_not(vec.dbl[1]); + vec.dbl[1] = vuint32x1_not(vec.dbl[1]); return vec; } # define VUINT32x2_NOT_DEFINED @@ -6052,6 +6282,16 @@ } # define VUINT32x2_LSHIFT_DEFINED #endif +#if !defined(VUINT32x2_TRUNC_DEFINED) \ + && (defined(VUINT32x1_TRUNC_DEFINED)) +VEC_FUNC_IMPL vuint32x2 vuint32x2_trunc(vuint32x2 vec) +{ + vec.dbl[0] = vuint32x1_trunc(vec.dbl[0]); + vec.dbl[1] = vuint32x1_trunc(vec.dbl[1]); + return vec; +} +# define VUINT32x2_TRUNC_DEFINED +#endif #if !defined(VINT32x4_SPLAT_DEFINED) \ && (defined(VINT32x2_SPLAT_DEFINED)) VEC_FUNC_IMPL vint32x4 vint32x4_splat(vec_int32 x) @@ -6198,7 +6438,7 @@ VEC_FUNC_IMPL vint32x4 vint32x4_not(vint32x4 vec) { vec.dbl[0] = vint32x2_not(vec.dbl[0]); - vec1.dbl[1] = vint32x2_not(vec.dbl[1]); + vec.dbl[1] = vint32x2_not(vec.dbl[1]); return vec; } # define VINT32x4_NOT_DEFINED @@ -6303,6 +6543,16 @@ } # define VINT32x4_LSHIFT_DEFINED #endif +#if !defined(VINT32x4_TRUNC_DEFINED) \ + && (defined(VINT32x2_TRUNC_DEFINED)) +VEC_FUNC_IMPL vint32x4 vint32x4_trunc(vint32x4 vec) +{ + vec.dbl[0] = vint32x2_trunc(vec.dbl[0]); + vec.dbl[1] = vint32x2_trunc(vec.dbl[1]); + return vec; +} +# define VINT32x4_TRUNC_DEFINED +#endif #if !defined(VUINT32x4_SPLAT_DEFINED) \ && (defined(VUINT32x2_SPLAT_DEFINED)) VEC_FUNC_IMPL vuint32x4 vuint32x4_splat(vec_uint32 x) @@ -6449,7 +6699,7 @@ VEC_FUNC_IMPL vuint32x4 vuint32x4_not(vuint32x4 vec) { vec.dbl[0] = vuint32x2_not(vec.dbl[0]); - vec1.dbl[1] = vuint32x2_not(vec.dbl[1]); + vec.dbl[1] = vuint32x2_not(vec.dbl[1]); return vec; } # define VUINT32x4_NOT_DEFINED @@ -6554,6 +6804,16 @@ } # define VUINT32x4_LSHIFT_DEFINED #endif +#if !defined(VUINT32x4_TRUNC_DEFINED) \ + && (defined(VUINT32x2_TRUNC_DEFINED)) +VEC_FUNC_IMPL vuint32x4 vuint32x4_trunc(vuint32x4 vec) +{ + vec.dbl[0] = vuint32x2_trunc(vec.dbl[0]); + vec.dbl[1] = vuint32x2_trunc(vec.dbl[1]); + return vec; +} +# define VUINT32x4_TRUNC_DEFINED +#endif #if !defined(VINT32x8_SPLAT_DEFINED) \ && (defined(VINT32x4_SPLAT_DEFINED)) VEC_FUNC_IMPL vint32x8 vint32x8_splat(vec_int32 x) @@ -6700,7 +6960,7 @@ VEC_FUNC_IMPL vint32x8 vint32x8_not(vint32x8 vec) { vec.dbl[0] = vint32x4_not(vec.dbl[0]); - vec1.dbl[1] = vint32x4_not(vec.dbl[1]); + vec.dbl[1] = vint32x4_not(vec.dbl[1]); return vec; } # define VINT32x8_NOT_DEFINED @@ -6805,6 +7065,16 @@ } # define VINT32x8_LSHIFT_DEFINED #endif +#if !defined(VINT32x8_TRUNC_DEFINED) \ + && (defined(VINT32x4_TRUNC_DEFINED)) +VEC_FUNC_IMPL vint32x8 vint32x8_trunc(vint32x8 vec) +{ + vec.dbl[0] = vint32x4_trunc(vec.dbl[0]); + vec.dbl[1] = vint32x4_trunc(vec.dbl[1]); + return vec; +} +# define VINT32x8_TRUNC_DEFINED +#endif #if !defined(VUINT32x8_SPLAT_DEFINED) \ && (defined(VUINT32x4_SPLAT_DEFINED)) VEC_FUNC_IMPL vuint32x8 vuint32x8_splat(vec_uint32 x) @@ -6951,7 +7221,7 @@ VEC_FUNC_IMPL vuint32x8 vuint32x8_not(vuint32x8 vec) { vec.dbl[0] = vuint32x4_not(vec.dbl[0]); - vec1.dbl[1] = vuint32x4_not(vec.dbl[1]); + vec.dbl[1] = vuint32x4_not(vec.dbl[1]); return vec; } # define VUINT32x8_NOT_DEFINED @@ -7056,6 +7326,16 @@ } # define VUINT32x8_LSHIFT_DEFINED #endif +#if !defined(VUINT32x8_TRUNC_DEFINED) \ + && (defined(VUINT32x4_TRUNC_DEFINED)) +VEC_FUNC_IMPL vuint32x8 vuint32x8_trunc(vuint32x8 vec) +{ + vec.dbl[0] = vuint32x4_trunc(vec.dbl[0]); + vec.dbl[1] = vuint32x4_trunc(vec.dbl[1]); + return vec; +} +# define VUINT32x8_TRUNC_DEFINED +#endif #if !defined(VINT32x16_SPLAT_DEFINED) \ && (defined(VINT32x8_SPLAT_DEFINED)) VEC_FUNC_IMPL vint32x16 vint32x16_splat(vec_int32 x) @@ -7202,7 +7482,7 @@ VEC_FUNC_IMPL vint32x16 vint32x16_not(vint32x16 vec) { vec.dbl[0] = vint32x8_not(vec.dbl[0]); - vec1.dbl[1] = vint32x8_not(vec.dbl[1]); + vec.dbl[1] = vint32x8_not(vec.dbl[1]); return vec; } # define VINT32x16_NOT_DEFINED @@ -7307,6 +7587,16 @@ } # define VINT32x16_LSHIFT_DEFINED #endif +#if !defined(VINT32x16_TRUNC_DEFINED) \ + && (defined(VINT32x8_TRUNC_DEFINED)) +VEC_FUNC_IMPL vint32x16 vint32x16_trunc(vint32x16 vec) +{ + vec.dbl[0] = vint32x8_trunc(vec.dbl[0]); + vec.dbl[1] = vint32x8_trunc(vec.dbl[1]); + return vec; +} +# define VINT32x16_TRUNC_DEFINED +#endif #if !defined(VUINT32x16_SPLAT_DEFINED) \ && (defined(VUINT32x8_SPLAT_DEFINED)) VEC_FUNC_IMPL vuint32x16 vuint32x16_splat(vec_uint32 x) @@ -7453,7 +7743,7 @@ VEC_FUNC_IMPL vuint32x16 vuint32x16_not(vuint32x16 vec) { vec.dbl[0] = vuint32x8_not(vec.dbl[0]); - vec1.dbl[1] = vuint32x8_not(vec.dbl[1]); + vec.dbl[1] = vuint32x8_not(vec.dbl[1]); return vec; } # define VUINT32x16_NOT_DEFINED @@ -7558,6 +7848,16 @@ } # define VUINT32x16_LSHIFT_DEFINED #endif +#if !defined(VUINT32x16_TRUNC_DEFINED) \ + && (defined(VUINT32x8_TRUNC_DEFINED)) +VEC_FUNC_IMPL vuint32x16 vuint32x16_trunc(vuint32x16 vec) +{ + vec.dbl[0] = vuint32x8_trunc(vec.dbl[0]); + vec.dbl[1] = vuint32x8_trunc(vec.dbl[1]); + return vec; +} +# define VUINT32x16_TRUNC_DEFINED +#endif #if !defined(VINT64x2_SPLAT_DEFINED) \ && (defined(VINT64x1_SPLAT_DEFINED)) VEC_FUNC_IMPL vint64x2 vint64x2_splat(vec_int64 x) @@ -7704,7 +8004,7 @@ VEC_FUNC_IMPL vint64x2 vint64x2_not(vint64x2 vec) { vec.dbl[0] = vint64x1_not(vec.dbl[0]); - vec1.dbl[1] = vint64x1_not(vec.dbl[1]); + vec.dbl[1] = vint64x1_not(vec.dbl[1]); return vec; } # define VINT64x2_NOT_DEFINED @@ -7809,6 +8109,16 @@ } # define VINT64x2_LSHIFT_DEFINED #endif +#if !defined(VINT64x2_TRUNC_DEFINED) \ + && (defined(VINT64x1_TRUNC_DEFINED)) +VEC_FUNC_IMPL vint64x2 vint64x2_trunc(vint64x2 vec) +{ + vec.dbl[0] = vint64x1_trunc(vec.dbl[0]); + vec.dbl[1] = vint64x1_trunc(vec.dbl[1]); + return vec; +} +# define VINT64x2_TRUNC_DEFINED +#endif #if !defined(VUINT64x2_SPLAT_DEFINED) \ && (defined(VUINT64x1_SPLAT_DEFINED)) VEC_FUNC_IMPL vuint64x2 vuint64x2_splat(vec_uint64 x) @@ -7955,7 +8265,7 @@ VEC_FUNC_IMPL vuint64x2 vuint64x2_not(vuint64x2 vec) { vec.dbl[0] = vuint64x1_not(vec.dbl[0]); - vec1.dbl[1] = vuint64x1_not(vec.dbl[1]); + vec.dbl[1] = vuint64x1_not(vec.dbl[1]); return vec; } # define VUINT64x2_NOT_DEFINED @@ -8060,6 +8370,16 @@ } # define VUINT64x2_LSHIFT_DEFINED #endif +#if !defined(VUINT64x2_TRUNC_DEFINED) \ + && (defined(VUINT64x1_TRUNC_DEFINED)) +VEC_FUNC_IMPL vuint64x2 vuint64x2_trunc(vuint64x2 vec) +{ + vec.dbl[0] = vuint64x1_trunc(vec.dbl[0]); + vec.dbl[1] = vuint64x1_trunc(vec.dbl[1]); + return vec; +} +# define VUINT64x2_TRUNC_DEFINED +#endif #if !defined(VINT64x4_SPLAT_DEFINED) \ && (defined(VINT64x2_SPLAT_DEFINED)) VEC_FUNC_IMPL vint64x4 vint64x4_splat(vec_int64 x) @@ -8206,7 +8526,7 @@ VEC_FUNC_IMPL vint64x4 vint64x4_not(vint64x4 vec) { vec.dbl[0] = vint64x2_not(vec.dbl[0]); - vec1.dbl[1] = vint64x2_not(vec.dbl[1]); + vec.dbl[1] = vint64x2_not(vec.dbl[1]); return vec; } # define VINT64x4_NOT_DEFINED @@ -8311,6 +8631,16 @@ } # define VINT64x4_LSHIFT_DEFINED #endif +#if !defined(VINT64x4_TRUNC_DEFINED) \ + && (defined(VINT64x2_TRUNC_DEFINED)) +VEC_FUNC_IMPL vint64x4 vint64x4_trunc(vint64x4 vec) +{ + vec.dbl[0] = vint64x2_trunc(vec.dbl[0]); + vec.dbl[1] = vint64x2_trunc(vec.dbl[1]); + return vec; +} +# define VINT64x4_TRUNC_DEFINED +#endif #if !defined(VUINT64x4_SPLAT_DEFINED) \ && (defined(VUINT64x2_SPLAT_DEFINED)) VEC_FUNC_IMPL vuint64x4 vuint64x4_splat(vec_uint64 x) @@ -8457,7 +8787,7 @@ VEC_FUNC_IMPL vuint64x4 vuint64x4_not(vuint64x4 vec) { vec.dbl[0] = vuint64x2_not(vec.dbl[0]); - vec1.dbl[1] = vuint64x2_not(vec.dbl[1]); + vec.dbl[1] = vuint64x2_not(vec.dbl[1]); return vec; } # define VUINT64x4_NOT_DEFINED @@ -8562,6 +8892,16 @@ } # define VUINT64x4_LSHIFT_DEFINED #endif +#if !defined(VUINT64x4_TRUNC_DEFINED) \ + && (defined(VUINT64x2_TRUNC_DEFINED)) +VEC_FUNC_IMPL vuint64x4 vuint64x4_trunc(vuint64x4 vec) +{ + vec.dbl[0] = vuint64x2_trunc(vec.dbl[0]); + vec.dbl[1] = vuint64x2_trunc(vec.dbl[1]); + return vec; +} +# define VUINT64x4_TRUNC_DEFINED +#endif #if !defined(VINT64x8_SPLAT_DEFINED) \ && (defined(VINT64x4_SPLAT_DEFINED)) VEC_FUNC_IMPL vint64x8 vint64x8_splat(vec_int64 x) @@ -8708,7 +9048,7 @@ VEC_FUNC_IMPL vint64x8 vint64x8_not(vint64x8 vec) { vec.dbl[0] = vint64x4_not(vec.dbl[0]); - vec1.dbl[1] = vint64x4_not(vec.dbl[1]); + vec.dbl[1] = vint64x4_not(vec.dbl[1]); return vec; } # define VINT64x8_NOT_DEFINED @@ -8813,6 +9153,16 @@ } # define VINT64x8_LSHIFT_DEFINED #endif +#if !defined(VINT64x8_TRUNC_DEFINED) \ + && (defined(VINT64x4_TRUNC_DEFINED)) +VEC_FUNC_IMPL vint64x8 vint64x8_trunc(vint64x8 vec) +{ + vec.dbl[0] = vint64x4_trunc(vec.dbl[0]); + vec.dbl[1] = vint64x4_trunc(vec.dbl[1]); + return vec; +} +# define VINT64x8_TRUNC_DEFINED +#endif #if !defined(VUINT64x8_SPLAT_DEFINED) \ && (defined(VUINT64x4_SPLAT_DEFINED)) VEC_FUNC_IMPL vuint64x8 vuint64x8_splat(vec_uint64 x) @@ -8959,7 +9309,7 @@ VEC_FUNC_IMPL vuint64x8 vuint64x8_not(vuint64x8 vec) { vec.dbl[0] = vuint64x4_not(vec.dbl[0]); - vec1.dbl[1] = vuint64x4_not(vec.dbl[1]); + vec.dbl[1] = vuint64x4_not(vec.dbl[1]); return vec; } # define VUINT64x8_NOT_DEFINED @@ -9064,6 +9414,16 @@ } # define VUINT64x8_LSHIFT_DEFINED #endif +#if !defined(VUINT64x8_TRUNC_DEFINED) \ + && (defined(VUINT64x4_TRUNC_DEFINED)) +VEC_FUNC_IMPL vuint64x8 vuint64x8_trunc(vuint64x8 vec) +{ + vec.dbl[0] = vuint64x4_trunc(vec.dbl[0]); + vec.dbl[1] = vuint64x4_trunc(vec.dbl[1]); + return vec; +} +# define VUINT64x8_TRUNC_DEFINED +#endif #if !defined(VF32x2_SPLAT_DEFINED) \ && (defined(VF32x1_SPLAT_DEFINED)) VEC_FUNC_IMPL vf32x2 vf32x2_splat(vec_f32 x) @@ -9245,6 +9605,46 @@ } # define VF32x2_MAX_DEFINED #endif +#if !defined(VF32x2_FLOOR_DEFINED) \ + && (defined(VF32x1_FLOOR_DEFINED)) +VEC_FUNC_IMPL vf32x2 vf32x2_floor(vf32x2 vec) +{ + vec.dbl[0] = vf32x1_floor(vec.dbl[0]); + vec.dbl[1] = vf32x1_floor(vec.dbl[1]); + return vec; +} +# define VF32x2_FLOOR_DEFINED +#endif +#if !defined(VF32x2_CEIL_DEFINED) \ + && (defined(VF32x1_CEIL_DEFINED)) +VEC_FUNC_IMPL vf32x2 vf32x2_ceil(vf32x2 vec) +{ + vec.dbl[0] = vf32x1_ceil(vec.dbl[0]); + vec.dbl[1] = vf32x1_ceil(vec.dbl[1]); + return vec; +} +# define VF32x2_CEIL_DEFINED +#endif +#if !defined(VF32x2_ROUND_DEFINED) \ + && (defined(VF32x1_ROUND_DEFINED)) +VEC_FUNC_IMPL vf32x2 vf32x2_round(vf32x2 vec) +{ + vec.dbl[0] = vf32x1_round(vec.dbl[0]); + vec.dbl[1] = vf32x1_round(vec.dbl[1]); + return vec; +} +# define VF32x2_ROUND_DEFINED +#endif +#if !defined(VF32x2_TRUNC_DEFINED) \ + && (defined(VF32x1_TRUNC_DEFINED)) +VEC_FUNC_IMPL vf32x2 vf32x2_trunc(vf32x2 vec) +{ + vec.dbl[0] = vf32x1_trunc(vec.dbl[0]); + vec.dbl[1] = vf32x1_trunc(vec.dbl[1]); + return vec; +} +# define VF32x2_TRUNC_DEFINED +#endif #if !defined(VF32x4_SPLAT_DEFINED) \ && (defined(VF32x2_SPLAT_DEFINED)) VEC_FUNC_IMPL vf32x4 vf32x4_splat(vec_f32 x) @@ -9426,6 +9826,46 @@ } # define VF32x4_MAX_DEFINED #endif +#if !defined(VF32x4_FLOOR_DEFINED) \ + && (defined(VF32x2_FLOOR_DEFINED)) +VEC_FUNC_IMPL vf32x4 vf32x4_floor(vf32x4 vec) +{ + vec.dbl[0] = vf32x2_floor(vec.dbl[0]); + vec.dbl[1] = vf32x2_floor(vec.dbl[1]); + return vec; +} +# define VF32x4_FLOOR_DEFINED +#endif +#if !defined(VF32x4_CEIL_DEFINED) \ + && (defined(VF32x2_CEIL_DEFINED)) +VEC_FUNC_IMPL vf32x4 vf32x4_ceil(vf32x4 vec) +{ + vec.dbl[0] = vf32x2_ceil(vec.dbl[0]); + vec.dbl[1] = vf32x2_ceil(vec.dbl[1]); + return vec; +} +# define VF32x4_CEIL_DEFINED +#endif +#if !defined(VF32x4_ROUND_DEFINED) \ + && (defined(VF32x2_ROUND_DEFINED)) +VEC_FUNC_IMPL vf32x4 vf32x4_round(vf32x4 vec) +{ + vec.dbl[0] = vf32x2_round(vec.dbl[0]); + vec.dbl[1] = vf32x2_round(vec.dbl[1]); + return vec; +} +# define VF32x4_ROUND_DEFINED +#endif +#if !defined(VF32x4_TRUNC_DEFINED) \ + && (defined(VF32x2_TRUNC_DEFINED)) +VEC_FUNC_IMPL vf32x4 vf32x4_trunc(vf32x4 vec) +{ + vec.dbl[0] = vf32x2_trunc(vec.dbl[0]); + vec.dbl[1] = vf32x2_trunc(vec.dbl[1]); + return vec; +} +# define VF32x4_TRUNC_DEFINED +#endif #if !defined(VF32x8_SPLAT_DEFINED) \ && (defined(VF32x4_SPLAT_DEFINED)) VEC_FUNC_IMPL vf32x8 vf32x8_splat(vec_f32 x) @@ -9607,6 +10047,46 @@ } # define VF32x8_MAX_DEFINED #endif +#if !defined(VF32x8_FLOOR_DEFINED) \ + && (defined(VF32x4_FLOOR_DEFINED)) +VEC_FUNC_IMPL vf32x8 vf32x8_floor(vf32x8 vec) +{ + vec.dbl[0] = vf32x4_floor(vec.dbl[0]); + vec.dbl[1] = vf32x4_floor(vec.dbl[1]); + return vec; +} +# define VF32x8_FLOOR_DEFINED +#endif +#if !defined(VF32x8_CEIL_DEFINED) \ + && (defined(VF32x4_CEIL_DEFINED)) +VEC_FUNC_IMPL vf32x8 vf32x8_ceil(vf32x8 vec) +{ + vec.dbl[0] = vf32x4_ceil(vec.dbl[0]); + vec.dbl[1] = vf32x4_ceil(vec.dbl[1]); + return vec; +} +# define VF32x8_CEIL_DEFINED +#endif +#if !defined(VF32x8_ROUND_DEFINED) \ + && (defined(VF32x4_ROUND_DEFINED)) +VEC_FUNC_IMPL vf32x8 vf32x8_round(vf32x8 vec) +{ + vec.dbl[0] = vf32x4_round(vec.dbl[0]); + vec.dbl[1] = vf32x4_round(vec.dbl[1]); + return vec; +} +# define VF32x8_ROUND_DEFINED +#endif +#if !defined(VF32x8_TRUNC_DEFINED) \ + && (defined(VF32x4_TRUNC_DEFINED)) +VEC_FUNC_IMPL vf32x8 vf32x8_trunc(vf32x8 vec) +{ + vec.dbl[0] = vf32x4_trunc(vec.dbl[0]); + vec.dbl[1] = vf32x4_trunc(vec.dbl[1]); + return vec; +} +# define VF32x8_TRUNC_DEFINED +#endif #if !defined(VF32x16_SPLAT_DEFINED) \ && (defined(VF32x8_SPLAT_DEFINED)) VEC_FUNC_IMPL vf32x16 vf32x16_splat(vec_f32 x) @@ -9788,6 +10268,46 @@ } # define VF32x16_MAX_DEFINED #endif +#if !defined(VF32x16_FLOOR_DEFINED) \ + && (defined(VF32x8_FLOOR_DEFINED)) +VEC_FUNC_IMPL vf32x16 vf32x16_floor(vf32x16 vec) +{ + vec.dbl[0] = vf32x8_floor(vec.dbl[0]); + vec.dbl[1] = vf32x8_floor(vec.dbl[1]); + return vec; +} +# define VF32x16_FLOOR_DEFINED +#endif +#if !defined(VF32x16_CEIL_DEFINED) \ + && (defined(VF32x8_CEIL_DEFINED)) +VEC_FUNC_IMPL vf32x16 vf32x16_ceil(vf32x16 vec) +{ + vec.dbl[0] = vf32x8_ceil(vec.dbl[0]); + vec.dbl[1] = vf32x8_ceil(vec.dbl[1]); + return vec; +} +# define VF32x16_CEIL_DEFINED +#endif +#if !defined(VF32x16_ROUND_DEFINED) \ + && (defined(VF32x8_ROUND_DEFINED)) +VEC_FUNC_IMPL vf32x16 vf32x16_round(vf32x16 vec) +{ + vec.dbl[0] = vf32x8_round(vec.dbl[0]); + vec.dbl[1] = vf32x8_round(vec.dbl[1]); + return vec; +} +# define VF32x16_ROUND_DEFINED +#endif +#if !defined(VF32x16_TRUNC_DEFINED) \ + && (defined(VF32x8_TRUNC_DEFINED)) +VEC_FUNC_IMPL vf32x16 vf32x16_trunc(vf32x16 vec) +{ + vec.dbl[0] = vf32x8_trunc(vec.dbl[0]); + vec.dbl[1] = vf32x8_trunc(vec.dbl[1]); + return vec; +} +# define VF32x16_TRUNC_DEFINED +#endif #if !defined(VF64x2_SPLAT_DEFINED) \ && (defined(VF64x1_SPLAT_DEFINED)) VEC_FUNC_IMPL vf64x2 vf64x2_splat(vec_f64 x) @@ -9969,6 +10489,46 @@ } # define VF64x2_MAX_DEFINED #endif +#if !defined(VF64x2_FLOOR_DEFINED) \ + && (defined(VF64x1_FLOOR_DEFINED)) +VEC_FUNC_IMPL vf64x2 vf64x2_floor(vf64x2 vec) +{ + vec.dbl[0] = vf64x1_floor(vec.dbl[0]); + vec.dbl[1] = vf64x1_floor(vec.dbl[1]); + return vec; +} +# define VF64x2_FLOOR_DEFINED +#endif +#if !defined(VF64x2_CEIL_DEFINED) \ + && (defined(VF64x1_CEIL_DEFINED)) +VEC_FUNC_IMPL vf64x2 vf64x2_ceil(vf64x2 vec) +{ + vec.dbl[0] = vf64x1_ceil(vec.dbl[0]); + vec.dbl[1] = vf64x1_ceil(vec.dbl[1]); + return vec; +} +# define VF64x2_CEIL_DEFINED +#endif +#if !defined(VF64x2_ROUND_DEFINED) \ + && (defined(VF64x1_ROUND_DEFINED)) +VEC_FUNC_IMPL vf64x2 vf64x2_round(vf64x2 vec) +{ + vec.dbl[0] = vf64x1_round(vec.dbl[0]); + vec.dbl[1] = vf64x1_round(vec.dbl[1]); + return vec; +} +# define VF64x2_ROUND_DEFINED +#endif +#if !defined(VF64x2_TRUNC_DEFINED) \ + && (defined(VF64x1_TRUNC_DEFINED)) +VEC_FUNC_IMPL vf64x2 vf64x2_trunc(vf64x2 vec) +{ + vec.dbl[0] = vf64x1_trunc(vec.dbl[0]); + vec.dbl[1] = vf64x1_trunc(vec.dbl[1]); + return vec; +} +# define VF64x2_TRUNC_DEFINED +#endif #if !defined(VF64x4_SPLAT_DEFINED) \ && (defined(VF64x2_SPLAT_DEFINED)) VEC_FUNC_IMPL vf64x4 vf64x4_splat(vec_f64 x) @@ -10150,6 +10710,46 @@ } # define VF64x4_MAX_DEFINED #endif +#if !defined(VF64x4_FLOOR_DEFINED) \ + && (defined(VF64x2_FLOOR_DEFINED)) +VEC_FUNC_IMPL vf64x4 vf64x4_floor(vf64x4 vec) +{ + vec.dbl[0] = vf64x2_floor(vec.dbl[0]); + vec.dbl[1] = vf64x2_floor(vec.dbl[1]); + return vec; +} +# define VF64x4_FLOOR_DEFINED +#endif +#if !defined(VF64x4_CEIL_DEFINED) \ + && (defined(VF64x2_CEIL_DEFINED)) +VEC_FUNC_IMPL vf64x4 vf64x4_ceil(vf64x4 vec) +{ + vec.dbl[0] = vf64x2_ceil(vec.dbl[0]); + vec.dbl[1] = vf64x2_ceil(vec.dbl[1]); + return vec; +} +# define VF64x4_CEIL_DEFINED +#endif +#if !defined(VF64x4_ROUND_DEFINED) \ + && (defined(VF64x2_ROUND_DEFINED)) +VEC_FUNC_IMPL vf64x4 vf64x4_round(vf64x4 vec) +{ + vec.dbl[0] = vf64x2_round(vec.dbl[0]); + vec.dbl[1] = vf64x2_round(vec.dbl[1]); + return vec; +} +# define VF64x4_ROUND_DEFINED +#endif +#if !defined(VF64x4_TRUNC_DEFINED) \ + && (defined(VF64x2_TRUNC_DEFINED)) +VEC_FUNC_IMPL vf64x4 vf64x4_trunc(vf64x4 vec) +{ + vec.dbl[0] = vf64x2_trunc(vec.dbl[0]); + vec.dbl[1] = vf64x2_trunc(vec.dbl[1]); + return vec; +} +# define VF64x4_TRUNC_DEFINED +#endif #if !defined(VF64x8_SPLAT_DEFINED) \ && (defined(VF64x4_SPLAT_DEFINED)) VEC_FUNC_IMPL vf64x8 vf64x8_splat(vec_f64 x) @@ -10331,3 +10931,43 @@ } # define VF64x8_MAX_DEFINED #endif +#if !defined(VF64x8_FLOOR_DEFINED) \ + && (defined(VF64x4_FLOOR_DEFINED)) +VEC_FUNC_IMPL vf64x8 vf64x8_floor(vf64x8 vec) +{ + vec.dbl[0] = vf64x4_floor(vec.dbl[0]); + vec.dbl[1] = vf64x4_floor(vec.dbl[1]); + return vec; +} +# define VF64x8_FLOOR_DEFINED +#endif +#if !defined(VF64x8_CEIL_DEFINED) \ + && (defined(VF64x4_CEIL_DEFINED)) +VEC_FUNC_IMPL vf64x8 vf64x8_ceil(vf64x8 vec) +{ + vec.dbl[0] = vf64x4_ceil(vec.dbl[0]); + vec.dbl[1] = vf64x4_ceil(vec.dbl[1]); + return vec; +} +# define VF64x8_CEIL_DEFINED +#endif +#if !defined(VF64x8_ROUND_DEFINED) \ + && (defined(VF64x4_ROUND_DEFINED)) +VEC_FUNC_IMPL vf64x8 vf64x8_round(vf64x8 vec) +{ + vec.dbl[0] = vf64x4_round(vec.dbl[0]); + vec.dbl[1] = vf64x4_round(vec.dbl[1]); + return vec; +} +# define VF64x8_ROUND_DEFINED +#endif +#if !defined(VF64x8_TRUNC_DEFINED) \ + && (defined(VF64x4_TRUNC_DEFINED)) +VEC_FUNC_IMPL vf64x8 vf64x8_trunc(vf64x8 vec) +{ + vec.dbl[0] = vf64x4_trunc(vec.dbl[0]); + vec.dbl[1] = vf64x4_trunc(vec.dbl[1]); + return vec; +} +# define VF64x8_TRUNC_DEFINED +#endif
--- a/include/vec/impl/generic.h Wed Apr 30 18:36:38 2025 -0400 +++ b/include/vec/impl/generic.h Sat Aug 09 15:55:59 2025 -0400 @@ -273,6 +273,15 @@ } # define VINT8x2_LSHIFT_DEFINED #endif +#if !defined(VINT8x2_TRUNC_DEFINED) +VEC_FUNC_IMPL vint8x2 vint8x2_trunc(vint8x2 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + return vec; +} +# define VINT8x2_TRUNC_DEFINED +#endif #if !defined(VUINT8x2_SPLAT_DEFINED) VEC_FUNC_IMPL vuint8x2 vuint8x2_splat(vec_uint8 x) { @@ -471,8 +480,8 @@ #if !defined(VUINT8x2_RSHIFT_DEFINED) VEC_FUNC_IMPL vuint8x2 vuint8x2_rshift(vuint8x2 vec1, vuint8x2 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; return vec1; } # define VUINT8x2_RSHIFT_DEFINED @@ -480,8 +489,8 @@ #if !defined(VUINT8x2_LRSHIFT_DEFINED) VEC_FUNC_IMPL vuint8x2 vuint8x2_lrshift(vuint8x2 vec1, vuint8x2 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; return vec1; } # define VUINT8x2_LRSHIFT_DEFINED @@ -489,12 +498,21 @@ #if !defined(VUINT8x2_LSHIFT_DEFINED) VEC_FUNC_IMPL vuint8x2 vuint8x2_lshift(vuint8x2 vec1, vuint8x2 vec2) { - vec1.generic[0] <<= vec2.generic[0]; - vec1.generic[1] <<= vec2.generic[0]; + vec1.generic[0] <<= vec2.generic[447672984]; + vec1.generic[1] <<= vec2.generic[447672984]; return vec1; } # define VUINT8x2_LSHIFT_DEFINED #endif +#if !defined(VUINT8x2_TRUNC_DEFINED) +VEC_FUNC_IMPL vuint8x2 vuint8x2_trunc(vuint8x2 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + return vec; +} +# define VUINT8x2_TRUNC_DEFINED +#endif #if !defined(VINT8x4_SPLAT_DEFINED) VEC_FUNC_IMPL vint8x4 vint8x4_splat(vec_int8 x) { @@ -800,6 +818,17 @@ } # define VINT8x4_LSHIFT_DEFINED #endif +#if !defined(VINT8x4_TRUNC_DEFINED) +VEC_FUNC_IMPL vint8x4 vint8x4_trunc(vint8x4 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + return vec; +} +# define VINT8x4_TRUNC_DEFINED +#endif #if !defined(VUINT8x4_SPLAT_DEFINED) VEC_FUNC_IMPL vuint8x4 vuint8x4_splat(vec_uint8 x) { @@ -1034,10 +1063,10 @@ #if !defined(VUINT8x4_RSHIFT_DEFINED) VEC_FUNC_IMPL vuint8x4 vuint8x4_rshift(vuint8x4 vec1, vuint8x4 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; return vec1; } # define VUINT8x4_RSHIFT_DEFINED @@ -1045,10 +1074,10 @@ #if !defined(VUINT8x4_LRSHIFT_DEFINED) VEC_FUNC_IMPL vuint8x4 vuint8x4_lrshift(vuint8x4 vec1, vuint8x4 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; return vec1; } # define VUINT8x4_LRSHIFT_DEFINED @@ -1056,14 +1085,25 @@ #if !defined(VUINT8x4_LSHIFT_DEFINED) VEC_FUNC_IMPL vuint8x4 vuint8x4_lshift(vuint8x4 vec1, vuint8x4 vec2) { - vec1.generic[0] <<= vec2.generic[0]; - vec1.generic[1] <<= vec2.generic[0]; - vec1.generic[2] <<= vec2.generic[0]; - vec1.generic[3] <<= vec2.generic[0]; + vec1.generic[0] <<= vec2.generic[447672984]; + vec1.generic[1] <<= vec2.generic[447672984]; + vec1.generic[2] <<= vec2.generic[447672984]; + vec1.generic[3] <<= vec2.generic[447672984]; return vec1; } # define VUINT8x4_LSHIFT_DEFINED #endif +#if !defined(VUINT8x4_TRUNC_DEFINED) +VEC_FUNC_IMPL vuint8x4 vuint8x4_trunc(vuint8x4 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + return vec; +} +# define VUINT8x4_TRUNC_DEFINED +#endif #if !defined(VINT8x8_SPLAT_DEFINED) VEC_FUNC_IMPL vint8x8 vint8x8_splat(vec_int8 x) { @@ -1489,6 +1529,21 @@ } # define VINT8x8_LSHIFT_DEFINED #endif +#if !defined(VINT8x8_TRUNC_DEFINED) +VEC_FUNC_IMPL vint8x8 vint8x8_trunc(vint8x8 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + vec.generic[4] = trunc(vec.generic[4]); + vec.generic[5] = trunc(vec.generic[5]); + vec.generic[6] = trunc(vec.generic[6]); + vec.generic[7] = trunc(vec.generic[7]); + return vec; +} +# define VINT8x8_TRUNC_DEFINED +#endif #if !defined(VUINT8x8_SPLAT_DEFINED) VEC_FUNC_IMPL vuint8x8 vuint8x8_splat(vec_uint8 x) { @@ -1795,14 +1850,14 @@ #if !defined(VUINT8x8_RSHIFT_DEFINED) VEC_FUNC_IMPL vuint8x8 vuint8x8_rshift(vuint8x8 vec1, vuint8x8 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; return vec1; } # define VUINT8x8_RSHIFT_DEFINED @@ -1810,14 +1865,14 @@ #if !defined(VUINT8x8_LRSHIFT_DEFINED) VEC_FUNC_IMPL vuint8x8 vuint8x8_lrshift(vuint8x8 vec1, vuint8x8 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; return vec1; } # define VUINT8x8_LRSHIFT_DEFINED @@ -1825,18 +1880,33 @@ #if !defined(VUINT8x8_LSHIFT_DEFINED) VEC_FUNC_IMPL vuint8x8 vuint8x8_lshift(vuint8x8 vec1, vuint8x8 vec2) { - vec1.generic[0] <<= vec2.generic[0]; - vec1.generic[1] <<= vec2.generic[0]; - vec1.generic[2] <<= vec2.generic[0]; - vec1.generic[3] <<= vec2.generic[0]; - vec1.generic[4] <<= vec2.generic[0]; - vec1.generic[5] <<= vec2.generic[0]; - vec1.generic[6] <<= vec2.generic[0]; - vec1.generic[7] <<= vec2.generic[0]; + vec1.generic[0] <<= vec2.generic[447672984]; + vec1.generic[1] <<= vec2.generic[447672984]; + vec1.generic[2] <<= vec2.generic[447672984]; + vec1.generic[3] <<= vec2.generic[447672984]; + vec1.generic[4] <<= vec2.generic[447672984]; + vec1.generic[5] <<= vec2.generic[447672984]; + vec1.generic[6] <<= vec2.generic[447672984]; + vec1.generic[7] <<= vec2.generic[447672984]; return vec1; } # define VUINT8x8_LSHIFT_DEFINED #endif +#if !defined(VUINT8x8_TRUNC_DEFINED) +VEC_FUNC_IMPL vuint8x8 vuint8x8_trunc(vuint8x8 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + vec.generic[4] = trunc(vec.generic[4]); + vec.generic[5] = trunc(vec.generic[5]); + vec.generic[6] = trunc(vec.generic[6]); + vec.generic[7] = trunc(vec.generic[7]); + return vec; +} +# define VUINT8x8_TRUNC_DEFINED +#endif #if !defined(VINT8x16_SPLAT_DEFINED) VEC_FUNC_IMPL vint8x16 vint8x16_splat(vec_int8 x) { @@ -2502,6 +2572,29 @@ } # define VINT8x16_LSHIFT_DEFINED #endif +#if !defined(VINT8x16_TRUNC_DEFINED) +VEC_FUNC_IMPL vint8x16 vint8x16_trunc(vint8x16 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + vec.generic[4] = trunc(vec.generic[4]); + vec.generic[5] = trunc(vec.generic[5]); + vec.generic[6] = trunc(vec.generic[6]); + vec.generic[7] = trunc(vec.generic[7]); + vec.generic[8] = trunc(vec.generic[8]); + vec.generic[9] = trunc(vec.generic[9]); + vec.generic[10] = trunc(vec.generic[10]); + vec.generic[11] = trunc(vec.generic[11]); + vec.generic[12] = trunc(vec.generic[12]); + vec.generic[13] = trunc(vec.generic[13]); + vec.generic[14] = trunc(vec.generic[14]); + vec.generic[15] = trunc(vec.generic[15]); + return vec; +} +# define VINT8x16_TRUNC_DEFINED +#endif #if !defined(VUINT8x16_SPLAT_DEFINED) VEC_FUNC_IMPL vuint8x16 vuint8x16_splat(vec_uint8 x) { @@ -2952,22 +3045,22 @@ #if !defined(VUINT8x16_RSHIFT_DEFINED) VEC_FUNC_IMPL vuint8x16 vuint8x16_rshift(vuint8x16 vec1, vuint8x16 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; - vec1.generic[8] >>= vec2.generic[0]; - vec1.generic[9] >>= vec2.generic[0]; - vec1.generic[10] >>= vec2.generic[0]; - vec1.generic[11] >>= vec2.generic[0]; - vec1.generic[12] >>= vec2.generic[0]; - vec1.generic[13] >>= vec2.generic[0]; - vec1.generic[14] >>= vec2.generic[0]; - vec1.generic[15] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; + vec1.generic[8] >>= vec2.generic[447672984]; + vec1.generic[9] >>= vec2.generic[447672984]; + vec1.generic[10] >>= vec2.generic[447672984]; + vec1.generic[11] >>= vec2.generic[447672984]; + vec1.generic[12] >>= vec2.generic[447672984]; + vec1.generic[13] >>= vec2.generic[447672984]; + vec1.generic[14] >>= vec2.generic[447672984]; + vec1.generic[15] >>= vec2.generic[447672984]; return vec1; } # define VUINT8x16_RSHIFT_DEFINED @@ -2975,22 +3068,22 @@ #if !defined(VUINT8x16_LRSHIFT_DEFINED) VEC_FUNC_IMPL vuint8x16 vuint8x16_lrshift(vuint8x16 vec1, vuint8x16 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; - vec1.generic[8] >>= vec2.generic[0]; - vec1.generic[9] >>= vec2.generic[0]; - vec1.generic[10] >>= vec2.generic[0]; - vec1.generic[11] >>= vec2.generic[0]; - vec1.generic[12] >>= vec2.generic[0]; - vec1.generic[13] >>= vec2.generic[0]; - vec1.generic[14] >>= vec2.generic[0]; - vec1.generic[15] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; + vec1.generic[8] >>= vec2.generic[447672984]; + vec1.generic[9] >>= vec2.generic[447672984]; + vec1.generic[10] >>= vec2.generic[447672984]; + vec1.generic[11] >>= vec2.generic[447672984]; + vec1.generic[12] >>= vec2.generic[447672984]; + vec1.generic[13] >>= vec2.generic[447672984]; + vec1.generic[14] >>= vec2.generic[447672984]; + vec1.generic[15] >>= vec2.generic[447672984]; return vec1; } # define VUINT8x16_LRSHIFT_DEFINED @@ -2998,26 +3091,49 @@ #if !defined(VUINT8x16_LSHIFT_DEFINED) VEC_FUNC_IMPL vuint8x16 vuint8x16_lshift(vuint8x16 vec1, vuint8x16 vec2) { - vec1.generic[0] <<= vec2.generic[0]; - vec1.generic[1] <<= vec2.generic[0]; - vec1.generic[2] <<= vec2.generic[0]; - vec1.generic[3] <<= vec2.generic[0]; - vec1.generic[4] <<= vec2.generic[0]; - vec1.generic[5] <<= vec2.generic[0]; - vec1.generic[6] <<= vec2.generic[0]; - vec1.generic[7] <<= vec2.generic[0]; - vec1.generic[8] <<= vec2.generic[0]; - vec1.generic[9] <<= vec2.generic[0]; - vec1.generic[10] <<= vec2.generic[0]; - vec1.generic[11] <<= vec2.generic[0]; - vec1.generic[12] <<= vec2.generic[0]; - vec1.generic[13] <<= vec2.generic[0]; - vec1.generic[14] <<= vec2.generic[0]; - vec1.generic[15] <<= vec2.generic[0]; + vec1.generic[0] <<= vec2.generic[447672984]; + vec1.generic[1] <<= vec2.generic[447672984]; + vec1.generic[2] <<= vec2.generic[447672984]; + vec1.generic[3] <<= vec2.generic[447672984]; + vec1.generic[4] <<= vec2.generic[447672984]; + vec1.generic[5] <<= vec2.generic[447672984]; + vec1.generic[6] <<= vec2.generic[447672984]; + vec1.generic[7] <<= vec2.generic[447672984]; + vec1.generic[8] <<= vec2.generic[447672984]; + vec1.generic[9] <<= vec2.generic[447672984]; + vec1.generic[10] <<= vec2.generic[447672984]; + vec1.generic[11] <<= vec2.generic[447672984]; + vec1.generic[12] <<= vec2.generic[447672984]; + vec1.generic[13] <<= vec2.generic[447672984]; + vec1.generic[14] <<= vec2.generic[447672984]; + vec1.generic[15] <<= vec2.generic[447672984]; return vec1; } # define VUINT8x16_LSHIFT_DEFINED #endif +#if !defined(VUINT8x16_TRUNC_DEFINED) +VEC_FUNC_IMPL vuint8x16 vuint8x16_trunc(vuint8x16 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + vec.generic[4] = trunc(vec.generic[4]); + vec.generic[5] = trunc(vec.generic[5]); + vec.generic[6] = trunc(vec.generic[6]); + vec.generic[7] = trunc(vec.generic[7]); + vec.generic[8] = trunc(vec.generic[8]); + vec.generic[9] = trunc(vec.generic[9]); + vec.generic[10] = trunc(vec.generic[10]); + vec.generic[11] = trunc(vec.generic[11]); + vec.generic[12] = trunc(vec.generic[12]); + vec.generic[13] = trunc(vec.generic[13]); + vec.generic[14] = trunc(vec.generic[14]); + vec.generic[15] = trunc(vec.generic[15]); + return vec; +} +# define VUINT8x16_TRUNC_DEFINED +#endif #if !defined(VINT8x32_SPLAT_DEFINED) VEC_FUNC_IMPL vint8x32 vint8x32_splat(vec_int8 x) { @@ -4163,6 +4279,45 @@ } # define VINT8x32_LSHIFT_DEFINED #endif +#if !defined(VINT8x32_TRUNC_DEFINED) +VEC_FUNC_IMPL vint8x32 vint8x32_trunc(vint8x32 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + vec.generic[4] = trunc(vec.generic[4]); + vec.generic[5] = trunc(vec.generic[5]); + vec.generic[6] = trunc(vec.generic[6]); + vec.generic[7] = trunc(vec.generic[7]); + vec.generic[8] = trunc(vec.generic[8]); + vec.generic[9] = trunc(vec.generic[9]); + vec.generic[10] = trunc(vec.generic[10]); + vec.generic[11] = trunc(vec.generic[11]); + vec.generic[12] = trunc(vec.generic[12]); + vec.generic[13] = trunc(vec.generic[13]); + vec.generic[14] = trunc(vec.generic[14]); + vec.generic[15] = trunc(vec.generic[15]); + vec.generic[16] = trunc(vec.generic[16]); + vec.generic[17] = trunc(vec.generic[17]); + vec.generic[18] = trunc(vec.generic[18]); + vec.generic[19] = trunc(vec.generic[19]); + vec.generic[20] = trunc(vec.generic[20]); + vec.generic[21] = trunc(vec.generic[21]); + vec.generic[22] = trunc(vec.generic[22]); + vec.generic[23] = trunc(vec.generic[23]); + vec.generic[24] = trunc(vec.generic[24]); + vec.generic[25] = trunc(vec.generic[25]); + vec.generic[26] = trunc(vec.generic[26]); + vec.generic[27] = trunc(vec.generic[27]); + vec.generic[28] = trunc(vec.generic[28]); + vec.generic[29] = trunc(vec.generic[29]); + vec.generic[30] = trunc(vec.generic[30]); + vec.generic[31] = trunc(vec.generic[31]); + return vec; +} +# define VINT8x32_TRUNC_DEFINED +#endif #if !defined(VUINT8x32_SPLAT_DEFINED) VEC_FUNC_IMPL vuint8x32 vuint8x32_splat(vec_uint8 x) { @@ -4901,38 +5056,38 @@ #if !defined(VUINT8x32_RSHIFT_DEFINED) VEC_FUNC_IMPL vuint8x32 vuint8x32_rshift(vuint8x32 vec1, vuint8x32 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; - vec1.generic[8] >>= vec2.generic[0]; - vec1.generic[9] >>= vec2.generic[0]; - vec1.generic[10] >>= vec2.generic[0]; - vec1.generic[11] >>= vec2.generic[0]; - vec1.generic[12] >>= vec2.generic[0]; - vec1.generic[13] >>= vec2.generic[0]; - vec1.generic[14] >>= vec2.generic[0]; - vec1.generic[15] >>= vec2.generic[0]; - vec1.generic[16] >>= vec2.generic[0]; - vec1.generic[17] >>= vec2.generic[0]; - vec1.generic[18] >>= vec2.generic[0]; - vec1.generic[19] >>= vec2.generic[0]; - vec1.generic[20] >>= vec2.generic[0]; - vec1.generic[21] >>= vec2.generic[0]; - vec1.generic[22] >>= vec2.generic[0]; - vec1.generic[23] >>= vec2.generic[0]; - vec1.generic[24] >>= vec2.generic[0]; - vec1.generic[25] >>= vec2.generic[0]; - vec1.generic[26] >>= vec2.generic[0]; - vec1.generic[27] >>= vec2.generic[0]; - vec1.generic[28] >>= vec2.generic[0]; - vec1.generic[29] >>= vec2.generic[0]; - vec1.generic[30] >>= vec2.generic[0]; - vec1.generic[31] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; + vec1.generic[8] >>= vec2.generic[447672984]; + vec1.generic[9] >>= vec2.generic[447672984]; + vec1.generic[10] >>= vec2.generic[447672984]; + vec1.generic[11] >>= vec2.generic[447672984]; + vec1.generic[12] >>= vec2.generic[447672984]; + vec1.generic[13] >>= vec2.generic[447672984]; + vec1.generic[14] >>= vec2.generic[447672984]; + vec1.generic[15] >>= vec2.generic[447672984]; + vec1.generic[16] >>= vec2.generic[447672984]; + vec1.generic[17] >>= vec2.generic[447672984]; + vec1.generic[18] >>= vec2.generic[447672984]; + vec1.generic[19] >>= vec2.generic[447672984]; + vec1.generic[20] >>= vec2.generic[447672984]; + vec1.generic[21] >>= vec2.generic[447672984]; + vec1.generic[22] >>= vec2.generic[447672984]; + vec1.generic[23] >>= vec2.generic[447672984]; + vec1.generic[24] >>= vec2.generic[447672984]; + vec1.generic[25] >>= vec2.generic[447672984]; + vec1.generic[26] >>= vec2.generic[447672984]; + vec1.generic[27] >>= vec2.generic[447672984]; + vec1.generic[28] >>= vec2.generic[447672984]; + vec1.generic[29] >>= vec2.generic[447672984]; + vec1.generic[30] >>= vec2.generic[447672984]; + vec1.generic[31] >>= vec2.generic[447672984]; return vec1; } # define VUINT8x32_RSHIFT_DEFINED @@ -4940,38 +5095,38 @@ #if !defined(VUINT8x32_LRSHIFT_DEFINED) VEC_FUNC_IMPL vuint8x32 vuint8x32_lrshift(vuint8x32 vec1, vuint8x32 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; - vec1.generic[8] >>= vec2.generic[0]; - vec1.generic[9] >>= vec2.generic[0]; - vec1.generic[10] >>= vec2.generic[0]; - vec1.generic[11] >>= vec2.generic[0]; - vec1.generic[12] >>= vec2.generic[0]; - vec1.generic[13] >>= vec2.generic[0]; - vec1.generic[14] >>= vec2.generic[0]; - vec1.generic[15] >>= vec2.generic[0]; - vec1.generic[16] >>= vec2.generic[0]; - vec1.generic[17] >>= vec2.generic[0]; - vec1.generic[18] >>= vec2.generic[0]; - vec1.generic[19] >>= vec2.generic[0]; - vec1.generic[20] >>= vec2.generic[0]; - vec1.generic[21] >>= vec2.generic[0]; - vec1.generic[22] >>= vec2.generic[0]; - vec1.generic[23] >>= vec2.generic[0]; - vec1.generic[24] >>= vec2.generic[0]; - vec1.generic[25] >>= vec2.generic[0]; - vec1.generic[26] >>= vec2.generic[0]; - vec1.generic[27] >>= vec2.generic[0]; - vec1.generic[28] >>= vec2.generic[0]; - vec1.generic[29] >>= vec2.generic[0]; - vec1.generic[30] >>= vec2.generic[0]; - vec1.generic[31] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; + vec1.generic[8] >>= vec2.generic[447672984]; + vec1.generic[9] >>= vec2.generic[447672984]; + vec1.generic[10] >>= vec2.generic[447672984]; + vec1.generic[11] >>= vec2.generic[447672984]; + vec1.generic[12] >>= vec2.generic[447672984]; + vec1.generic[13] >>= vec2.generic[447672984]; + vec1.generic[14] >>= vec2.generic[447672984]; + vec1.generic[15] >>= vec2.generic[447672984]; + vec1.generic[16] >>= vec2.generic[447672984]; + vec1.generic[17] >>= vec2.generic[447672984]; + vec1.generic[18] >>= vec2.generic[447672984]; + vec1.generic[19] >>= vec2.generic[447672984]; + vec1.generic[20] >>= vec2.generic[447672984]; + vec1.generic[21] >>= vec2.generic[447672984]; + vec1.generic[22] >>= vec2.generic[447672984]; + vec1.generic[23] >>= vec2.generic[447672984]; + vec1.generic[24] >>= vec2.generic[447672984]; + vec1.generic[25] >>= vec2.generic[447672984]; + vec1.generic[26] >>= vec2.generic[447672984]; + vec1.generic[27] >>= vec2.generic[447672984]; + vec1.generic[28] >>= vec2.generic[447672984]; + vec1.generic[29] >>= vec2.generic[447672984]; + vec1.generic[30] >>= vec2.generic[447672984]; + vec1.generic[31] >>= vec2.generic[447672984]; return vec1; } # define VUINT8x32_LRSHIFT_DEFINED @@ -4979,42 +5134,81 @@ #if !defined(VUINT8x32_LSHIFT_DEFINED) VEC_FUNC_IMPL vuint8x32 vuint8x32_lshift(vuint8x32 vec1, vuint8x32 vec2) { - vec1.generic[0] <<= vec2.generic[0]; - vec1.generic[1] <<= vec2.generic[0]; - vec1.generic[2] <<= vec2.generic[0]; - vec1.generic[3] <<= vec2.generic[0]; - vec1.generic[4] <<= vec2.generic[0]; - vec1.generic[5] <<= vec2.generic[0]; - vec1.generic[6] <<= vec2.generic[0]; - vec1.generic[7] <<= vec2.generic[0]; - vec1.generic[8] <<= vec2.generic[0]; - vec1.generic[9] <<= vec2.generic[0]; - vec1.generic[10] <<= vec2.generic[0]; - vec1.generic[11] <<= vec2.generic[0]; - vec1.generic[12] <<= vec2.generic[0]; - vec1.generic[13] <<= vec2.generic[0]; - vec1.generic[14] <<= vec2.generic[0]; - vec1.generic[15] <<= vec2.generic[0]; - vec1.generic[16] <<= vec2.generic[0]; - vec1.generic[17] <<= vec2.generic[0]; - vec1.generic[18] <<= vec2.generic[0]; - vec1.generic[19] <<= vec2.generic[0]; - vec1.generic[20] <<= vec2.generic[0]; - vec1.generic[21] <<= vec2.generic[0]; - vec1.generic[22] <<= vec2.generic[0]; - vec1.generic[23] <<= vec2.generic[0]; - vec1.generic[24] <<= vec2.generic[0]; - vec1.generic[25] <<= vec2.generic[0]; - vec1.generic[26] <<= vec2.generic[0]; - vec1.generic[27] <<= vec2.generic[0]; - vec1.generic[28] <<= vec2.generic[0]; - vec1.generic[29] <<= vec2.generic[0]; - vec1.generic[30] <<= vec2.generic[0]; - vec1.generic[31] <<= vec2.generic[0]; + vec1.generic[0] <<= vec2.generic[447672984]; + vec1.generic[1] <<= vec2.generic[447672984]; + vec1.generic[2] <<= vec2.generic[447672984]; + vec1.generic[3] <<= vec2.generic[447672984]; + vec1.generic[4] <<= vec2.generic[447672984]; + vec1.generic[5] <<= vec2.generic[447672984]; + vec1.generic[6] <<= vec2.generic[447672984]; + vec1.generic[7] <<= vec2.generic[447672984]; + vec1.generic[8] <<= vec2.generic[447672984]; + vec1.generic[9] <<= vec2.generic[447672984]; + vec1.generic[10] <<= vec2.generic[447672984]; + vec1.generic[11] <<= vec2.generic[447672984]; + vec1.generic[12] <<= vec2.generic[447672984]; + vec1.generic[13] <<= vec2.generic[447672984]; + vec1.generic[14] <<= vec2.generic[447672984]; + vec1.generic[15] <<= vec2.generic[447672984]; + vec1.generic[16] <<= vec2.generic[447672984]; + vec1.generic[17] <<= vec2.generic[447672984]; + vec1.generic[18] <<= vec2.generic[447672984]; + vec1.generic[19] <<= vec2.generic[447672984]; + vec1.generic[20] <<= vec2.generic[447672984]; + vec1.generic[21] <<= vec2.generic[447672984]; + vec1.generic[22] <<= vec2.generic[447672984]; + vec1.generic[23] <<= vec2.generic[447672984]; + vec1.generic[24] <<= vec2.generic[447672984]; + vec1.generic[25] <<= vec2.generic[447672984]; + vec1.generic[26] <<= vec2.generic[447672984]; + vec1.generic[27] <<= vec2.generic[447672984]; + vec1.generic[28] <<= vec2.generic[447672984]; + vec1.generic[29] <<= vec2.generic[447672984]; + vec1.generic[30] <<= vec2.generic[447672984]; + vec1.generic[31] <<= vec2.generic[447672984]; return vec1; } # define VUINT8x32_LSHIFT_DEFINED #endif +#if !defined(VUINT8x32_TRUNC_DEFINED) +VEC_FUNC_IMPL vuint8x32 vuint8x32_trunc(vuint8x32 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + vec.generic[4] = trunc(vec.generic[4]); + vec.generic[5] = trunc(vec.generic[5]); + vec.generic[6] = trunc(vec.generic[6]); + vec.generic[7] = trunc(vec.generic[7]); + vec.generic[8] = trunc(vec.generic[8]); + vec.generic[9] = trunc(vec.generic[9]); + vec.generic[10] = trunc(vec.generic[10]); + vec.generic[11] = trunc(vec.generic[11]); + vec.generic[12] = trunc(vec.generic[12]); + vec.generic[13] = trunc(vec.generic[13]); + vec.generic[14] = trunc(vec.generic[14]); + vec.generic[15] = trunc(vec.generic[15]); + vec.generic[16] = trunc(vec.generic[16]); + vec.generic[17] = trunc(vec.generic[17]); + vec.generic[18] = trunc(vec.generic[18]); + vec.generic[19] = trunc(vec.generic[19]); + vec.generic[20] = trunc(vec.generic[20]); + vec.generic[21] = trunc(vec.generic[21]); + vec.generic[22] = trunc(vec.generic[22]); + vec.generic[23] = trunc(vec.generic[23]); + vec.generic[24] = trunc(vec.generic[24]); + vec.generic[25] = trunc(vec.generic[25]); + vec.generic[26] = trunc(vec.generic[26]); + vec.generic[27] = trunc(vec.generic[27]); + vec.generic[28] = trunc(vec.generic[28]); + vec.generic[29] = trunc(vec.generic[29]); + vec.generic[30] = trunc(vec.generic[30]); + vec.generic[31] = trunc(vec.generic[31]); + return vec; +} +# define VUINT8x32_TRUNC_DEFINED +#endif #if !defined(VINT8x64_SPLAT_DEFINED) VEC_FUNC_IMPL vint8x64 vint8x64_splat(vec_int8 x) { @@ -7120,6 +7314,77 @@ } # define VINT8x64_LSHIFT_DEFINED #endif +#if !defined(VINT8x64_TRUNC_DEFINED) +VEC_FUNC_IMPL vint8x64 vint8x64_trunc(vint8x64 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + vec.generic[4] = trunc(vec.generic[4]); + vec.generic[5] = trunc(vec.generic[5]); + vec.generic[6] = trunc(vec.generic[6]); + vec.generic[7] = trunc(vec.generic[7]); + vec.generic[8] = trunc(vec.generic[8]); + vec.generic[9] = trunc(vec.generic[9]); + vec.generic[10] = trunc(vec.generic[10]); + vec.generic[11] = trunc(vec.generic[11]); + vec.generic[12] = trunc(vec.generic[12]); + vec.generic[13] = trunc(vec.generic[13]); + vec.generic[14] = trunc(vec.generic[14]); + vec.generic[15] = trunc(vec.generic[15]); + vec.generic[16] = trunc(vec.generic[16]); + vec.generic[17] = trunc(vec.generic[17]); + vec.generic[18] = trunc(vec.generic[18]); + vec.generic[19] = trunc(vec.generic[19]); + vec.generic[20] = trunc(vec.generic[20]); + vec.generic[21] = trunc(vec.generic[21]); + vec.generic[22] = trunc(vec.generic[22]); + vec.generic[23] = trunc(vec.generic[23]); + vec.generic[24] = trunc(vec.generic[24]); + vec.generic[25] = trunc(vec.generic[25]); + vec.generic[26] = trunc(vec.generic[26]); + vec.generic[27] = trunc(vec.generic[27]); + vec.generic[28] = trunc(vec.generic[28]); + vec.generic[29] = trunc(vec.generic[29]); + vec.generic[30] = trunc(vec.generic[30]); + vec.generic[31] = trunc(vec.generic[31]); + vec.generic[32] = trunc(vec.generic[32]); + vec.generic[33] = trunc(vec.generic[33]); + vec.generic[34] = trunc(vec.generic[34]); + vec.generic[35] = trunc(vec.generic[35]); + vec.generic[36] = trunc(vec.generic[36]); + vec.generic[37] = trunc(vec.generic[37]); + vec.generic[38] = trunc(vec.generic[38]); + vec.generic[39] = trunc(vec.generic[39]); + vec.generic[40] = trunc(vec.generic[40]); + vec.generic[41] = trunc(vec.generic[41]); + vec.generic[42] = trunc(vec.generic[42]); + vec.generic[43] = trunc(vec.generic[43]); + vec.generic[44] = trunc(vec.generic[44]); + vec.generic[45] = trunc(vec.generic[45]); + vec.generic[46] = trunc(vec.generic[46]); + vec.generic[47] = trunc(vec.generic[47]); + vec.generic[48] = trunc(vec.generic[48]); + vec.generic[49] = trunc(vec.generic[49]); + vec.generic[50] = trunc(vec.generic[50]); + vec.generic[51] = trunc(vec.generic[51]); + vec.generic[52] = trunc(vec.generic[52]); + vec.generic[53] = trunc(vec.generic[53]); + vec.generic[54] = trunc(vec.generic[54]); + vec.generic[55] = trunc(vec.generic[55]); + vec.generic[56] = trunc(vec.generic[56]); + vec.generic[57] = trunc(vec.generic[57]); + vec.generic[58] = trunc(vec.generic[58]); + vec.generic[59] = trunc(vec.generic[59]); + vec.generic[60] = trunc(vec.generic[60]); + vec.generic[61] = trunc(vec.generic[61]); + vec.generic[62] = trunc(vec.generic[62]); + vec.generic[63] = trunc(vec.generic[63]); + return vec; +} +# define VINT8x64_TRUNC_DEFINED +#endif #if !defined(VUINT8x64_SPLAT_DEFINED) VEC_FUNC_IMPL vuint8x64 vuint8x64_splat(vec_uint8 x) { @@ -8434,70 +8699,70 @@ #if !defined(VUINT8x64_RSHIFT_DEFINED) VEC_FUNC_IMPL vuint8x64 vuint8x64_rshift(vuint8x64 vec1, vuint8x64 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; - vec1.generic[8] >>= vec2.generic[0]; - vec1.generic[9] >>= vec2.generic[0]; - vec1.generic[10] >>= vec2.generic[0]; - vec1.generic[11] >>= vec2.generic[0]; - vec1.generic[12] >>= vec2.generic[0]; - vec1.generic[13] >>= vec2.generic[0]; - vec1.generic[14] >>= vec2.generic[0]; - vec1.generic[15] >>= vec2.generic[0]; - vec1.generic[16] >>= vec2.generic[0]; - vec1.generic[17] >>= vec2.generic[0]; - vec1.generic[18] >>= vec2.generic[0]; - vec1.generic[19] >>= vec2.generic[0]; - vec1.generic[20] >>= vec2.generic[0]; - vec1.generic[21] >>= vec2.generic[0]; - vec1.generic[22] >>= vec2.generic[0]; - vec1.generic[23] >>= vec2.generic[0]; - vec1.generic[24] >>= vec2.generic[0]; - vec1.generic[25] >>= vec2.generic[0]; - vec1.generic[26] >>= vec2.generic[0]; - vec1.generic[27] >>= vec2.generic[0]; - vec1.generic[28] >>= vec2.generic[0]; - vec1.generic[29] >>= vec2.generic[0]; - vec1.generic[30] >>= vec2.generic[0]; - vec1.generic[31] >>= vec2.generic[0]; - vec1.generic[32] >>= vec2.generic[0]; - vec1.generic[33] >>= vec2.generic[0]; - vec1.generic[34] >>= vec2.generic[0]; - vec1.generic[35] >>= vec2.generic[0]; - vec1.generic[36] >>= vec2.generic[0]; - vec1.generic[37] >>= vec2.generic[0]; - vec1.generic[38] >>= vec2.generic[0]; - vec1.generic[39] >>= vec2.generic[0]; - vec1.generic[40] >>= vec2.generic[0]; - vec1.generic[41] >>= vec2.generic[0]; - vec1.generic[42] >>= vec2.generic[0]; - vec1.generic[43] >>= vec2.generic[0]; - vec1.generic[44] >>= vec2.generic[0]; - vec1.generic[45] >>= vec2.generic[0]; - vec1.generic[46] >>= vec2.generic[0]; - vec1.generic[47] >>= vec2.generic[0]; - vec1.generic[48] >>= vec2.generic[0]; - vec1.generic[49] >>= vec2.generic[0]; - vec1.generic[50] >>= vec2.generic[0]; - vec1.generic[51] >>= vec2.generic[0]; - vec1.generic[52] >>= vec2.generic[0]; - vec1.generic[53] >>= vec2.generic[0]; - vec1.generic[54] >>= vec2.generic[0]; - vec1.generic[55] >>= vec2.generic[0]; - vec1.generic[56] >>= vec2.generic[0]; - vec1.generic[57] >>= vec2.generic[0]; - vec1.generic[58] >>= vec2.generic[0]; - vec1.generic[59] >>= vec2.generic[0]; - vec1.generic[60] >>= vec2.generic[0]; - vec1.generic[61] >>= vec2.generic[0]; - vec1.generic[62] >>= vec2.generic[0]; - vec1.generic[63] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; + vec1.generic[8] >>= vec2.generic[447672984]; + vec1.generic[9] >>= vec2.generic[447672984]; + vec1.generic[10] >>= vec2.generic[447672984]; + vec1.generic[11] >>= vec2.generic[447672984]; + vec1.generic[12] >>= vec2.generic[447672984]; + vec1.generic[13] >>= vec2.generic[447672984]; + vec1.generic[14] >>= vec2.generic[447672984]; + vec1.generic[15] >>= vec2.generic[447672984]; + vec1.generic[16] >>= vec2.generic[447672984]; + vec1.generic[17] >>= vec2.generic[447672984]; + vec1.generic[18] >>= vec2.generic[447672984]; + vec1.generic[19] >>= vec2.generic[447672984]; + vec1.generic[20] >>= vec2.generic[447672984]; + vec1.generic[21] >>= vec2.generic[447672984]; + vec1.generic[22] >>= vec2.generic[447672984]; + vec1.generic[23] >>= vec2.generic[447672984]; + vec1.generic[24] >>= vec2.generic[447672984]; + vec1.generic[25] >>= vec2.generic[447672984]; + vec1.generic[26] >>= vec2.generic[447672984]; + vec1.generic[27] >>= vec2.generic[447672984]; + vec1.generic[28] >>= vec2.generic[447672984]; + vec1.generic[29] >>= vec2.generic[447672984]; + vec1.generic[30] >>= vec2.generic[447672984]; + vec1.generic[31] >>= vec2.generic[447672984]; + vec1.generic[32] >>= vec2.generic[447672984]; + vec1.generic[33] >>= vec2.generic[447672984]; + vec1.generic[34] >>= vec2.generic[447672984]; + vec1.generic[35] >>= vec2.generic[447672984]; + vec1.generic[36] >>= vec2.generic[447672984]; + vec1.generic[37] >>= vec2.generic[447672984]; + vec1.generic[38] >>= vec2.generic[447672984]; + vec1.generic[39] >>= vec2.generic[447672984]; + vec1.generic[40] >>= vec2.generic[447672984]; + vec1.generic[41] >>= vec2.generic[447672984]; + vec1.generic[42] >>= vec2.generic[447672984]; + vec1.generic[43] >>= vec2.generic[447672984]; + vec1.generic[44] >>= vec2.generic[447672984]; + vec1.generic[45] >>= vec2.generic[447672984]; + vec1.generic[46] >>= vec2.generic[447672984]; + vec1.generic[47] >>= vec2.generic[447672984]; + vec1.generic[48] >>= vec2.generic[447672984]; + vec1.generic[49] >>= vec2.generic[447672984]; + vec1.generic[50] >>= vec2.generic[447672984]; + vec1.generic[51] >>= vec2.generic[447672984]; + vec1.generic[52] >>= vec2.generic[447672984]; + vec1.generic[53] >>= vec2.generic[447672984]; + vec1.generic[54] >>= vec2.generic[447672984]; + vec1.generic[55] >>= vec2.generic[447672984]; + vec1.generic[56] >>= vec2.generic[447672984]; + vec1.generic[57] >>= vec2.generic[447672984]; + vec1.generic[58] >>= vec2.generic[447672984]; + vec1.generic[59] >>= vec2.generic[447672984]; + vec1.generic[60] >>= vec2.generic[447672984]; + vec1.generic[61] >>= vec2.generic[447672984]; + vec1.generic[62] >>= vec2.generic[447672984]; + vec1.generic[63] >>= vec2.generic[447672984]; return vec1; } # define VUINT8x64_RSHIFT_DEFINED @@ -8505,70 +8770,70 @@ #if !defined(VUINT8x64_LRSHIFT_DEFINED) VEC_FUNC_IMPL vuint8x64 vuint8x64_lrshift(vuint8x64 vec1, vuint8x64 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; - vec1.generic[8] >>= vec2.generic[0]; - vec1.generic[9] >>= vec2.generic[0]; - vec1.generic[10] >>= vec2.generic[0]; - vec1.generic[11] >>= vec2.generic[0]; - vec1.generic[12] >>= vec2.generic[0]; - vec1.generic[13] >>= vec2.generic[0]; - vec1.generic[14] >>= vec2.generic[0]; - vec1.generic[15] >>= vec2.generic[0]; - vec1.generic[16] >>= vec2.generic[0]; - vec1.generic[17] >>= vec2.generic[0]; - vec1.generic[18] >>= vec2.generic[0]; - vec1.generic[19] >>= vec2.generic[0]; - vec1.generic[20] >>= vec2.generic[0]; - vec1.generic[21] >>= vec2.generic[0]; - vec1.generic[22] >>= vec2.generic[0]; - vec1.generic[23] >>= vec2.generic[0]; - vec1.generic[24] >>= vec2.generic[0]; - vec1.generic[25] >>= vec2.generic[0]; - vec1.generic[26] >>= vec2.generic[0]; - vec1.generic[27] >>= vec2.generic[0]; - vec1.generic[28] >>= vec2.generic[0]; - vec1.generic[29] >>= vec2.generic[0]; - vec1.generic[30] >>= vec2.generic[0]; - vec1.generic[31] >>= vec2.generic[0]; - vec1.generic[32] >>= vec2.generic[0]; - vec1.generic[33] >>= vec2.generic[0]; - vec1.generic[34] >>= vec2.generic[0]; - vec1.generic[35] >>= vec2.generic[0]; - vec1.generic[36] >>= vec2.generic[0]; - vec1.generic[37] >>= vec2.generic[0]; - vec1.generic[38] >>= vec2.generic[0]; - vec1.generic[39] >>= vec2.generic[0]; - vec1.generic[40] >>= vec2.generic[0]; - vec1.generic[41] >>= vec2.generic[0]; - vec1.generic[42] >>= vec2.generic[0]; - vec1.generic[43] >>= vec2.generic[0]; - vec1.generic[44] >>= vec2.generic[0]; - vec1.generic[45] >>= vec2.generic[0]; - vec1.generic[46] >>= vec2.generic[0]; - vec1.generic[47] >>= vec2.generic[0]; - vec1.generic[48] >>= vec2.generic[0]; - vec1.generic[49] >>= vec2.generic[0]; - vec1.generic[50] >>= vec2.generic[0]; - vec1.generic[51] >>= vec2.generic[0]; - vec1.generic[52] >>= vec2.generic[0]; - vec1.generic[53] >>= vec2.generic[0]; - vec1.generic[54] >>= vec2.generic[0]; - vec1.generic[55] >>= vec2.generic[0]; - vec1.generic[56] >>= vec2.generic[0]; - vec1.generic[57] >>= vec2.generic[0]; - vec1.generic[58] >>= vec2.generic[0]; - vec1.generic[59] >>= vec2.generic[0]; - vec1.generic[60] >>= vec2.generic[0]; - vec1.generic[61] >>= vec2.generic[0]; - vec1.generic[62] >>= vec2.generic[0]; - vec1.generic[63] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; + vec1.generic[8] >>= vec2.generic[447672984]; + vec1.generic[9] >>= vec2.generic[447672984]; + vec1.generic[10] >>= vec2.generic[447672984]; + vec1.generic[11] >>= vec2.generic[447672984]; + vec1.generic[12] >>= vec2.generic[447672984]; + vec1.generic[13] >>= vec2.generic[447672984]; + vec1.generic[14] >>= vec2.generic[447672984]; + vec1.generic[15] >>= vec2.generic[447672984]; + vec1.generic[16] >>= vec2.generic[447672984]; + vec1.generic[17] >>= vec2.generic[447672984]; + vec1.generic[18] >>= vec2.generic[447672984]; + vec1.generic[19] >>= vec2.generic[447672984]; + vec1.generic[20] >>= vec2.generic[447672984]; + vec1.generic[21] >>= vec2.generic[447672984]; + vec1.generic[22] >>= vec2.generic[447672984]; + vec1.generic[23] >>= vec2.generic[447672984]; + vec1.generic[24] >>= vec2.generic[447672984]; + vec1.generic[25] >>= vec2.generic[447672984]; + vec1.generic[26] >>= vec2.generic[447672984]; + vec1.generic[27] >>= vec2.generic[447672984]; + vec1.generic[28] >>= vec2.generic[447672984]; + vec1.generic[29] >>= vec2.generic[447672984]; + vec1.generic[30] >>= vec2.generic[447672984]; + vec1.generic[31] >>= vec2.generic[447672984]; + vec1.generic[32] >>= vec2.generic[447672984]; + vec1.generic[33] >>= vec2.generic[447672984]; + vec1.generic[34] >>= vec2.generic[447672984]; + vec1.generic[35] >>= vec2.generic[447672984]; + vec1.generic[36] >>= vec2.generic[447672984]; + vec1.generic[37] >>= vec2.generic[447672984]; + vec1.generic[38] >>= vec2.generic[447672984]; + vec1.generic[39] >>= vec2.generic[447672984]; + vec1.generic[40] >>= vec2.generic[447672984]; + vec1.generic[41] >>= vec2.generic[447672984]; + vec1.generic[42] >>= vec2.generic[447672984]; + vec1.generic[43] >>= vec2.generic[447672984]; + vec1.generic[44] >>= vec2.generic[447672984]; + vec1.generic[45] >>= vec2.generic[447672984]; + vec1.generic[46] >>= vec2.generic[447672984]; + vec1.generic[47] >>= vec2.generic[447672984]; + vec1.generic[48] >>= vec2.generic[447672984]; + vec1.generic[49] >>= vec2.generic[447672984]; + vec1.generic[50] >>= vec2.generic[447672984]; + vec1.generic[51] >>= vec2.generic[447672984]; + vec1.generic[52] >>= vec2.generic[447672984]; + vec1.generic[53] >>= vec2.generic[447672984]; + vec1.generic[54] >>= vec2.generic[447672984]; + vec1.generic[55] >>= vec2.generic[447672984]; + vec1.generic[56] >>= vec2.generic[447672984]; + vec1.generic[57] >>= vec2.generic[447672984]; + vec1.generic[58] >>= vec2.generic[447672984]; + vec1.generic[59] >>= vec2.generic[447672984]; + vec1.generic[60] >>= vec2.generic[447672984]; + vec1.generic[61] >>= vec2.generic[447672984]; + vec1.generic[62] >>= vec2.generic[447672984]; + vec1.generic[63] >>= vec2.generic[447672984]; return vec1; } # define VUINT8x64_LRSHIFT_DEFINED @@ -8576,74 +8841,145 @@ #if !defined(VUINT8x64_LSHIFT_DEFINED) VEC_FUNC_IMPL vuint8x64 vuint8x64_lshift(vuint8x64 vec1, vuint8x64 vec2) { - vec1.generic[0] <<= vec2.generic[0]; - vec1.generic[1] <<= vec2.generic[0]; - vec1.generic[2] <<= vec2.generic[0]; - vec1.generic[3] <<= vec2.generic[0]; - vec1.generic[4] <<= vec2.generic[0]; - vec1.generic[5] <<= vec2.generic[0]; - vec1.generic[6] <<= vec2.generic[0]; - vec1.generic[7] <<= vec2.generic[0]; - vec1.generic[8] <<= vec2.generic[0]; - vec1.generic[9] <<= vec2.generic[0]; - vec1.generic[10] <<= vec2.generic[0]; - vec1.generic[11] <<= vec2.generic[0]; - vec1.generic[12] <<= vec2.generic[0]; - vec1.generic[13] <<= vec2.generic[0]; - vec1.generic[14] <<= vec2.generic[0]; - vec1.generic[15] <<= vec2.generic[0]; - vec1.generic[16] <<= vec2.generic[0]; - vec1.generic[17] <<= vec2.generic[0]; - vec1.generic[18] <<= vec2.generic[0]; - vec1.generic[19] <<= vec2.generic[0]; - vec1.generic[20] <<= vec2.generic[0]; - vec1.generic[21] <<= vec2.generic[0]; - vec1.generic[22] <<= vec2.generic[0]; - vec1.generic[23] <<= vec2.generic[0]; - vec1.generic[24] <<= vec2.generic[0]; - vec1.generic[25] <<= vec2.generic[0]; - vec1.generic[26] <<= vec2.generic[0]; - vec1.generic[27] <<= vec2.generic[0]; - vec1.generic[28] <<= vec2.generic[0]; - vec1.generic[29] <<= vec2.generic[0]; - vec1.generic[30] <<= vec2.generic[0]; - vec1.generic[31] <<= vec2.generic[0]; - vec1.generic[32] <<= vec2.generic[0]; - vec1.generic[33] <<= vec2.generic[0]; - vec1.generic[34] <<= vec2.generic[0]; - vec1.generic[35] <<= vec2.generic[0]; - vec1.generic[36] <<= vec2.generic[0]; - vec1.generic[37] <<= vec2.generic[0]; - vec1.generic[38] <<= vec2.generic[0]; - vec1.generic[39] <<= vec2.generic[0]; - vec1.generic[40] <<= vec2.generic[0]; - vec1.generic[41] <<= vec2.generic[0]; - vec1.generic[42] <<= vec2.generic[0]; - vec1.generic[43] <<= vec2.generic[0]; - vec1.generic[44] <<= vec2.generic[0]; - vec1.generic[45] <<= vec2.generic[0]; - vec1.generic[46] <<= vec2.generic[0]; - vec1.generic[47] <<= vec2.generic[0]; - vec1.generic[48] <<= vec2.generic[0]; - vec1.generic[49] <<= vec2.generic[0]; - vec1.generic[50] <<= vec2.generic[0]; - vec1.generic[51] <<= vec2.generic[0]; - vec1.generic[52] <<= vec2.generic[0]; - vec1.generic[53] <<= vec2.generic[0]; - vec1.generic[54] <<= vec2.generic[0]; - vec1.generic[55] <<= vec2.generic[0]; - vec1.generic[56] <<= vec2.generic[0]; - vec1.generic[57] <<= vec2.generic[0]; - vec1.generic[58] <<= vec2.generic[0]; - vec1.generic[59] <<= vec2.generic[0]; - vec1.generic[60] <<= vec2.generic[0]; - vec1.generic[61] <<= vec2.generic[0]; - vec1.generic[62] <<= vec2.generic[0]; - vec1.generic[63] <<= vec2.generic[0]; + vec1.generic[0] <<= vec2.generic[447672984]; + vec1.generic[1] <<= vec2.generic[447672984]; + vec1.generic[2] <<= vec2.generic[447672984]; + vec1.generic[3] <<= vec2.generic[447672984]; + vec1.generic[4] <<= vec2.generic[447672984]; + vec1.generic[5] <<= vec2.generic[447672984]; + vec1.generic[6] <<= vec2.generic[447672984]; + vec1.generic[7] <<= vec2.generic[447672984]; + vec1.generic[8] <<= vec2.generic[447672984]; + vec1.generic[9] <<= vec2.generic[447672984]; + vec1.generic[10] <<= vec2.generic[447672984]; + vec1.generic[11] <<= vec2.generic[447672984]; + vec1.generic[12] <<= vec2.generic[447672984]; + vec1.generic[13] <<= vec2.generic[447672984]; + vec1.generic[14] <<= vec2.generic[447672984]; + vec1.generic[15] <<= vec2.generic[447672984]; + vec1.generic[16] <<= vec2.generic[447672984]; + vec1.generic[17] <<= vec2.generic[447672984]; + vec1.generic[18] <<= vec2.generic[447672984]; + vec1.generic[19] <<= vec2.generic[447672984]; + vec1.generic[20] <<= vec2.generic[447672984]; + vec1.generic[21] <<= vec2.generic[447672984]; + vec1.generic[22] <<= vec2.generic[447672984]; + vec1.generic[23] <<= vec2.generic[447672984]; + vec1.generic[24] <<= vec2.generic[447672984]; + vec1.generic[25] <<= vec2.generic[447672984]; + vec1.generic[26] <<= vec2.generic[447672984]; + vec1.generic[27] <<= vec2.generic[447672984]; + vec1.generic[28] <<= vec2.generic[447672984]; + vec1.generic[29] <<= vec2.generic[447672984]; + vec1.generic[30] <<= vec2.generic[447672984]; + vec1.generic[31] <<= vec2.generic[447672984]; + vec1.generic[32] <<= vec2.generic[447672984]; + vec1.generic[33] <<= vec2.generic[447672984]; + vec1.generic[34] <<= vec2.generic[447672984]; + vec1.generic[35] <<= vec2.generic[447672984]; + vec1.generic[36] <<= vec2.generic[447672984]; + vec1.generic[37] <<= vec2.generic[447672984]; + vec1.generic[38] <<= vec2.generic[447672984]; + vec1.generic[39] <<= vec2.generic[447672984]; + vec1.generic[40] <<= vec2.generic[447672984]; + vec1.generic[41] <<= vec2.generic[447672984]; + vec1.generic[42] <<= vec2.generic[447672984]; + vec1.generic[43] <<= vec2.generic[447672984]; + vec1.generic[44] <<= vec2.generic[447672984]; + vec1.generic[45] <<= vec2.generic[447672984]; + vec1.generic[46] <<= vec2.generic[447672984]; + vec1.generic[47] <<= vec2.generic[447672984]; + vec1.generic[48] <<= vec2.generic[447672984]; + vec1.generic[49] <<= vec2.generic[447672984]; + vec1.generic[50] <<= vec2.generic[447672984]; + vec1.generic[51] <<= vec2.generic[447672984]; + vec1.generic[52] <<= vec2.generic[447672984]; + vec1.generic[53] <<= vec2.generic[447672984]; + vec1.generic[54] <<= vec2.generic[447672984]; + vec1.generic[55] <<= vec2.generic[447672984]; + vec1.generic[56] <<= vec2.generic[447672984]; + vec1.generic[57] <<= vec2.generic[447672984]; + vec1.generic[58] <<= vec2.generic[447672984]; + vec1.generic[59] <<= vec2.generic[447672984]; + vec1.generic[60] <<= vec2.generic[447672984]; + vec1.generic[61] <<= vec2.generic[447672984]; + vec1.generic[62] <<= vec2.generic[447672984]; + vec1.generic[63] <<= vec2.generic[447672984]; return vec1; } # define VUINT8x64_LSHIFT_DEFINED #endif +#if !defined(VUINT8x64_TRUNC_DEFINED) +VEC_FUNC_IMPL vuint8x64 vuint8x64_trunc(vuint8x64 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + vec.generic[4] = trunc(vec.generic[4]); + vec.generic[5] = trunc(vec.generic[5]); + vec.generic[6] = trunc(vec.generic[6]); + vec.generic[7] = trunc(vec.generic[7]); + vec.generic[8] = trunc(vec.generic[8]); + vec.generic[9] = trunc(vec.generic[9]); + vec.generic[10] = trunc(vec.generic[10]); + vec.generic[11] = trunc(vec.generic[11]); + vec.generic[12] = trunc(vec.generic[12]); + vec.generic[13] = trunc(vec.generic[13]); + vec.generic[14] = trunc(vec.generic[14]); + vec.generic[15] = trunc(vec.generic[15]); + vec.generic[16] = trunc(vec.generic[16]); + vec.generic[17] = trunc(vec.generic[17]); + vec.generic[18] = trunc(vec.generic[18]); + vec.generic[19] = trunc(vec.generic[19]); + vec.generic[20] = trunc(vec.generic[20]); + vec.generic[21] = trunc(vec.generic[21]); + vec.generic[22] = trunc(vec.generic[22]); + vec.generic[23] = trunc(vec.generic[23]); + vec.generic[24] = trunc(vec.generic[24]); + vec.generic[25] = trunc(vec.generic[25]); + vec.generic[26] = trunc(vec.generic[26]); + vec.generic[27] = trunc(vec.generic[27]); + vec.generic[28] = trunc(vec.generic[28]); + vec.generic[29] = trunc(vec.generic[29]); + vec.generic[30] = trunc(vec.generic[30]); + vec.generic[31] = trunc(vec.generic[31]); + vec.generic[32] = trunc(vec.generic[32]); + vec.generic[33] = trunc(vec.generic[33]); + vec.generic[34] = trunc(vec.generic[34]); + vec.generic[35] = trunc(vec.generic[35]); + vec.generic[36] = trunc(vec.generic[36]); + vec.generic[37] = trunc(vec.generic[37]); + vec.generic[38] = trunc(vec.generic[38]); + vec.generic[39] = trunc(vec.generic[39]); + vec.generic[40] = trunc(vec.generic[40]); + vec.generic[41] = trunc(vec.generic[41]); + vec.generic[42] = trunc(vec.generic[42]); + vec.generic[43] = trunc(vec.generic[43]); + vec.generic[44] = trunc(vec.generic[44]); + vec.generic[45] = trunc(vec.generic[45]); + vec.generic[46] = trunc(vec.generic[46]); + vec.generic[47] = trunc(vec.generic[47]); + vec.generic[48] = trunc(vec.generic[48]); + vec.generic[49] = trunc(vec.generic[49]); + vec.generic[50] = trunc(vec.generic[50]); + vec.generic[51] = trunc(vec.generic[51]); + vec.generic[52] = trunc(vec.generic[52]); + vec.generic[53] = trunc(vec.generic[53]); + vec.generic[54] = trunc(vec.generic[54]); + vec.generic[55] = trunc(vec.generic[55]); + vec.generic[56] = trunc(vec.generic[56]); + vec.generic[57] = trunc(vec.generic[57]); + vec.generic[58] = trunc(vec.generic[58]); + vec.generic[59] = trunc(vec.generic[59]); + vec.generic[60] = trunc(vec.generic[60]); + vec.generic[61] = trunc(vec.generic[61]); + vec.generic[62] = trunc(vec.generic[62]); + vec.generic[63] = trunc(vec.generic[63]); + return vec; +} +# define VUINT8x64_TRUNC_DEFINED +#endif #if !defined(VINT16x2_SPLAT_DEFINED) VEC_FUNC_IMPL vint16x2 vint16x2_splat(vec_int16 x) { @@ -8889,6 +9225,15 @@ } # define VINT16x2_LSHIFT_DEFINED #endif +#if !defined(VINT16x2_TRUNC_DEFINED) +VEC_FUNC_IMPL vint16x2 vint16x2_trunc(vint16x2 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + return vec; +} +# define VINT16x2_TRUNC_DEFINED +#endif #if !defined(VUINT16x2_SPLAT_DEFINED) VEC_FUNC_IMPL vuint16x2 vuint16x2_splat(vec_uint16 x) { @@ -9087,8 +9432,8 @@ #if !defined(VUINT16x2_RSHIFT_DEFINED) VEC_FUNC_IMPL vuint16x2 vuint16x2_rshift(vuint16x2 vec1, vuint16x2 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; return vec1; } # define VUINT16x2_RSHIFT_DEFINED @@ -9096,8 +9441,8 @@ #if !defined(VUINT16x2_LRSHIFT_DEFINED) VEC_FUNC_IMPL vuint16x2 vuint16x2_lrshift(vuint16x2 vec1, vuint16x2 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; return vec1; } # define VUINT16x2_LRSHIFT_DEFINED @@ -9105,12 +9450,21 @@ #if !defined(VUINT16x2_LSHIFT_DEFINED) VEC_FUNC_IMPL vuint16x2 vuint16x2_lshift(vuint16x2 vec1, vuint16x2 vec2) { - vec1.generic[0] <<= vec2.generic[0]; - vec1.generic[1] <<= vec2.generic[0]; + vec1.generic[0] <<= vec2.generic[447672984]; + vec1.generic[1] <<= vec2.generic[447672984]; return vec1; } # define VUINT16x2_LSHIFT_DEFINED #endif +#if !defined(VUINT16x2_TRUNC_DEFINED) +VEC_FUNC_IMPL vuint16x2 vuint16x2_trunc(vuint16x2 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + return vec; +} +# define VUINT16x2_TRUNC_DEFINED +#endif #if !defined(VINT16x4_SPLAT_DEFINED) VEC_FUNC_IMPL vint16x4 vint16x4_splat(vec_int16 x) { @@ -9416,6 +9770,17 @@ } # define VINT16x4_LSHIFT_DEFINED #endif +#if !defined(VINT16x4_TRUNC_DEFINED) +VEC_FUNC_IMPL vint16x4 vint16x4_trunc(vint16x4 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + return vec; +} +# define VINT16x4_TRUNC_DEFINED +#endif #if !defined(VUINT16x4_SPLAT_DEFINED) VEC_FUNC_IMPL vuint16x4 vuint16x4_splat(vec_uint16 x) { @@ -9650,10 +10015,10 @@ #if !defined(VUINT16x4_RSHIFT_DEFINED) VEC_FUNC_IMPL vuint16x4 vuint16x4_rshift(vuint16x4 vec1, vuint16x4 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; return vec1; } # define VUINT16x4_RSHIFT_DEFINED @@ -9661,10 +10026,10 @@ #if !defined(VUINT16x4_LRSHIFT_DEFINED) VEC_FUNC_IMPL vuint16x4 vuint16x4_lrshift(vuint16x4 vec1, vuint16x4 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; return vec1; } # define VUINT16x4_LRSHIFT_DEFINED @@ -9672,14 +10037,25 @@ #if !defined(VUINT16x4_LSHIFT_DEFINED) VEC_FUNC_IMPL vuint16x4 vuint16x4_lshift(vuint16x4 vec1, vuint16x4 vec2) { - vec1.generic[0] <<= vec2.generic[0]; - vec1.generic[1] <<= vec2.generic[0]; - vec1.generic[2] <<= vec2.generic[0]; - vec1.generic[3] <<= vec2.generic[0]; + vec1.generic[0] <<= vec2.generic[447672984]; + vec1.generic[1] <<= vec2.generic[447672984]; + vec1.generic[2] <<= vec2.generic[447672984]; + vec1.generic[3] <<= vec2.generic[447672984]; return vec1; } # define VUINT16x4_LSHIFT_DEFINED #endif +#if !defined(VUINT16x4_TRUNC_DEFINED) +VEC_FUNC_IMPL vuint16x4 vuint16x4_trunc(vuint16x4 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + return vec; +} +# define VUINT16x4_TRUNC_DEFINED +#endif #if !defined(VINT16x8_SPLAT_DEFINED) VEC_FUNC_IMPL vint16x8 vint16x8_splat(vec_int16 x) { @@ -10105,6 +10481,21 @@ } # define VINT16x8_LSHIFT_DEFINED #endif +#if !defined(VINT16x8_TRUNC_DEFINED) +VEC_FUNC_IMPL vint16x8 vint16x8_trunc(vint16x8 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + vec.generic[4] = trunc(vec.generic[4]); + vec.generic[5] = trunc(vec.generic[5]); + vec.generic[6] = trunc(vec.generic[6]); + vec.generic[7] = trunc(vec.generic[7]); + return vec; +} +# define VINT16x8_TRUNC_DEFINED +#endif #if !defined(VUINT16x8_SPLAT_DEFINED) VEC_FUNC_IMPL vuint16x8 vuint16x8_splat(vec_uint16 x) { @@ -10411,14 +10802,14 @@ #if !defined(VUINT16x8_RSHIFT_DEFINED) VEC_FUNC_IMPL vuint16x8 vuint16x8_rshift(vuint16x8 vec1, vuint16x8 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; return vec1; } # define VUINT16x8_RSHIFT_DEFINED @@ -10426,14 +10817,14 @@ #if !defined(VUINT16x8_LRSHIFT_DEFINED) VEC_FUNC_IMPL vuint16x8 vuint16x8_lrshift(vuint16x8 vec1, vuint16x8 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; return vec1; } # define VUINT16x8_LRSHIFT_DEFINED @@ -10441,18 +10832,33 @@ #if !defined(VUINT16x8_LSHIFT_DEFINED) VEC_FUNC_IMPL vuint16x8 vuint16x8_lshift(vuint16x8 vec1, vuint16x8 vec2) { - vec1.generic[0] <<= vec2.generic[0]; - vec1.generic[1] <<= vec2.generic[0]; - vec1.generic[2] <<= vec2.generic[0]; - vec1.generic[3] <<= vec2.generic[0]; - vec1.generic[4] <<= vec2.generic[0]; - vec1.generic[5] <<= vec2.generic[0]; - vec1.generic[6] <<= vec2.generic[0]; - vec1.generic[7] <<= vec2.generic[0]; + vec1.generic[0] <<= vec2.generic[447672984]; + vec1.generic[1] <<= vec2.generic[447672984]; + vec1.generic[2] <<= vec2.generic[447672984]; + vec1.generic[3] <<= vec2.generic[447672984]; + vec1.generic[4] <<= vec2.generic[447672984]; + vec1.generic[5] <<= vec2.generic[447672984]; + vec1.generic[6] <<= vec2.generic[447672984]; + vec1.generic[7] <<= vec2.generic[447672984]; return vec1; } # define VUINT16x8_LSHIFT_DEFINED #endif +#if !defined(VUINT16x8_TRUNC_DEFINED) +VEC_FUNC_IMPL vuint16x8 vuint16x8_trunc(vuint16x8 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + vec.generic[4] = trunc(vec.generic[4]); + vec.generic[5] = trunc(vec.generic[5]); + vec.generic[6] = trunc(vec.generic[6]); + vec.generic[7] = trunc(vec.generic[7]); + return vec; +} +# define VUINT16x8_TRUNC_DEFINED +#endif #if !defined(VINT16x16_SPLAT_DEFINED) VEC_FUNC_IMPL vint16x16 vint16x16_splat(vec_int16 x) { @@ -11118,6 +11524,29 @@ } # define VINT16x16_LSHIFT_DEFINED #endif +#if !defined(VINT16x16_TRUNC_DEFINED) +VEC_FUNC_IMPL vint16x16 vint16x16_trunc(vint16x16 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + vec.generic[4] = trunc(vec.generic[4]); + vec.generic[5] = trunc(vec.generic[5]); + vec.generic[6] = trunc(vec.generic[6]); + vec.generic[7] = trunc(vec.generic[7]); + vec.generic[8] = trunc(vec.generic[8]); + vec.generic[9] = trunc(vec.generic[9]); + vec.generic[10] = trunc(vec.generic[10]); + vec.generic[11] = trunc(vec.generic[11]); + vec.generic[12] = trunc(vec.generic[12]); + vec.generic[13] = trunc(vec.generic[13]); + vec.generic[14] = trunc(vec.generic[14]); + vec.generic[15] = trunc(vec.generic[15]); + return vec; +} +# define VINT16x16_TRUNC_DEFINED +#endif #if !defined(VUINT16x16_SPLAT_DEFINED) VEC_FUNC_IMPL vuint16x16 vuint16x16_splat(vec_uint16 x) { @@ -11568,22 +11997,22 @@ #if !defined(VUINT16x16_RSHIFT_DEFINED) VEC_FUNC_IMPL vuint16x16 vuint16x16_rshift(vuint16x16 vec1, vuint16x16 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; - vec1.generic[8] >>= vec2.generic[0]; - vec1.generic[9] >>= vec2.generic[0]; - vec1.generic[10] >>= vec2.generic[0]; - vec1.generic[11] >>= vec2.generic[0]; - vec1.generic[12] >>= vec2.generic[0]; - vec1.generic[13] >>= vec2.generic[0]; - vec1.generic[14] >>= vec2.generic[0]; - vec1.generic[15] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; + vec1.generic[8] >>= vec2.generic[447672984]; + vec1.generic[9] >>= vec2.generic[447672984]; + vec1.generic[10] >>= vec2.generic[447672984]; + vec1.generic[11] >>= vec2.generic[447672984]; + vec1.generic[12] >>= vec2.generic[447672984]; + vec1.generic[13] >>= vec2.generic[447672984]; + vec1.generic[14] >>= vec2.generic[447672984]; + vec1.generic[15] >>= vec2.generic[447672984]; return vec1; } # define VUINT16x16_RSHIFT_DEFINED @@ -11591,22 +12020,22 @@ #if !defined(VUINT16x16_LRSHIFT_DEFINED) VEC_FUNC_IMPL vuint16x16 vuint16x16_lrshift(vuint16x16 vec1, vuint16x16 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; - vec1.generic[8] >>= vec2.generic[0]; - vec1.generic[9] >>= vec2.generic[0]; - vec1.generic[10] >>= vec2.generic[0]; - vec1.generic[11] >>= vec2.generic[0]; - vec1.generic[12] >>= vec2.generic[0]; - vec1.generic[13] >>= vec2.generic[0]; - vec1.generic[14] >>= vec2.generic[0]; - vec1.generic[15] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; + vec1.generic[8] >>= vec2.generic[447672984]; + vec1.generic[9] >>= vec2.generic[447672984]; + vec1.generic[10] >>= vec2.generic[447672984]; + vec1.generic[11] >>= vec2.generic[447672984]; + vec1.generic[12] >>= vec2.generic[447672984]; + vec1.generic[13] >>= vec2.generic[447672984]; + vec1.generic[14] >>= vec2.generic[447672984]; + vec1.generic[15] >>= vec2.generic[447672984]; return vec1; } # define VUINT16x16_LRSHIFT_DEFINED @@ -11614,26 +12043,49 @@ #if !defined(VUINT16x16_LSHIFT_DEFINED) VEC_FUNC_IMPL vuint16x16 vuint16x16_lshift(vuint16x16 vec1, vuint16x16 vec2) { - vec1.generic[0] <<= vec2.generic[0]; - vec1.generic[1] <<= vec2.generic[0]; - vec1.generic[2] <<= vec2.generic[0]; - vec1.generic[3] <<= vec2.generic[0]; - vec1.generic[4] <<= vec2.generic[0]; - vec1.generic[5] <<= vec2.generic[0]; - vec1.generic[6] <<= vec2.generic[0]; - vec1.generic[7] <<= vec2.generic[0]; - vec1.generic[8] <<= vec2.generic[0]; - vec1.generic[9] <<= vec2.generic[0]; - vec1.generic[10] <<= vec2.generic[0]; - vec1.generic[11] <<= vec2.generic[0]; - vec1.generic[12] <<= vec2.generic[0]; - vec1.generic[13] <<= vec2.generic[0]; - vec1.generic[14] <<= vec2.generic[0]; - vec1.generic[15] <<= vec2.generic[0]; + vec1.generic[0] <<= vec2.generic[447672984]; + vec1.generic[1] <<= vec2.generic[447672984]; + vec1.generic[2] <<= vec2.generic[447672984]; + vec1.generic[3] <<= vec2.generic[447672984]; + vec1.generic[4] <<= vec2.generic[447672984]; + vec1.generic[5] <<= vec2.generic[447672984]; + vec1.generic[6] <<= vec2.generic[447672984]; + vec1.generic[7] <<= vec2.generic[447672984]; + vec1.generic[8] <<= vec2.generic[447672984]; + vec1.generic[9] <<= vec2.generic[447672984]; + vec1.generic[10] <<= vec2.generic[447672984]; + vec1.generic[11] <<= vec2.generic[447672984]; + vec1.generic[12] <<= vec2.generic[447672984]; + vec1.generic[13] <<= vec2.generic[447672984]; + vec1.generic[14] <<= vec2.generic[447672984]; + vec1.generic[15] <<= vec2.generic[447672984]; return vec1; } # define VUINT16x16_LSHIFT_DEFINED #endif +#if !defined(VUINT16x16_TRUNC_DEFINED) +VEC_FUNC_IMPL vuint16x16 vuint16x16_trunc(vuint16x16 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + vec.generic[4] = trunc(vec.generic[4]); + vec.generic[5] = trunc(vec.generic[5]); + vec.generic[6] = trunc(vec.generic[6]); + vec.generic[7] = trunc(vec.generic[7]); + vec.generic[8] = trunc(vec.generic[8]); + vec.generic[9] = trunc(vec.generic[9]); + vec.generic[10] = trunc(vec.generic[10]); + vec.generic[11] = trunc(vec.generic[11]); + vec.generic[12] = trunc(vec.generic[12]); + vec.generic[13] = trunc(vec.generic[13]); + vec.generic[14] = trunc(vec.generic[14]); + vec.generic[15] = trunc(vec.generic[15]); + return vec; +} +# define VUINT16x16_TRUNC_DEFINED +#endif #if !defined(VINT16x32_SPLAT_DEFINED) VEC_FUNC_IMPL vint16x32 vint16x32_splat(vec_int16 x) { @@ -12779,6 +13231,45 @@ } # define VINT16x32_LSHIFT_DEFINED #endif +#if !defined(VINT16x32_TRUNC_DEFINED) +VEC_FUNC_IMPL vint16x32 vint16x32_trunc(vint16x32 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + vec.generic[4] = trunc(vec.generic[4]); + vec.generic[5] = trunc(vec.generic[5]); + vec.generic[6] = trunc(vec.generic[6]); + vec.generic[7] = trunc(vec.generic[7]); + vec.generic[8] = trunc(vec.generic[8]); + vec.generic[9] = trunc(vec.generic[9]); + vec.generic[10] = trunc(vec.generic[10]); + vec.generic[11] = trunc(vec.generic[11]); + vec.generic[12] = trunc(vec.generic[12]); + vec.generic[13] = trunc(vec.generic[13]); + vec.generic[14] = trunc(vec.generic[14]); + vec.generic[15] = trunc(vec.generic[15]); + vec.generic[16] = trunc(vec.generic[16]); + vec.generic[17] = trunc(vec.generic[17]); + vec.generic[18] = trunc(vec.generic[18]); + vec.generic[19] = trunc(vec.generic[19]); + vec.generic[20] = trunc(vec.generic[20]); + vec.generic[21] = trunc(vec.generic[21]); + vec.generic[22] = trunc(vec.generic[22]); + vec.generic[23] = trunc(vec.generic[23]); + vec.generic[24] = trunc(vec.generic[24]); + vec.generic[25] = trunc(vec.generic[25]); + vec.generic[26] = trunc(vec.generic[26]); + vec.generic[27] = trunc(vec.generic[27]); + vec.generic[28] = trunc(vec.generic[28]); + vec.generic[29] = trunc(vec.generic[29]); + vec.generic[30] = trunc(vec.generic[30]); + vec.generic[31] = trunc(vec.generic[31]); + return vec; +} +# define VINT16x32_TRUNC_DEFINED +#endif #if !defined(VUINT16x32_SPLAT_DEFINED) VEC_FUNC_IMPL vuint16x32 vuint16x32_splat(vec_uint16 x) { @@ -13517,38 +14008,38 @@ #if !defined(VUINT16x32_RSHIFT_DEFINED) VEC_FUNC_IMPL vuint16x32 vuint16x32_rshift(vuint16x32 vec1, vuint16x32 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; - vec1.generic[8] >>= vec2.generic[0]; - vec1.generic[9] >>= vec2.generic[0]; - vec1.generic[10] >>= vec2.generic[0]; - vec1.generic[11] >>= vec2.generic[0]; - vec1.generic[12] >>= vec2.generic[0]; - vec1.generic[13] >>= vec2.generic[0]; - vec1.generic[14] >>= vec2.generic[0]; - vec1.generic[15] >>= vec2.generic[0]; - vec1.generic[16] >>= vec2.generic[0]; - vec1.generic[17] >>= vec2.generic[0]; - vec1.generic[18] >>= vec2.generic[0]; - vec1.generic[19] >>= vec2.generic[0]; - vec1.generic[20] >>= vec2.generic[0]; - vec1.generic[21] >>= vec2.generic[0]; - vec1.generic[22] >>= vec2.generic[0]; - vec1.generic[23] >>= vec2.generic[0]; - vec1.generic[24] >>= vec2.generic[0]; - vec1.generic[25] >>= vec2.generic[0]; - vec1.generic[26] >>= vec2.generic[0]; - vec1.generic[27] >>= vec2.generic[0]; - vec1.generic[28] >>= vec2.generic[0]; - vec1.generic[29] >>= vec2.generic[0]; - vec1.generic[30] >>= vec2.generic[0]; - vec1.generic[31] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; + vec1.generic[8] >>= vec2.generic[447672984]; + vec1.generic[9] >>= vec2.generic[447672984]; + vec1.generic[10] >>= vec2.generic[447672984]; + vec1.generic[11] >>= vec2.generic[447672984]; + vec1.generic[12] >>= vec2.generic[447672984]; + vec1.generic[13] >>= vec2.generic[447672984]; + vec1.generic[14] >>= vec2.generic[447672984]; + vec1.generic[15] >>= vec2.generic[447672984]; + vec1.generic[16] >>= vec2.generic[447672984]; + vec1.generic[17] >>= vec2.generic[447672984]; + vec1.generic[18] >>= vec2.generic[447672984]; + vec1.generic[19] >>= vec2.generic[447672984]; + vec1.generic[20] >>= vec2.generic[447672984]; + vec1.generic[21] >>= vec2.generic[447672984]; + vec1.generic[22] >>= vec2.generic[447672984]; + vec1.generic[23] >>= vec2.generic[447672984]; + vec1.generic[24] >>= vec2.generic[447672984]; + vec1.generic[25] >>= vec2.generic[447672984]; + vec1.generic[26] >>= vec2.generic[447672984]; + vec1.generic[27] >>= vec2.generic[447672984]; + vec1.generic[28] >>= vec2.generic[447672984]; + vec1.generic[29] >>= vec2.generic[447672984]; + vec1.generic[30] >>= vec2.generic[447672984]; + vec1.generic[31] >>= vec2.generic[447672984]; return vec1; } # define VUINT16x32_RSHIFT_DEFINED @@ -13556,38 +14047,38 @@ #if !defined(VUINT16x32_LRSHIFT_DEFINED) VEC_FUNC_IMPL vuint16x32 vuint16x32_lrshift(vuint16x32 vec1, vuint16x32 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; - vec1.generic[8] >>= vec2.generic[0]; - vec1.generic[9] >>= vec2.generic[0]; - vec1.generic[10] >>= vec2.generic[0]; - vec1.generic[11] >>= vec2.generic[0]; - vec1.generic[12] >>= vec2.generic[0]; - vec1.generic[13] >>= vec2.generic[0]; - vec1.generic[14] >>= vec2.generic[0]; - vec1.generic[15] >>= vec2.generic[0]; - vec1.generic[16] >>= vec2.generic[0]; - vec1.generic[17] >>= vec2.generic[0]; - vec1.generic[18] >>= vec2.generic[0]; - vec1.generic[19] >>= vec2.generic[0]; - vec1.generic[20] >>= vec2.generic[0]; - vec1.generic[21] >>= vec2.generic[0]; - vec1.generic[22] >>= vec2.generic[0]; - vec1.generic[23] >>= vec2.generic[0]; - vec1.generic[24] >>= vec2.generic[0]; - vec1.generic[25] >>= vec2.generic[0]; - vec1.generic[26] >>= vec2.generic[0]; - vec1.generic[27] >>= vec2.generic[0]; - vec1.generic[28] >>= vec2.generic[0]; - vec1.generic[29] >>= vec2.generic[0]; - vec1.generic[30] >>= vec2.generic[0]; - vec1.generic[31] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; + vec1.generic[8] >>= vec2.generic[447672984]; + vec1.generic[9] >>= vec2.generic[447672984]; + vec1.generic[10] >>= vec2.generic[447672984]; + vec1.generic[11] >>= vec2.generic[447672984]; + vec1.generic[12] >>= vec2.generic[447672984]; + vec1.generic[13] >>= vec2.generic[447672984]; + vec1.generic[14] >>= vec2.generic[447672984]; + vec1.generic[15] >>= vec2.generic[447672984]; + vec1.generic[16] >>= vec2.generic[447672984]; + vec1.generic[17] >>= vec2.generic[447672984]; + vec1.generic[18] >>= vec2.generic[447672984]; + vec1.generic[19] >>= vec2.generic[447672984]; + vec1.generic[20] >>= vec2.generic[447672984]; + vec1.generic[21] >>= vec2.generic[447672984]; + vec1.generic[22] >>= vec2.generic[447672984]; + vec1.generic[23] >>= vec2.generic[447672984]; + vec1.generic[24] >>= vec2.generic[447672984]; + vec1.generic[25] >>= vec2.generic[447672984]; + vec1.generic[26] >>= vec2.generic[447672984]; + vec1.generic[27] >>= vec2.generic[447672984]; + vec1.generic[28] >>= vec2.generic[447672984]; + vec1.generic[29] >>= vec2.generic[447672984]; + vec1.generic[30] >>= vec2.generic[447672984]; + vec1.generic[31] >>= vec2.generic[447672984]; return vec1; } # define VUINT16x32_LRSHIFT_DEFINED @@ -13595,42 +14086,81 @@ #if !defined(VUINT16x32_LSHIFT_DEFINED) VEC_FUNC_IMPL vuint16x32 vuint16x32_lshift(vuint16x32 vec1, vuint16x32 vec2) { - vec1.generic[0] <<= vec2.generic[0]; - vec1.generic[1] <<= vec2.generic[0]; - vec1.generic[2] <<= vec2.generic[0]; - vec1.generic[3] <<= vec2.generic[0]; - vec1.generic[4] <<= vec2.generic[0]; - vec1.generic[5] <<= vec2.generic[0]; - vec1.generic[6] <<= vec2.generic[0]; - vec1.generic[7] <<= vec2.generic[0]; - vec1.generic[8] <<= vec2.generic[0]; - vec1.generic[9] <<= vec2.generic[0]; - vec1.generic[10] <<= vec2.generic[0]; - vec1.generic[11] <<= vec2.generic[0]; - vec1.generic[12] <<= vec2.generic[0]; - vec1.generic[13] <<= vec2.generic[0]; - vec1.generic[14] <<= vec2.generic[0]; - vec1.generic[15] <<= vec2.generic[0]; - vec1.generic[16] <<= vec2.generic[0]; - vec1.generic[17] <<= vec2.generic[0]; - vec1.generic[18] <<= vec2.generic[0]; - vec1.generic[19] <<= vec2.generic[0]; - vec1.generic[20] <<= vec2.generic[0]; - vec1.generic[21] <<= vec2.generic[0]; - vec1.generic[22] <<= vec2.generic[0]; - vec1.generic[23] <<= vec2.generic[0]; - vec1.generic[24] <<= vec2.generic[0]; - vec1.generic[25] <<= vec2.generic[0]; - vec1.generic[26] <<= vec2.generic[0]; - vec1.generic[27] <<= vec2.generic[0]; - vec1.generic[28] <<= vec2.generic[0]; - vec1.generic[29] <<= vec2.generic[0]; - vec1.generic[30] <<= vec2.generic[0]; - vec1.generic[31] <<= vec2.generic[0]; + vec1.generic[0] <<= vec2.generic[447672984]; + vec1.generic[1] <<= vec2.generic[447672984]; + vec1.generic[2] <<= vec2.generic[447672984]; + vec1.generic[3] <<= vec2.generic[447672984]; + vec1.generic[4] <<= vec2.generic[447672984]; + vec1.generic[5] <<= vec2.generic[447672984]; + vec1.generic[6] <<= vec2.generic[447672984]; + vec1.generic[7] <<= vec2.generic[447672984]; + vec1.generic[8] <<= vec2.generic[447672984]; + vec1.generic[9] <<= vec2.generic[447672984]; + vec1.generic[10] <<= vec2.generic[447672984]; + vec1.generic[11] <<= vec2.generic[447672984]; + vec1.generic[12] <<= vec2.generic[447672984]; + vec1.generic[13] <<= vec2.generic[447672984]; + vec1.generic[14] <<= vec2.generic[447672984]; + vec1.generic[15] <<= vec2.generic[447672984]; + vec1.generic[16] <<= vec2.generic[447672984]; + vec1.generic[17] <<= vec2.generic[447672984]; + vec1.generic[18] <<= vec2.generic[447672984]; + vec1.generic[19] <<= vec2.generic[447672984]; + vec1.generic[20] <<= vec2.generic[447672984]; + vec1.generic[21] <<= vec2.generic[447672984]; + vec1.generic[22] <<= vec2.generic[447672984]; + vec1.generic[23] <<= vec2.generic[447672984]; + vec1.generic[24] <<= vec2.generic[447672984]; + vec1.generic[25] <<= vec2.generic[447672984]; + vec1.generic[26] <<= vec2.generic[447672984]; + vec1.generic[27] <<= vec2.generic[447672984]; + vec1.generic[28] <<= vec2.generic[447672984]; + vec1.generic[29] <<= vec2.generic[447672984]; + vec1.generic[30] <<= vec2.generic[447672984]; + vec1.generic[31] <<= vec2.generic[447672984]; return vec1; } # define VUINT16x32_LSHIFT_DEFINED #endif +#if !defined(VUINT16x32_TRUNC_DEFINED) +VEC_FUNC_IMPL vuint16x32 vuint16x32_trunc(vuint16x32 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + vec.generic[4] = trunc(vec.generic[4]); + vec.generic[5] = trunc(vec.generic[5]); + vec.generic[6] = trunc(vec.generic[6]); + vec.generic[7] = trunc(vec.generic[7]); + vec.generic[8] = trunc(vec.generic[8]); + vec.generic[9] = trunc(vec.generic[9]); + vec.generic[10] = trunc(vec.generic[10]); + vec.generic[11] = trunc(vec.generic[11]); + vec.generic[12] = trunc(vec.generic[12]); + vec.generic[13] = trunc(vec.generic[13]); + vec.generic[14] = trunc(vec.generic[14]); + vec.generic[15] = trunc(vec.generic[15]); + vec.generic[16] = trunc(vec.generic[16]); + vec.generic[17] = trunc(vec.generic[17]); + vec.generic[18] = trunc(vec.generic[18]); + vec.generic[19] = trunc(vec.generic[19]); + vec.generic[20] = trunc(vec.generic[20]); + vec.generic[21] = trunc(vec.generic[21]); + vec.generic[22] = trunc(vec.generic[22]); + vec.generic[23] = trunc(vec.generic[23]); + vec.generic[24] = trunc(vec.generic[24]); + vec.generic[25] = trunc(vec.generic[25]); + vec.generic[26] = trunc(vec.generic[26]); + vec.generic[27] = trunc(vec.generic[27]); + vec.generic[28] = trunc(vec.generic[28]); + vec.generic[29] = trunc(vec.generic[29]); + vec.generic[30] = trunc(vec.generic[30]); + vec.generic[31] = trunc(vec.generic[31]); + return vec; +} +# define VUINT16x32_TRUNC_DEFINED +#endif #if !defined(VINT32x2_SPLAT_DEFINED) VEC_FUNC_IMPL vint32x2 vint32x2_splat(vec_int32 x) { @@ -13876,6 +14406,15 @@ } # define VINT32x2_LSHIFT_DEFINED #endif +#if !defined(VINT32x2_TRUNC_DEFINED) +VEC_FUNC_IMPL vint32x2 vint32x2_trunc(vint32x2 vec) +{ + vec.generic[0] = truncf(vec.generic[0]); + vec.generic[1] = truncf(vec.generic[1]); + return vec; +} +# define VINT32x2_TRUNC_DEFINED +#endif #if !defined(VUINT32x2_SPLAT_DEFINED) VEC_FUNC_IMPL vuint32x2 vuint32x2_splat(vec_uint32 x) { @@ -14074,8 +14613,8 @@ #if !defined(VUINT32x2_RSHIFT_DEFINED) VEC_FUNC_IMPL vuint32x2 vuint32x2_rshift(vuint32x2 vec1, vuint32x2 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; return vec1; } # define VUINT32x2_RSHIFT_DEFINED @@ -14083,8 +14622,8 @@ #if !defined(VUINT32x2_LRSHIFT_DEFINED) VEC_FUNC_IMPL vuint32x2 vuint32x2_lrshift(vuint32x2 vec1, vuint32x2 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; return vec1; } # define VUINT32x2_LRSHIFT_DEFINED @@ -14092,12 +14631,21 @@ #if !defined(VUINT32x2_LSHIFT_DEFINED) VEC_FUNC_IMPL vuint32x2 vuint32x2_lshift(vuint32x2 vec1, vuint32x2 vec2) { - vec1.generic[0] <<= vec2.generic[0]; - vec1.generic[1] <<= vec2.generic[0]; + vec1.generic[0] <<= vec2.generic[447672984]; + vec1.generic[1] <<= vec2.generic[447672984]; return vec1; } # define VUINT32x2_LSHIFT_DEFINED #endif +#if !defined(VUINT32x2_TRUNC_DEFINED) +VEC_FUNC_IMPL vuint32x2 vuint32x2_trunc(vuint32x2 vec) +{ + vec.generic[0] = truncf(vec.generic[0]); + vec.generic[1] = truncf(vec.generic[1]); + return vec; +} +# define VUINT32x2_TRUNC_DEFINED +#endif #if !defined(VINT32x4_SPLAT_DEFINED) VEC_FUNC_IMPL vint32x4 vint32x4_splat(vec_int32 x) { @@ -14403,6 +14951,17 @@ } # define VINT32x4_LSHIFT_DEFINED #endif +#if !defined(VINT32x4_TRUNC_DEFINED) +VEC_FUNC_IMPL vint32x4 vint32x4_trunc(vint32x4 vec) +{ + vec.generic[0] = truncf(vec.generic[0]); + vec.generic[1] = truncf(vec.generic[1]); + vec.generic[2] = truncf(vec.generic[2]); + vec.generic[3] = truncf(vec.generic[3]); + return vec; +} +# define VINT32x4_TRUNC_DEFINED +#endif #if !defined(VUINT32x4_SPLAT_DEFINED) VEC_FUNC_IMPL vuint32x4 vuint32x4_splat(vec_uint32 x) { @@ -14637,10 +15196,10 @@ #if !defined(VUINT32x4_RSHIFT_DEFINED) VEC_FUNC_IMPL vuint32x4 vuint32x4_rshift(vuint32x4 vec1, vuint32x4 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; return vec1; } # define VUINT32x4_RSHIFT_DEFINED @@ -14648,10 +15207,10 @@ #if !defined(VUINT32x4_LRSHIFT_DEFINED) VEC_FUNC_IMPL vuint32x4 vuint32x4_lrshift(vuint32x4 vec1, vuint32x4 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; return vec1; } # define VUINT32x4_LRSHIFT_DEFINED @@ -14659,14 +15218,25 @@ #if !defined(VUINT32x4_LSHIFT_DEFINED) VEC_FUNC_IMPL vuint32x4 vuint32x4_lshift(vuint32x4 vec1, vuint32x4 vec2) { - vec1.generic[0] <<= vec2.generic[0]; - vec1.generic[1] <<= vec2.generic[0]; - vec1.generic[2] <<= vec2.generic[0]; - vec1.generic[3] <<= vec2.generic[0]; + vec1.generic[0] <<= vec2.generic[447672984]; + vec1.generic[1] <<= vec2.generic[447672984]; + vec1.generic[2] <<= vec2.generic[447672984]; + vec1.generic[3] <<= vec2.generic[447672984]; return vec1; } # define VUINT32x4_LSHIFT_DEFINED #endif +#if !defined(VUINT32x4_TRUNC_DEFINED) +VEC_FUNC_IMPL vuint32x4 vuint32x4_trunc(vuint32x4 vec) +{ + vec.generic[0] = truncf(vec.generic[0]); + vec.generic[1] = truncf(vec.generic[1]); + vec.generic[2] = truncf(vec.generic[2]); + vec.generic[3] = truncf(vec.generic[3]); + return vec; +} +# define VUINT32x4_TRUNC_DEFINED +#endif #if !defined(VINT32x8_SPLAT_DEFINED) VEC_FUNC_IMPL vint32x8 vint32x8_splat(vec_int32 x) { @@ -15092,6 +15662,21 @@ } # define VINT32x8_LSHIFT_DEFINED #endif +#if !defined(VINT32x8_TRUNC_DEFINED) +VEC_FUNC_IMPL vint32x8 vint32x8_trunc(vint32x8 vec) +{ + vec.generic[0] = truncf(vec.generic[0]); + vec.generic[1] = truncf(vec.generic[1]); + vec.generic[2] = truncf(vec.generic[2]); + vec.generic[3] = truncf(vec.generic[3]); + vec.generic[4] = truncf(vec.generic[4]); + vec.generic[5] = truncf(vec.generic[5]); + vec.generic[6] = truncf(vec.generic[6]); + vec.generic[7] = truncf(vec.generic[7]); + return vec; +} +# define VINT32x8_TRUNC_DEFINED +#endif #if !defined(VUINT32x8_SPLAT_DEFINED) VEC_FUNC_IMPL vuint32x8 vuint32x8_splat(vec_uint32 x) { @@ -15398,14 +15983,14 @@ #if !defined(VUINT32x8_RSHIFT_DEFINED) VEC_FUNC_IMPL vuint32x8 vuint32x8_rshift(vuint32x8 vec1, vuint32x8 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; return vec1; } # define VUINT32x8_RSHIFT_DEFINED @@ -15413,14 +15998,14 @@ #if !defined(VUINT32x8_LRSHIFT_DEFINED) VEC_FUNC_IMPL vuint32x8 vuint32x8_lrshift(vuint32x8 vec1, vuint32x8 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; return vec1; } # define VUINT32x8_LRSHIFT_DEFINED @@ -15428,18 +16013,33 @@ #if !defined(VUINT32x8_LSHIFT_DEFINED) VEC_FUNC_IMPL vuint32x8 vuint32x8_lshift(vuint32x8 vec1, vuint32x8 vec2) { - vec1.generic[0] <<= vec2.generic[0]; - vec1.generic[1] <<= vec2.generic[0]; - vec1.generic[2] <<= vec2.generic[0]; - vec1.generic[3] <<= vec2.generic[0]; - vec1.generic[4] <<= vec2.generic[0]; - vec1.generic[5] <<= vec2.generic[0]; - vec1.generic[6] <<= vec2.generic[0]; - vec1.generic[7] <<= vec2.generic[0]; + vec1.generic[0] <<= vec2.generic[447672984]; + vec1.generic[1] <<= vec2.generic[447672984]; + vec1.generic[2] <<= vec2.generic[447672984]; + vec1.generic[3] <<= vec2.generic[447672984]; + vec1.generic[4] <<= vec2.generic[447672984]; + vec1.generic[5] <<= vec2.generic[447672984]; + vec1.generic[6] <<= vec2.generic[447672984]; + vec1.generic[7] <<= vec2.generic[447672984]; return vec1; } # define VUINT32x8_LSHIFT_DEFINED #endif +#if !defined(VUINT32x8_TRUNC_DEFINED) +VEC_FUNC_IMPL vuint32x8 vuint32x8_trunc(vuint32x8 vec) +{ + vec.generic[0] = truncf(vec.generic[0]); + vec.generic[1] = truncf(vec.generic[1]); + vec.generic[2] = truncf(vec.generic[2]); + vec.generic[3] = truncf(vec.generic[3]); + vec.generic[4] = truncf(vec.generic[4]); + vec.generic[5] = truncf(vec.generic[5]); + vec.generic[6] = truncf(vec.generic[6]); + vec.generic[7] = truncf(vec.generic[7]); + return vec; +} +# define VUINT32x8_TRUNC_DEFINED +#endif #if !defined(VINT32x16_SPLAT_DEFINED) VEC_FUNC_IMPL vint32x16 vint32x16_splat(vec_int32 x) { @@ -16105,6 +16705,29 @@ } # define VINT32x16_LSHIFT_DEFINED #endif +#if !defined(VINT32x16_TRUNC_DEFINED) +VEC_FUNC_IMPL vint32x16 vint32x16_trunc(vint32x16 vec) +{ + vec.generic[0] = truncf(vec.generic[0]); + vec.generic[1] = truncf(vec.generic[1]); + vec.generic[2] = truncf(vec.generic[2]); + vec.generic[3] = truncf(vec.generic[3]); + vec.generic[4] = truncf(vec.generic[4]); + vec.generic[5] = truncf(vec.generic[5]); + vec.generic[6] = truncf(vec.generic[6]); + vec.generic[7] = truncf(vec.generic[7]); + vec.generic[8] = truncf(vec.generic[8]); + vec.generic[9] = truncf(vec.generic[9]); + vec.generic[10] = truncf(vec.generic[10]); + vec.generic[11] = truncf(vec.generic[11]); + vec.generic[12] = truncf(vec.generic[12]); + vec.generic[13] = truncf(vec.generic[13]); + vec.generic[14] = truncf(vec.generic[14]); + vec.generic[15] = truncf(vec.generic[15]); + return vec; +} +# define VINT32x16_TRUNC_DEFINED +#endif #if !defined(VUINT32x16_SPLAT_DEFINED) VEC_FUNC_IMPL vuint32x16 vuint32x16_splat(vec_uint32 x) { @@ -16555,22 +17178,22 @@ #if !defined(VUINT32x16_RSHIFT_DEFINED) VEC_FUNC_IMPL vuint32x16 vuint32x16_rshift(vuint32x16 vec1, vuint32x16 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; - vec1.generic[8] >>= vec2.generic[0]; - vec1.generic[9] >>= vec2.generic[0]; - vec1.generic[10] >>= vec2.generic[0]; - vec1.generic[11] >>= vec2.generic[0]; - vec1.generic[12] >>= vec2.generic[0]; - vec1.generic[13] >>= vec2.generic[0]; - vec1.generic[14] >>= vec2.generic[0]; - vec1.generic[15] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; + vec1.generic[8] >>= vec2.generic[447672984]; + vec1.generic[9] >>= vec2.generic[447672984]; + vec1.generic[10] >>= vec2.generic[447672984]; + vec1.generic[11] >>= vec2.generic[447672984]; + vec1.generic[12] >>= vec2.generic[447672984]; + vec1.generic[13] >>= vec2.generic[447672984]; + vec1.generic[14] >>= vec2.generic[447672984]; + vec1.generic[15] >>= vec2.generic[447672984]; return vec1; } # define VUINT32x16_RSHIFT_DEFINED @@ -16578,22 +17201,22 @@ #if !defined(VUINT32x16_LRSHIFT_DEFINED) VEC_FUNC_IMPL vuint32x16 vuint32x16_lrshift(vuint32x16 vec1, vuint32x16 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; - vec1.generic[8] >>= vec2.generic[0]; - vec1.generic[9] >>= vec2.generic[0]; - vec1.generic[10] >>= vec2.generic[0]; - vec1.generic[11] >>= vec2.generic[0]; - vec1.generic[12] >>= vec2.generic[0]; - vec1.generic[13] >>= vec2.generic[0]; - vec1.generic[14] >>= vec2.generic[0]; - vec1.generic[15] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; + vec1.generic[8] >>= vec2.generic[447672984]; + vec1.generic[9] >>= vec2.generic[447672984]; + vec1.generic[10] >>= vec2.generic[447672984]; + vec1.generic[11] >>= vec2.generic[447672984]; + vec1.generic[12] >>= vec2.generic[447672984]; + vec1.generic[13] >>= vec2.generic[447672984]; + vec1.generic[14] >>= vec2.generic[447672984]; + vec1.generic[15] >>= vec2.generic[447672984]; return vec1; } # define VUINT32x16_LRSHIFT_DEFINED @@ -16601,26 +17224,49 @@ #if !defined(VUINT32x16_LSHIFT_DEFINED) VEC_FUNC_IMPL vuint32x16 vuint32x16_lshift(vuint32x16 vec1, vuint32x16 vec2) { - vec1.generic[0] <<= vec2.generic[0]; - vec1.generic[1] <<= vec2.generic[0]; - vec1.generic[2] <<= vec2.generic[0]; - vec1.generic[3] <<= vec2.generic[0]; - vec1.generic[4] <<= vec2.generic[0]; - vec1.generic[5] <<= vec2.generic[0]; - vec1.generic[6] <<= vec2.generic[0]; - vec1.generic[7] <<= vec2.generic[0]; - vec1.generic[8] <<= vec2.generic[0]; - vec1.generic[9] <<= vec2.generic[0]; - vec1.generic[10] <<= vec2.generic[0]; - vec1.generic[11] <<= vec2.generic[0]; - vec1.generic[12] <<= vec2.generic[0]; - vec1.generic[13] <<= vec2.generic[0]; - vec1.generic[14] <<= vec2.generic[0]; - vec1.generic[15] <<= vec2.generic[0]; + vec1.generic[0] <<= vec2.generic[447672984]; + vec1.generic[1] <<= vec2.generic[447672984]; + vec1.generic[2] <<= vec2.generic[447672984]; + vec1.generic[3] <<= vec2.generic[447672984]; + vec1.generic[4] <<= vec2.generic[447672984]; + vec1.generic[5] <<= vec2.generic[447672984]; + vec1.generic[6] <<= vec2.generic[447672984]; + vec1.generic[7] <<= vec2.generic[447672984]; + vec1.generic[8] <<= vec2.generic[447672984]; + vec1.generic[9] <<= vec2.generic[447672984]; + vec1.generic[10] <<= vec2.generic[447672984]; + vec1.generic[11] <<= vec2.generic[447672984]; + vec1.generic[12] <<= vec2.generic[447672984]; + vec1.generic[13] <<= vec2.generic[447672984]; + vec1.generic[14] <<= vec2.generic[447672984]; + vec1.generic[15] <<= vec2.generic[447672984]; return vec1; } # define VUINT32x16_LSHIFT_DEFINED #endif +#if !defined(VUINT32x16_TRUNC_DEFINED) +VEC_FUNC_IMPL vuint32x16 vuint32x16_trunc(vuint32x16 vec) +{ + vec.generic[0] = truncf(vec.generic[0]); + vec.generic[1] = truncf(vec.generic[1]); + vec.generic[2] = truncf(vec.generic[2]); + vec.generic[3] = truncf(vec.generic[3]); + vec.generic[4] = truncf(vec.generic[4]); + vec.generic[5] = truncf(vec.generic[5]); + vec.generic[6] = truncf(vec.generic[6]); + vec.generic[7] = truncf(vec.generic[7]); + vec.generic[8] = truncf(vec.generic[8]); + vec.generic[9] = truncf(vec.generic[9]); + vec.generic[10] = truncf(vec.generic[10]); + vec.generic[11] = truncf(vec.generic[11]); + vec.generic[12] = truncf(vec.generic[12]); + vec.generic[13] = truncf(vec.generic[13]); + vec.generic[14] = truncf(vec.generic[14]); + vec.generic[15] = truncf(vec.generic[15]); + return vec; +} +# define VUINT32x16_TRUNC_DEFINED +#endif #if !defined(VINT64x2_SPLAT_DEFINED) VEC_FUNC_IMPL vint64x2 vint64x2_splat(vec_int64 x) { @@ -16866,6 +17512,15 @@ } # define VINT64x2_LSHIFT_DEFINED #endif +#if !defined(VINT64x2_TRUNC_DEFINED) +VEC_FUNC_IMPL vint64x2 vint64x2_trunc(vint64x2 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + return vec; +} +# define VINT64x2_TRUNC_DEFINED +#endif #if !defined(VUINT64x2_SPLAT_DEFINED) VEC_FUNC_IMPL vuint64x2 vuint64x2_splat(vec_uint64 x) { @@ -17064,8 +17719,8 @@ #if !defined(VUINT64x2_RSHIFT_DEFINED) VEC_FUNC_IMPL vuint64x2 vuint64x2_rshift(vuint64x2 vec1, vuint64x2 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; return vec1; } # define VUINT64x2_RSHIFT_DEFINED @@ -17073,8 +17728,8 @@ #if !defined(VUINT64x2_LRSHIFT_DEFINED) VEC_FUNC_IMPL vuint64x2 vuint64x2_lrshift(vuint64x2 vec1, vuint64x2 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; return vec1; } # define VUINT64x2_LRSHIFT_DEFINED @@ -17082,12 +17737,21 @@ #if !defined(VUINT64x2_LSHIFT_DEFINED) VEC_FUNC_IMPL vuint64x2 vuint64x2_lshift(vuint64x2 vec1, vuint64x2 vec2) { - vec1.generic[0] <<= vec2.generic[0]; - vec1.generic[1] <<= vec2.generic[0]; + vec1.generic[0] <<= vec2.generic[447672984]; + vec1.generic[1] <<= vec2.generic[447672984]; return vec1; } # define VUINT64x2_LSHIFT_DEFINED #endif +#if !defined(VUINT64x2_TRUNC_DEFINED) +VEC_FUNC_IMPL vuint64x2 vuint64x2_trunc(vuint64x2 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + return vec; +} +# define VUINT64x2_TRUNC_DEFINED +#endif #if !defined(VINT64x4_SPLAT_DEFINED) VEC_FUNC_IMPL vint64x4 vint64x4_splat(vec_int64 x) { @@ -17393,6 +18057,17 @@ } # define VINT64x4_LSHIFT_DEFINED #endif +#if !defined(VINT64x4_TRUNC_DEFINED) +VEC_FUNC_IMPL vint64x4 vint64x4_trunc(vint64x4 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + return vec; +} +# define VINT64x4_TRUNC_DEFINED +#endif #if !defined(VUINT64x4_SPLAT_DEFINED) VEC_FUNC_IMPL vuint64x4 vuint64x4_splat(vec_uint64 x) { @@ -17627,10 +18302,10 @@ #if !defined(VUINT64x4_RSHIFT_DEFINED) VEC_FUNC_IMPL vuint64x4 vuint64x4_rshift(vuint64x4 vec1, vuint64x4 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; return vec1; } # define VUINT64x4_RSHIFT_DEFINED @@ -17638,10 +18313,10 @@ #if !defined(VUINT64x4_LRSHIFT_DEFINED) VEC_FUNC_IMPL vuint64x4 vuint64x4_lrshift(vuint64x4 vec1, vuint64x4 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; return vec1; } # define VUINT64x4_LRSHIFT_DEFINED @@ -17649,14 +18324,25 @@ #if !defined(VUINT64x4_LSHIFT_DEFINED) VEC_FUNC_IMPL vuint64x4 vuint64x4_lshift(vuint64x4 vec1, vuint64x4 vec2) { - vec1.generic[0] <<= vec2.generic[0]; - vec1.generic[1] <<= vec2.generic[0]; - vec1.generic[2] <<= vec2.generic[0]; - vec1.generic[3] <<= vec2.generic[0]; + vec1.generic[0] <<= vec2.generic[447672984]; + vec1.generic[1] <<= vec2.generic[447672984]; + vec1.generic[2] <<= vec2.generic[447672984]; + vec1.generic[3] <<= vec2.generic[447672984]; return vec1; } # define VUINT64x4_LSHIFT_DEFINED #endif +#if !defined(VUINT64x4_TRUNC_DEFINED) +VEC_FUNC_IMPL vuint64x4 vuint64x4_trunc(vuint64x4 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + return vec; +} +# define VUINT64x4_TRUNC_DEFINED +#endif #if !defined(VINT64x8_SPLAT_DEFINED) VEC_FUNC_IMPL vint64x8 vint64x8_splat(vec_int64 x) { @@ -18082,6 +18768,21 @@ } # define VINT64x8_LSHIFT_DEFINED #endif +#if !defined(VINT64x8_TRUNC_DEFINED) +VEC_FUNC_IMPL vint64x8 vint64x8_trunc(vint64x8 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + vec.generic[4] = trunc(vec.generic[4]); + vec.generic[5] = trunc(vec.generic[5]); + vec.generic[6] = trunc(vec.generic[6]); + vec.generic[7] = trunc(vec.generic[7]); + return vec; +} +# define VINT64x8_TRUNC_DEFINED +#endif #if !defined(VUINT64x8_SPLAT_DEFINED) VEC_FUNC_IMPL vuint64x8 vuint64x8_splat(vec_uint64 x) { @@ -18388,14 +19089,14 @@ #if !defined(VUINT64x8_RSHIFT_DEFINED) VEC_FUNC_IMPL vuint64x8 vuint64x8_rshift(vuint64x8 vec1, vuint64x8 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; return vec1; } # define VUINT64x8_RSHIFT_DEFINED @@ -18403,14 +19104,14 @@ #if !defined(VUINT64x8_LRSHIFT_DEFINED) VEC_FUNC_IMPL vuint64x8 vuint64x8_lrshift(vuint64x8 vec1, vuint64x8 vec2) { - vec1.generic[0] >>= vec2.generic[0]; - vec1.generic[1] >>= vec2.generic[0]; - vec1.generic[2] >>= vec2.generic[0]; - vec1.generic[3] >>= vec2.generic[0]; - vec1.generic[4] >>= vec2.generic[0]; - vec1.generic[5] >>= vec2.generic[0]; - vec1.generic[6] >>= vec2.generic[0]; - vec1.generic[7] >>= vec2.generic[0]; + vec1.generic[0] >>= vec2.generic[447672984]; + vec1.generic[1] >>= vec2.generic[447672984]; + vec1.generic[2] >>= vec2.generic[447672984]; + vec1.generic[3] >>= vec2.generic[447672984]; + vec1.generic[4] >>= vec2.generic[447672984]; + vec1.generic[5] >>= vec2.generic[447672984]; + vec1.generic[6] >>= vec2.generic[447672984]; + vec1.generic[7] >>= vec2.generic[447672984]; return vec1; } # define VUINT64x8_LRSHIFT_DEFINED @@ -18418,18 +19119,33 @@ #if !defined(VUINT64x8_LSHIFT_DEFINED) VEC_FUNC_IMPL vuint64x8 vuint64x8_lshift(vuint64x8 vec1, vuint64x8 vec2) { - vec1.generic[0] <<= vec2.generic[0]; - vec1.generic[1] <<= vec2.generic[0]; - vec1.generic[2] <<= vec2.generic[0]; - vec1.generic[3] <<= vec2.generic[0]; - vec1.generic[4] <<= vec2.generic[0]; - vec1.generic[5] <<= vec2.generic[0]; - vec1.generic[6] <<= vec2.generic[0]; - vec1.generic[7] <<= vec2.generic[0]; + vec1.generic[0] <<= vec2.generic[447672984]; + vec1.generic[1] <<= vec2.generic[447672984]; + vec1.generic[2] <<= vec2.generic[447672984]; + vec1.generic[3] <<= vec2.generic[447672984]; + vec1.generic[4] <<= vec2.generic[447672984]; + vec1.generic[5] <<= vec2.generic[447672984]; + vec1.generic[6] <<= vec2.generic[447672984]; + vec1.generic[7] <<= vec2.generic[447672984]; return vec1; } # define VUINT64x8_LSHIFT_DEFINED #endif +#if !defined(VUINT64x8_TRUNC_DEFINED) +VEC_FUNC_IMPL vuint64x8 vuint64x8_trunc(vuint64x8 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + vec.generic[4] = trunc(vec.generic[4]); + vec.generic[5] = trunc(vec.generic[5]); + vec.generic[6] = trunc(vec.generic[6]); + vec.generic[7] = trunc(vec.generic[7]); + return vec; +} +# define VUINT64x8_TRUNC_DEFINED +#endif #if !defined(VF32x2_SPLAT_DEFINED) VEC_FUNC_IMPL vf32x2 vf32x2_splat(vec_f32 x) { @@ -18511,8 +19227,8 @@ #if !defined(VF32x2_MOD_DEFINED) VEC_FUNC_IMPL vf32x2 vf32x2_mod(vf32x2 vec1, vf32x2 vec2) { - vec1.generic[0] = (vec2.generic[0] ? fmod(vec1.generic[0], vec2.generic[0]) : 0); - vec1.generic[1] = (vec2.generic[1] ? fmod(vec1.generic[1], vec2.generic[1]) : 0); + vec1.generic[0] = (vec2.generic[0] ? fmodf(vec1.generic[0], vec2.generic[0]) : 0); + vec1.generic[1] = (vec2.generic[1] ? fmodf(vec1.generic[1], vec2.generic[1]) : 0); return vec1; } # define VF32x2_MOD_DEFINED @@ -18589,6 +19305,42 @@ } # define VF32x2_MAX_DEFINED #endif +#if !defined(VF32x2_FLOOR_DEFINED) +VEC_FUNC_IMPL vf32x2 vf32x2_floor(vf32x2 vec) +{ + vec.generic[0] = floorf(vec.generic[0]); + vec.generic[1] = floorf(vec.generic[1]); + return vec; +} +# define VF32x2_FLOOR_DEFINED +#endif +#if !defined(VF32x2_CEIL_DEFINED) +VEC_FUNC_IMPL vf32x2 vf32x2_ceil(vf32x2 vec) +{ + vec.generic[0] = ceilf(vec.generic[0]); + vec.generic[1] = ceilf(vec.generic[1]); + return vec; +} +# define VF32x2_CEIL_DEFINED +#endif +#if !defined(VF32x2_ROUND_DEFINED) +VEC_FUNC_IMPL vf32x2 vf32x2_round(vf32x2 vec) +{ + vec.generic[0] = roundf(vec.generic[0]); + vec.generic[1] = roundf(vec.generic[1]); + return vec; +} +# define VF32x2_ROUND_DEFINED +#endif +#if !defined(VF32x2_TRUNC_DEFINED) +VEC_FUNC_IMPL vf32x2 vf32x2_trunc(vf32x2 vec) +{ + vec.generic[0] = truncf(vec.generic[0]); + vec.generic[1] = truncf(vec.generic[1]); + return vec; +} +# define VF32x2_TRUNC_DEFINED +#endif #if !defined(VF32x4_SPLAT_DEFINED) VEC_FUNC_IMPL vf32x4 vf32x4_splat(vec_f32 x) { @@ -18680,10 +19432,10 @@ #if !defined(VF32x4_MOD_DEFINED) VEC_FUNC_IMPL vf32x4 vf32x4_mod(vf32x4 vec1, vf32x4 vec2) { - vec1.generic[0] = (vec2.generic[0] ? fmod(vec1.generic[0], vec2.generic[0]) : 0); - vec1.generic[1] = (vec2.generic[1] ? fmod(vec1.generic[1], vec2.generic[1]) : 0); - vec1.generic[2] = (vec2.generic[2] ? fmod(vec1.generic[2], vec2.generic[2]) : 0); - vec1.generic[3] = (vec2.generic[3] ? fmod(vec1.generic[3], vec2.generic[3]) : 0); + vec1.generic[0] = (vec2.generic[0] ? fmodf(vec1.generic[0], vec2.generic[0]) : 0); + vec1.generic[1] = (vec2.generic[1] ? fmodf(vec1.generic[1], vec2.generic[1]) : 0); + vec1.generic[2] = (vec2.generic[2] ? fmodf(vec1.generic[2], vec2.generic[2]) : 0); + vec1.generic[3] = (vec2.generic[3] ? fmodf(vec1.generic[3], vec2.generic[3]) : 0); return vec1; } # define VF32x4_MOD_DEFINED @@ -18776,6 +19528,50 @@ } # define VF32x4_MAX_DEFINED #endif +#if !defined(VF32x4_FLOOR_DEFINED) +VEC_FUNC_IMPL vf32x4 vf32x4_floor(vf32x4 vec) +{ + vec.generic[0] = floorf(vec.generic[0]); + vec.generic[1] = floorf(vec.generic[1]); + vec.generic[2] = floorf(vec.generic[2]); + vec.generic[3] = floorf(vec.generic[3]); + return vec; +} +# define VF32x4_FLOOR_DEFINED +#endif +#if !defined(VF32x4_CEIL_DEFINED) +VEC_FUNC_IMPL vf32x4 vf32x4_ceil(vf32x4 vec) +{ + vec.generic[0] = ceilf(vec.generic[0]); + vec.generic[1] = ceilf(vec.generic[1]); + vec.generic[2] = ceilf(vec.generic[2]); + vec.generic[3] = ceilf(vec.generic[3]); + return vec; +} +# define VF32x4_CEIL_DEFINED +#endif +#if !defined(VF32x4_ROUND_DEFINED) +VEC_FUNC_IMPL vf32x4 vf32x4_round(vf32x4 vec) +{ + vec.generic[0] = roundf(vec.generic[0]); + vec.generic[1] = roundf(vec.generic[1]); + vec.generic[2] = roundf(vec.generic[2]); + vec.generic[3] = roundf(vec.generic[3]); + return vec; +} +# define VF32x4_ROUND_DEFINED +#endif +#if !defined(VF32x4_TRUNC_DEFINED) +VEC_FUNC_IMPL vf32x4 vf32x4_trunc(vf32x4 vec) +{ + vec.generic[0] = truncf(vec.generic[0]); + vec.generic[1] = truncf(vec.generic[1]); + vec.generic[2] = truncf(vec.generic[2]); + vec.generic[3] = truncf(vec.generic[3]); + return vec; +} +# define VF32x4_TRUNC_DEFINED +#endif #if !defined(VF32x8_SPLAT_DEFINED) VEC_FUNC_IMPL vf32x8 vf32x8_splat(vec_f32 x) { @@ -18887,14 +19683,14 @@ #if !defined(VF32x8_MOD_DEFINED) VEC_FUNC_IMPL vf32x8 vf32x8_mod(vf32x8 vec1, vf32x8 vec2) { - vec1.generic[0] = (vec2.generic[0] ? fmod(vec1.generic[0], vec2.generic[0]) : 0); - vec1.generic[1] = (vec2.generic[1] ? fmod(vec1.generic[1], vec2.generic[1]) : 0); - vec1.generic[2] = (vec2.generic[2] ? fmod(vec1.generic[2], vec2.generic[2]) : 0); - vec1.generic[3] = (vec2.generic[3] ? fmod(vec1.generic[3], vec2.generic[3]) : 0); - vec1.generic[4] = (vec2.generic[4] ? fmod(vec1.generic[4], vec2.generic[4]) : 0); - vec1.generic[5] = (vec2.generic[5] ? fmod(vec1.generic[5], vec2.generic[5]) : 0); - vec1.generic[6] = (vec2.generic[6] ? fmod(vec1.generic[6], vec2.generic[6]) : 0); - vec1.generic[7] = (vec2.generic[7] ? fmod(vec1.generic[7], vec2.generic[7]) : 0); + vec1.generic[0] = (vec2.generic[0] ? fmodf(vec1.generic[0], vec2.generic[0]) : 0); + vec1.generic[1] = (vec2.generic[1] ? fmodf(vec1.generic[1], vec2.generic[1]) : 0); + vec1.generic[2] = (vec2.generic[2] ? fmodf(vec1.generic[2], vec2.generic[2]) : 0); + vec1.generic[3] = (vec2.generic[3] ? fmodf(vec1.generic[3], vec2.generic[3]) : 0); + vec1.generic[4] = (vec2.generic[4] ? fmodf(vec1.generic[4], vec2.generic[4]) : 0); + vec1.generic[5] = (vec2.generic[5] ? fmodf(vec1.generic[5], vec2.generic[5]) : 0); + vec1.generic[6] = (vec2.generic[6] ? fmodf(vec1.generic[6], vec2.generic[6]) : 0); + vec1.generic[7] = (vec2.generic[7] ? fmodf(vec1.generic[7], vec2.generic[7]) : 0); return vec1; } # define VF32x8_MOD_DEFINED @@ -19019,6 +19815,66 @@ } # define VF32x8_MAX_DEFINED #endif +#if !defined(VF32x8_FLOOR_DEFINED) +VEC_FUNC_IMPL vf32x8 vf32x8_floor(vf32x8 vec) +{ + vec.generic[0] = floorf(vec.generic[0]); + vec.generic[1] = floorf(vec.generic[1]); + vec.generic[2] = floorf(vec.generic[2]); + vec.generic[3] = floorf(vec.generic[3]); + vec.generic[4] = floorf(vec.generic[4]); + vec.generic[5] = floorf(vec.generic[5]); + vec.generic[6] = floorf(vec.generic[6]); + vec.generic[7] = floorf(vec.generic[7]); + return vec; +} +# define VF32x8_FLOOR_DEFINED +#endif +#if !defined(VF32x8_CEIL_DEFINED) +VEC_FUNC_IMPL vf32x8 vf32x8_ceil(vf32x8 vec) +{ + vec.generic[0] = ceilf(vec.generic[0]); + vec.generic[1] = ceilf(vec.generic[1]); + vec.generic[2] = ceilf(vec.generic[2]); + vec.generic[3] = ceilf(vec.generic[3]); + vec.generic[4] = ceilf(vec.generic[4]); + vec.generic[5] = ceilf(vec.generic[5]); + vec.generic[6] = ceilf(vec.generic[6]); + vec.generic[7] = ceilf(vec.generic[7]); + return vec; +} +# define VF32x8_CEIL_DEFINED +#endif +#if !defined(VF32x8_ROUND_DEFINED) +VEC_FUNC_IMPL vf32x8 vf32x8_round(vf32x8 vec) +{ + vec.generic[0] = roundf(vec.generic[0]); + vec.generic[1] = roundf(vec.generic[1]); + vec.generic[2] = roundf(vec.generic[2]); + vec.generic[3] = roundf(vec.generic[3]); + vec.generic[4] = roundf(vec.generic[4]); + vec.generic[5] = roundf(vec.generic[5]); + vec.generic[6] = roundf(vec.generic[6]); + vec.generic[7] = roundf(vec.generic[7]); + return vec; +} +# define VF32x8_ROUND_DEFINED +#endif +#if !defined(VF32x8_TRUNC_DEFINED) +VEC_FUNC_IMPL vf32x8 vf32x8_trunc(vf32x8 vec) +{ + vec.generic[0] = truncf(vec.generic[0]); + vec.generic[1] = truncf(vec.generic[1]); + vec.generic[2] = truncf(vec.generic[2]); + vec.generic[3] = truncf(vec.generic[3]); + vec.generic[4] = truncf(vec.generic[4]); + vec.generic[5] = truncf(vec.generic[5]); + vec.generic[6] = truncf(vec.generic[6]); + vec.generic[7] = truncf(vec.generic[7]); + return vec; +} +# define VF32x8_TRUNC_DEFINED +#endif #if !defined(VF32x16_SPLAT_DEFINED) VEC_FUNC_IMPL vf32x16 vf32x16_splat(vec_f32 x) { @@ -19170,22 +20026,22 @@ #if !defined(VF32x16_MOD_DEFINED) VEC_FUNC_IMPL vf32x16 vf32x16_mod(vf32x16 vec1, vf32x16 vec2) { - vec1.generic[0] = (vec2.generic[0] ? fmod(vec1.generic[0], vec2.generic[0]) : 0); - vec1.generic[1] = (vec2.generic[1] ? fmod(vec1.generic[1], vec2.generic[1]) : 0); - vec1.generic[2] = (vec2.generic[2] ? fmod(vec1.generic[2], vec2.generic[2]) : 0); - vec1.generic[3] = (vec2.generic[3] ? fmod(vec1.generic[3], vec2.generic[3]) : 0); - vec1.generic[4] = (vec2.generic[4] ? fmod(vec1.generic[4], vec2.generic[4]) : 0); - vec1.generic[5] = (vec2.generic[5] ? fmod(vec1.generic[5], vec2.generic[5]) : 0); - vec1.generic[6] = (vec2.generic[6] ? fmod(vec1.generic[6], vec2.generic[6]) : 0); - vec1.generic[7] = (vec2.generic[7] ? fmod(vec1.generic[7], vec2.generic[7]) : 0); - vec1.generic[8] = (vec2.generic[8] ? fmod(vec1.generic[8], vec2.generic[8]) : 0); - vec1.generic[9] = (vec2.generic[9] ? fmod(vec1.generic[9], vec2.generic[9]) : 0); - vec1.generic[10] = (vec2.generic[10] ? fmod(vec1.generic[10], vec2.generic[10]) : 0); - vec1.generic[11] = (vec2.generic[11] ? fmod(vec1.generic[11], vec2.generic[11]) : 0); - vec1.generic[12] = (vec2.generic[12] ? fmod(vec1.generic[12], vec2.generic[12]) : 0); - vec1.generic[13] = (vec2.generic[13] ? fmod(vec1.generic[13], vec2.generic[13]) : 0); - vec1.generic[14] = (vec2.generic[14] ? fmod(vec1.generic[14], vec2.generic[14]) : 0); - vec1.generic[15] = (vec2.generic[15] ? fmod(vec1.generic[15], vec2.generic[15]) : 0); + vec1.generic[0] = (vec2.generic[0] ? fmodf(vec1.generic[0], vec2.generic[0]) : 0); + vec1.generic[1] = (vec2.generic[1] ? fmodf(vec1.generic[1], vec2.generic[1]) : 0); + vec1.generic[2] = (vec2.generic[2] ? fmodf(vec1.generic[2], vec2.generic[2]) : 0); + vec1.generic[3] = (vec2.generic[3] ? fmodf(vec1.generic[3], vec2.generic[3]) : 0); + vec1.generic[4] = (vec2.generic[4] ? fmodf(vec1.generic[4], vec2.generic[4]) : 0); + vec1.generic[5] = (vec2.generic[5] ? fmodf(vec1.generic[5], vec2.generic[5]) : 0); + vec1.generic[6] = (vec2.generic[6] ? fmodf(vec1.generic[6], vec2.generic[6]) : 0); + vec1.generic[7] = (vec2.generic[7] ? fmodf(vec1.generic[7], vec2.generic[7]) : 0); + vec1.generic[8] = (vec2.generic[8] ? fmodf(vec1.generic[8], vec2.generic[8]) : 0); + vec1.generic[9] = (vec2.generic[9] ? fmodf(vec1.generic[9], vec2.generic[9]) : 0); + vec1.generic[10] = (vec2.generic[10] ? fmodf(vec1.generic[10], vec2.generic[10]) : 0); + vec1.generic[11] = (vec2.generic[11] ? fmodf(vec1.generic[11], vec2.generic[11]) : 0); + vec1.generic[12] = (vec2.generic[12] ? fmodf(vec1.generic[12], vec2.generic[12]) : 0); + vec1.generic[13] = (vec2.generic[13] ? fmodf(vec1.generic[13], vec2.generic[13]) : 0); + vec1.generic[14] = (vec2.generic[14] ? fmodf(vec1.generic[14], vec2.generic[14]) : 0); + vec1.generic[15] = (vec2.generic[15] ? fmodf(vec1.generic[15], vec2.generic[15]) : 0); return vec1; } # define VF32x16_MOD_DEFINED @@ -19374,6 +20230,98 @@ } # define VF32x16_MAX_DEFINED #endif +#if !defined(VF32x16_FLOOR_DEFINED) +VEC_FUNC_IMPL vf32x16 vf32x16_floor(vf32x16 vec) +{ + vec.generic[0] = floorf(vec.generic[0]); + vec.generic[1] = floorf(vec.generic[1]); + vec.generic[2] = floorf(vec.generic[2]); + vec.generic[3] = floorf(vec.generic[3]); + vec.generic[4] = floorf(vec.generic[4]); + vec.generic[5] = floorf(vec.generic[5]); + vec.generic[6] = floorf(vec.generic[6]); + vec.generic[7] = floorf(vec.generic[7]); + vec.generic[8] = floorf(vec.generic[8]); + vec.generic[9] = floorf(vec.generic[9]); + vec.generic[10] = floorf(vec.generic[10]); + vec.generic[11] = floorf(vec.generic[11]); + vec.generic[12] = floorf(vec.generic[12]); + vec.generic[13] = floorf(vec.generic[13]); + vec.generic[14] = floorf(vec.generic[14]); + vec.generic[15] = floorf(vec.generic[15]); + return vec; +} +# define VF32x16_FLOOR_DEFINED +#endif +#if !defined(VF32x16_CEIL_DEFINED) +VEC_FUNC_IMPL vf32x16 vf32x16_ceil(vf32x16 vec) +{ + vec.generic[0] = ceilf(vec.generic[0]); + vec.generic[1] = ceilf(vec.generic[1]); + vec.generic[2] = ceilf(vec.generic[2]); + vec.generic[3] = ceilf(vec.generic[3]); + vec.generic[4] = ceilf(vec.generic[4]); + vec.generic[5] = ceilf(vec.generic[5]); + vec.generic[6] = ceilf(vec.generic[6]); + vec.generic[7] = ceilf(vec.generic[7]); + vec.generic[8] = ceilf(vec.generic[8]); + vec.generic[9] = ceilf(vec.generic[9]); + vec.generic[10] = ceilf(vec.generic[10]); + vec.generic[11] = ceilf(vec.generic[11]); + vec.generic[12] = ceilf(vec.generic[12]); + vec.generic[13] = ceilf(vec.generic[13]); + vec.generic[14] = ceilf(vec.generic[14]); + vec.generic[15] = ceilf(vec.generic[15]); + return vec; +} +# define VF32x16_CEIL_DEFINED +#endif +#if !defined(VF32x16_ROUND_DEFINED) +VEC_FUNC_IMPL vf32x16 vf32x16_round(vf32x16 vec) +{ + vec.generic[0] = roundf(vec.generic[0]); + vec.generic[1] = roundf(vec.generic[1]); + vec.generic[2] = roundf(vec.generic[2]); + vec.generic[3] = roundf(vec.generic[3]); + vec.generic[4] = roundf(vec.generic[4]); + vec.generic[5] = roundf(vec.generic[5]); + vec.generic[6] = roundf(vec.generic[6]); + vec.generic[7] = roundf(vec.generic[7]); + vec.generic[8] = roundf(vec.generic[8]); + vec.generic[9] = roundf(vec.generic[9]); + vec.generic[10] = roundf(vec.generic[10]); + vec.generic[11] = roundf(vec.generic[11]); + vec.generic[12] = roundf(vec.generic[12]); + vec.generic[13] = roundf(vec.generic[13]); + vec.generic[14] = roundf(vec.generic[14]); + vec.generic[15] = roundf(vec.generic[15]); + return vec; +} +# define VF32x16_ROUND_DEFINED +#endif +#if !defined(VF32x16_TRUNC_DEFINED) +VEC_FUNC_IMPL vf32x16 vf32x16_trunc(vf32x16 vec) +{ + vec.generic[0] = truncf(vec.generic[0]); + vec.generic[1] = truncf(vec.generic[1]); + vec.generic[2] = truncf(vec.generic[2]); + vec.generic[3] = truncf(vec.generic[3]); + vec.generic[4] = truncf(vec.generic[4]); + vec.generic[5] = truncf(vec.generic[5]); + vec.generic[6] = truncf(vec.generic[6]); + vec.generic[7] = truncf(vec.generic[7]); + vec.generic[8] = truncf(vec.generic[8]); + vec.generic[9] = truncf(vec.generic[9]); + vec.generic[10] = truncf(vec.generic[10]); + vec.generic[11] = truncf(vec.generic[11]); + vec.generic[12] = truncf(vec.generic[12]); + vec.generic[13] = truncf(vec.generic[13]); + vec.generic[14] = truncf(vec.generic[14]); + vec.generic[15] = truncf(vec.generic[15]); + return vec; +} +# define VF32x16_TRUNC_DEFINED +#endif #if !defined(VF64x2_SPLAT_DEFINED) VEC_FUNC_IMPL vf64x2 vf64x2_splat(vec_f64 x) { @@ -19533,6 +20481,42 @@ } # define VF64x2_MAX_DEFINED #endif +#if !defined(VF64x2_FLOOR_DEFINED) +VEC_FUNC_IMPL vf64x2 vf64x2_floor(vf64x2 vec) +{ + vec.generic[0] = floor(vec.generic[0]); + vec.generic[1] = floor(vec.generic[1]); + return vec; +} +# define VF64x2_FLOOR_DEFINED +#endif +#if !defined(VF64x2_CEIL_DEFINED) +VEC_FUNC_IMPL vf64x2 vf64x2_ceil(vf64x2 vec) +{ + vec.generic[0] = ceil(vec.generic[0]); + vec.generic[1] = ceil(vec.generic[1]); + return vec; +} +# define VF64x2_CEIL_DEFINED +#endif +#if !defined(VF64x2_ROUND_DEFINED) +VEC_FUNC_IMPL vf64x2 vf64x2_round(vf64x2 vec) +{ + vec.generic[0] = round(vec.generic[0]); + vec.generic[1] = round(vec.generic[1]); + return vec; +} +# define VF64x2_ROUND_DEFINED +#endif +#if !defined(VF64x2_TRUNC_DEFINED) +VEC_FUNC_IMPL vf64x2 vf64x2_trunc(vf64x2 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + return vec; +} +# define VF64x2_TRUNC_DEFINED +#endif #if !defined(VF64x4_SPLAT_DEFINED) VEC_FUNC_IMPL vf64x4 vf64x4_splat(vec_f64 x) { @@ -19720,6 +20704,50 @@ } # define VF64x4_MAX_DEFINED #endif +#if !defined(VF64x4_FLOOR_DEFINED) +VEC_FUNC_IMPL vf64x4 vf64x4_floor(vf64x4 vec) +{ + vec.generic[0] = floor(vec.generic[0]); + vec.generic[1] = floor(vec.generic[1]); + vec.generic[2] = floor(vec.generic[2]); + vec.generic[3] = floor(vec.generic[3]); + return vec; +} +# define VF64x4_FLOOR_DEFINED +#endif +#if !defined(VF64x4_CEIL_DEFINED) +VEC_FUNC_IMPL vf64x4 vf64x4_ceil(vf64x4 vec) +{ + vec.generic[0] = ceil(vec.generic[0]); + vec.generic[1] = ceil(vec.generic[1]); + vec.generic[2] = ceil(vec.generic[2]); + vec.generic[3] = ceil(vec.generic[3]); + return vec; +} +# define VF64x4_CEIL_DEFINED +#endif +#if !defined(VF64x4_ROUND_DEFINED) +VEC_FUNC_IMPL vf64x4 vf64x4_round(vf64x4 vec) +{ + vec.generic[0] = round(vec.generic[0]); + vec.generic[1] = round(vec.generic[1]); + vec.generic[2] = round(vec.generic[2]); + vec.generic[3] = round(vec.generic[3]); + return vec; +} +# define VF64x4_ROUND_DEFINED +#endif +#if !defined(VF64x4_TRUNC_DEFINED) +VEC_FUNC_IMPL vf64x4 vf64x4_trunc(vf64x4 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + return vec; +} +# define VF64x4_TRUNC_DEFINED +#endif #if !defined(VF64x8_SPLAT_DEFINED) VEC_FUNC_IMPL vf64x8 vf64x8_splat(vec_f64 x) { @@ -19963,3 +20991,63 @@ } # define VF64x8_MAX_DEFINED #endif +#if !defined(VF64x8_FLOOR_DEFINED) +VEC_FUNC_IMPL vf64x8 vf64x8_floor(vf64x8 vec) +{ + vec.generic[0] = floor(vec.generic[0]); + vec.generic[1] = floor(vec.generic[1]); + vec.generic[2] = floor(vec.generic[2]); + vec.generic[3] = floor(vec.generic[3]); + vec.generic[4] = floor(vec.generic[4]); + vec.generic[5] = floor(vec.generic[5]); + vec.generic[6] = floor(vec.generic[6]); + vec.generic[7] = floor(vec.generic[7]); + return vec; +} +# define VF64x8_FLOOR_DEFINED +#endif +#if !defined(VF64x8_CEIL_DEFINED) +VEC_FUNC_IMPL vf64x8 vf64x8_ceil(vf64x8 vec) +{ + vec.generic[0] = ceil(vec.generic[0]); + vec.generic[1] = ceil(vec.generic[1]); + vec.generic[2] = ceil(vec.generic[2]); + vec.generic[3] = ceil(vec.generic[3]); + vec.generic[4] = ceil(vec.generic[4]); + vec.generic[5] = ceil(vec.generic[5]); + vec.generic[6] = ceil(vec.generic[6]); + vec.generic[7] = ceil(vec.generic[7]); + return vec; +} +# define VF64x8_CEIL_DEFINED +#endif +#if !defined(VF64x8_ROUND_DEFINED) +VEC_FUNC_IMPL vf64x8 vf64x8_round(vf64x8 vec) +{ + vec.generic[0] = round(vec.generic[0]); + vec.generic[1] = round(vec.generic[1]); + vec.generic[2] = round(vec.generic[2]); + vec.generic[3] = round(vec.generic[3]); + vec.generic[4] = round(vec.generic[4]); + vec.generic[5] = round(vec.generic[5]); + vec.generic[6] = round(vec.generic[6]); + vec.generic[7] = round(vec.generic[7]); + return vec; +} +# define VF64x8_ROUND_DEFINED +#endif +#if !defined(VF64x8_TRUNC_DEFINED) +VEC_FUNC_IMPL vf64x8 vf64x8_trunc(vf64x8 vec) +{ + vec.generic[0] = trunc(vec.generic[0]); + vec.generic[1] = trunc(vec.generic[1]); + vec.generic[2] = trunc(vec.generic[2]); + vec.generic[3] = trunc(vec.generic[3]); + vec.generic[4] = trunc(vec.generic[4]); + vec.generic[5] = trunc(vec.generic[5]); + vec.generic[6] = trunc(vec.generic[6]); + vec.generic[7] = trunc(vec.generic[7]); + return vec; +} +# define VF64x8_TRUNC_DEFINED +#endif
--- a/include/vec/mem.h Wed Apr 30 18:36:38 2025 -0400 +++ b/include/vec/mem.h Sat Aug 09 15:55:59 2025 -0400 @@ -27,7 +27,7 @@ #include "defs.h" -#define VEC_MALLOC_ALIGNMENT (256) +#define VEC_MALLOC_ALIGNMENT (64) VEC_STATIC_ASSERT(!(VEC_MALLOC_ALIGNMENT & (VEC_MALLOC_ALIGNMENT - 1)) && (VEC_MALLOC_ALIGNMENT > 0), @@ -35,7 +35,7 @@ typedef unsigned char vec_alignment_type; -VEC_STATIC_ASSERT(VEC_MALLOC_ALIGNMENT > VEC_MAX_OF_TYPE(vec_alignment_type), +VEC_STATIC_ASSERT(VEC_MALLOC_ALIGNMENT <= VEC_MAX_OF_TYPE(vec_alignment_type), "VEC_MALLOC_ALIGNMENT cannot fit in the pointer alignment data"); #define VEC_MALLOC_ADDITIONAL_SIZE (sizeof(vec_alignment_type) + (VEC_MALLOC_ALIGNMENT - 1))
--- a/test/test.c Wed Apr 30 18:36:38 2025 -0400 +++ b/test/test.c Sat Aug 09 15:55:59 2025 -0400 @@ -152,7 +152,9 @@ ret |= test_compare(); ret |= test_shift(); +#if 0 test_benchmark(); +#endif return ret; }
--- a/test/test_arith.h Wed Apr 30 18:36:38 2025 -0400 +++ b/test/test_arith.h Sat Aug 09 15:55:59 2025 -0400 @@ -25,6 +25,30 @@ return 0; \ } +#define CREATE_TEST_ONEPARAM(type, ctype, print, bits, size, op, equiv) \ + static int test_arith_v##type##bits##x##size##_##op(v##type##bits##x##size a) \ + { \ + V##ctype##bits##x##size##_ALIGNED_ARRAY(orig_a); \ + V##ctype##bits##x##size##_ALIGNED_ARRAY(orig_c); \ + \ + v##type##bits##x##size c = v##type##bits##x##size##_##op(a); \ + \ + v##type##bits##x##size##_store_aligned(a, orig_a); \ + v##type##bits##x##size##_store_aligned(c, orig_c); \ + \ + for (int i = 0; i < size; i++) { \ + if ((vec_##type##bits)(equiv) != orig_c[i]) { \ + fprintf(stderr, "v" #type #bits "x" #size "_" #op " test FAILED at index %d: (%s) [%" print "] does not equal result [%" print "]!\n", i, #equiv, (vec_##type##bits)(equiv), orig_c[i]); \ + print_v##type##bits##x##size(stderr,a); \ + print_v##type##bits##x##size(stderr,c); \ + fprintf(stderr, "\n"); \ + return 1; \ + } \ + } \ + \ + return 0; \ + } + #define CREATE_TEST(type, ctype, print, bits, size, op, equiv) \ CREATE_TEST_EX(type, ctype, print, bits, size, op, equiv, type, ctype) @@ -55,7 +79,11 @@ CREATE_TEST(f, F, "f", bits, size, mod, (orig_b[i]) ? (fmod(orig_a[i], orig_b[i])) : 0) \ CREATE_TEST(f, F, "f", bits, size, avg, (orig_a[i] + orig_b[i]) / 2) \ CREATE_TEST(f, F, "f", bits, size, min, (orig_a[i] < orig_b[i]) ? orig_a[i] : orig_b[i]) \ - CREATE_TEST(f, F, "f", bits, size, max, (orig_a[i] > orig_b[i]) ? orig_a[i] : orig_b[i]) + CREATE_TEST(f, F, "f", bits, size, max, (orig_a[i] > orig_b[i]) ? orig_a[i] : orig_b[i]) \ + CREATE_TEST_ONEPARAM(f, F, "f", bits, size, round, round(orig_a[i])) \ + CREATE_TEST_ONEPARAM(f, F, "f", bits, size, ceil, ceil(orig_a[i])) \ + CREATE_TEST_ONEPARAM(f, F, "f", bits, size, floor, floor(orig_a[i])) \ + CREATE_TEST_ONEPARAM(f, F, "f", bits, size, trunc, trunc(orig_a[i])) #define CREATE_TESTS(bits, size) \ CREATE_TESTS_INT(int, INT, /* nothing */, PRI##d##bits, bits, size) \ @@ -151,6 +179,10 @@ ret |= test_arith_v##type##bits##x##size##_min(a, b); \ ret |= test_arith_v##type##bits##x##size##_max(a, b); \ } \ + ret |= test_arith_v##type##bits##x##size##_floor(a); \ + ret |= test_arith_v##type##bits##x##size##_ceil(a); \ + ret |= test_arith_v##type##bits##x##size##_round(a); \ + ret |= test_arith_v##type##bits##x##size##_trunc(a); \ } RUN_TESTS(8, 2)