Viewing file: pr92923-1.c (6.82 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do compile } */ /* { dg-require-effective-target powerpc_vsx_ok } */ /* { dg-options "-mvsx -O2 -fdump-tree-gimple" } */
/* Verify that overloaded built-ins for "and", "andc", "nor", "or" and "xor" do not produce VIEW_CONVERT_EXPR operations on their operands. Like so:
_1 = VIEW_CONVERT_EXPR<__vector signed int>(x); _2 = VIEW_CONVERT_EXPR<__vector signed int>(y); _3 = __builtin_altivec_vand (_1, _2); D.3245 = VIEW_CONVERT_EXPR<bcvec_t>(_3); */
typedef __attribute__((altivec(vector__))) __attribute__((altivec(bool__))) char bcvec_t; typedef __attribute__((altivec(vector__))) signed char scvec_t; typedef __attribute__((altivec(vector__))) unsigned char ucvec_t;
typedef __attribute__((altivec(vector__))) __attribute__((altivec(bool__))) short bsvec_t; typedef __attribute__((altivec(vector__))) signed short ssvec_t; typedef __attribute__((altivec(vector__))) unsigned short usvec_t;
typedef __attribute__((altivec(vector__))) __attribute__((altivec(bool__))) int bivec_t; typedef __attribute__((altivec(vector__))) signed int sivec_t; typedef __attribute__((altivec(vector__))) unsigned int uivec_t;
typedef __attribute__((altivec(vector__))) __attribute__((altivec(bool__))) long long bllvec_t; typedef __attribute__((altivec(vector__))) signed long long sllvec_t; typedef __attribute__((altivec(vector__))) unsigned long long ullvec_t;
typedef __attribute__((altivec(vector__))) double dvec_t; typedef __attribute__((altivec(vector__))) float fvec_t;
bcvec_t and_0 (bcvec_t x, bcvec_t y) { return __builtin_vec_and (x, y); }
scvec_t and_1 (scvec_t x, scvec_t y) { return __builtin_vec_and (x, y); }
ucvec_t and_2 (ucvec_t x, ucvec_t y) { return __builtin_vec_and (x, y); }
bsvec_t and_3 (bsvec_t x, bsvec_t y) { return __builtin_vec_and (x, y); }
ssvec_t and_4 (ssvec_t x, ssvec_t y) { return __builtin_vec_and (x, y); }
usvec_t and_5 (usvec_t x, usvec_t y) { return __builtin_vec_and (x, y); }
bivec_t and_6 (bivec_t x, bivec_t y) { return __builtin_vec_and (x, y); }
sivec_t and_7 (sivec_t x, sivec_t y) { return __builtin_vec_and (x, y); }
uivec_t and_8 (uivec_t x, uivec_t y) { return __builtin_vec_and (x, y); }
bllvec_t and_9 (bllvec_t x, bllvec_t y) { return __builtin_vec_and (x, y); }
sllvec_t and_10 (sllvec_t x, sllvec_t y) { return __builtin_vec_and (x, y); }
ullvec_t and_11 (ullvec_t x, ullvec_t y) { return __builtin_vec_and (x, y); }
dvec_t and_12 (dvec_t x, dvec_t y) { return __builtin_vec_and (x, y); }
fvec_t and_13 (fvec_t x, fvec_t y) { return __builtin_vec_and (x, y); }
bcvec_t andc_0 (bcvec_t x, bcvec_t y) { return __builtin_vec_andc (x, y); }
scvec_t andc_1 (scvec_t x, scvec_t y) { return __builtin_vec_andc (x, y); }
ucvec_t andc_2 (ucvec_t x, ucvec_t y) { return __builtin_vec_andc (x, y); }
bsvec_t andc_3 (bsvec_t x, bsvec_t y) { return __builtin_vec_andc (x, y); }
ssvec_t andc_4 (ssvec_t x, ssvec_t y) { return __builtin_vec_andc (x, y); }
usvec_t andc_5 (usvec_t x, usvec_t y) { return __builtin_vec_andc (x, y); }
bivec_t andc_6 (bivec_t x, bivec_t y) { return __builtin_vec_andc (x, y); }
sivec_t andc_7 (sivec_t x, sivec_t y) { return __builtin_vec_andc (x, y); }
uivec_t andc_8 (uivec_t x, uivec_t y) { return __builtin_vec_andc (x, y); }
bllvec_t andc_9 (bllvec_t x, bllvec_t y) { return __builtin_vec_andc (x, y); }
sllvec_t andc_10 (sllvec_t x, sllvec_t y) { return __builtin_vec_andc (x, y); }
ullvec_t andc_11 (ullvec_t x, ullvec_t y) { return __builtin_vec_andc (x, y); }
dvec_t andc_12 (dvec_t x, dvec_t y) { return __builtin_vec_andc (x, y); }
fvec_t andc_13 (fvec_t x, fvec_t y) { return __builtin_vec_andc (x, y); }
bcvec_t nor_0 (bcvec_t x, bcvec_t y) { return __builtin_vec_nor (x, y); }
scvec_t nor_1 (scvec_t x, scvec_t y) { return __builtin_vec_nor (x, y); }
ucvec_t nor_2 (ucvec_t x, ucvec_t y) { return __builtin_vec_nor (x, y); }
bsvec_t nor_3 (bsvec_t x, bsvec_t y) { return __builtin_vec_nor (x, y); }
ssvec_t nor_4 (ssvec_t x, ssvec_t y) { return __builtin_vec_nor (x, y); }
usvec_t nor_5 (usvec_t x, usvec_t y) { return __builtin_vec_nor (x, y); }
bivec_t nor_6 (bivec_t x, bivec_t y) { return __builtin_vec_nor (x, y); }
sivec_t nor_7 (sivec_t x, sivec_t y) { return __builtin_vec_nor (x, y); }
uivec_t nor_8 (uivec_t x, uivec_t y) { return __builtin_vec_nor (x, y); }
bllvec_t nor_9 (bllvec_t x, bllvec_t y) { return __builtin_vec_nor (x, y); }
sllvec_t nor_10 (sllvec_t x, sllvec_t y) { return __builtin_vec_nor (x, y); }
ullvec_t nor_11 (ullvec_t x, ullvec_t y) { return __builtin_vec_nor (x, y); }
dvec_t nor_12 (dvec_t x, dvec_t y) { return __builtin_vec_nor (x, y); }
fvec_t nor_13 (fvec_t x, fvec_t y) { return __builtin_vec_nor (x, y); }
bcvec_t or_0 (bcvec_t x, bcvec_t y) { return __builtin_vec_or (x, y); }
scvec_t or_1 (scvec_t x, scvec_t y) { return __builtin_vec_or (x, y); }
ucvec_t or_2 (ucvec_t x, ucvec_t y) { return __builtin_vec_or (x, y); }
bsvec_t or_3 (bsvec_t x, bsvec_t y) { return __builtin_vec_or (x, y); }
ssvec_t or_4 (ssvec_t x, ssvec_t y) { return __builtin_vec_or (x, y); }
usvec_t or_5 (usvec_t x, usvec_t y) { return __builtin_vec_or (x, y); }
bivec_t or_6 (bivec_t x, bivec_t y) { return __builtin_vec_or (x, y); }
sivec_t or_7 (sivec_t x, sivec_t y) { return __builtin_vec_or (x, y); }
uivec_t or_8 (uivec_t x, uivec_t y) { return __builtin_vec_or (x, y); }
bllvec_t or_9 (bllvec_t x, bllvec_t y) { return __builtin_vec_or (x, y); }
sllvec_t or_10 (sllvec_t x, sllvec_t y) { return __builtin_vec_or (x, y); }
ullvec_t or_11 (ullvec_t x, ullvec_t y) { return __builtin_vec_or (x, y); }
dvec_t or_12 (dvec_t x, dvec_t y) { return __builtin_vec_or (x, y); }
fvec_t or_13 (fvec_t x, fvec_t y) { return __builtin_vec_or (x, y); }
bcvec_t xor_0 (bcvec_t x, bcvec_t y) { return __builtin_vec_xor (x, y); }
scvec_t xor_1 (scvec_t x, scvec_t y) { return __builtin_vec_xor (x, y); }
ucvec_t xor_2 (ucvec_t x, ucvec_t y) { return __builtin_vec_xor (x, y); }
bsvec_t xor_3 (bsvec_t x, bsvec_t y) { return __builtin_vec_xor (x, y); }
ssvec_t xor_4 (ssvec_t x, ssvec_t y) { return __builtin_vec_xor (x, y); }
usvec_t xor_5 (usvec_t x, usvec_t y) { return __builtin_vec_xor (x, y); }
bivec_t xor_6 (bivec_t x, bivec_t y) { return __builtin_vec_xor (x, y); }
sivec_t xor_7 (sivec_t x, sivec_t y) { return __builtin_vec_xor (x, y); }
uivec_t xor_8 (uivec_t x, uivec_t y) { return __builtin_vec_xor (x, y); }
bllvec_t xor_9 (bllvec_t x, bllvec_t y) { return __builtin_vec_xor (x, y); }
sllvec_t xor_10 (sllvec_t x, sllvec_t y) { return __builtin_vec_xor (x, y); }
ullvec_t xor_11 (ullvec_t x, ullvec_t y) { return __builtin_vec_xor (x, y); }
dvec_t xor_12 (dvec_t x, dvec_t y) { return __builtin_vec_xor (x, y); }
fvec_t xor_13 (fvec_t x, fvec_t y) { return __builtin_vec_xor (x, y); }
/* { dg-final { scan-tree-dump-not "VIEW_CONVERT_EXPR" "gimple" } } */
|