]>
gcc.gnu.org Git - gcc.git/blob - gcc/testsuite/gcc.target/powerpc/vsx-vector-6.h
1 /* This test code is included into vsx-vector-6.p7.c, vsx-vector-6.p8.c
2 and vsx-vector-6.p9.c. The .c files have the tests for the number
3 of instructions generated for each cpu type. */
14 vector
unsigned int ui
;
15 vector
unsigned short int us
;
16 vector
unsigned char uc
;
17 vector
bool long long bll
;
25 func_1op (opnd_t
*dst
, opnd_t
*src
)
27 dst
[0].d
= vec_abs (src
[0].d
);
28 dst
[1].d
= vec_ceil (src
[1].d
);
29 dst
[2].d
= vec_floor (src
[2].d
);
30 dst
[3].d
= vec_nearbyint (src
[3].d
);
31 dst
[4].d
= vec_rint (src
[4].d
);
32 dst
[5].d
= vec_sqrt (src
[5].d
);
33 dst
[6].d
= vec_trunc (src
[6].d
);
34 dst
[7].f
= vec_trunc (src
[7].f
);
38 func_2op (opnd_t
*dst
, opnd_t
*src0
, opnd_t
*src1
)
40 dst
[0].d
= vec_add (src0
[0].d
, src1
[0].d
);
41 dst
[1].d
= vec_div (src0
[1].d
, src1
[1].d
);
42 dst
[2].d
= vec_max (src0
[2].d
, src1
[2].d
);
43 dst
[3].uc
= vec_max (src0
[3].uc
, src1
[3].uc
);
44 dst
[4].d
= vec_min (src0
[4].d
, src1
[4].d
);
45 dst
[5].d
= vec_mul (src0
[5].d
, src1
[5].d
);
46 dst
[6].d
= vec_sub (src0
[6].d
, src1
[6].d
);
50 func_2lop (opnd_t
*dst
, opnd_t
*src0
, opnd_t
*src1
)
52 dst
[0].d
= vec_and (src0
[0].d
, src1
[0].d
);
53 dst
[1].d
= vec_and (src0
[1].d
, src1
[1].bl
);
54 dst
[2].d
= vec_and (src0
[2].bl
, src1
[2].d
);
56 dst
[3].d
= vec_andc (src0
[3].d
, src1
[3].d
);
57 dst
[4].d
= vec_andc (src0
[4].d
, src1
[4].bl
);
58 dst
[5].d
= vec_andc (src0
[5].bl
, src1
[5].d
);
59 dst
[6].d
= vec_andc (src0
[6].bll
, src1
[6].d
);
60 dst
[7].d
= vec_andc (src0
[7].d
, src1
[7].bll
);
61 dst
[8].bi
= vec_andc (src0
[8].bi
, src1
[8].bi
);
62 dst
[9].bs
= vec_andc (src0
[9].bs
, src1
[9].bs
);
63 dst
[10].bc
= vec_andc (src0
[10].bc
, src1
[10].bc
);
64 dst
[11].f
= vec_andc (src0
[11].f
, src1
[11].f
);
65 dst
[12].f
= vec_andc (src0
[12].bi
, src1
[12].f
);
66 dst
[13].f
= vec_andc (src0
[13].f
, src1
[13].bi
);
67 dst
[14].d
= vec_andc (src0
[14].bll
, src1
[14].d
);
68 dst
[15].d
= vec_andc (src0
[15].d
, src1
[15].bll
);
70 dst
[16].d
= vec_nor (src0
[16].d
, src1
[16].d
);
71 dst
[17].f
= vec_nor (src0
[17].f
, src1
[17].f
);
72 dst
[18].bi
= vec_nor (src0
[18].bi
, src1
[18].bi
);
73 dst
[19].bs
= vec_nor (src0
[19].bs
, src1
[19].bs
);
74 dst
[20].bc
= vec_nor (src0
[20].bc
, src1
[20].bc
);
76 dst
[21].d
= vec_or (src0
[21].d
, src1
[21].d
);
77 dst
[22].d
= vec_or (src0
[22].d
, src1
[22].bl
);
78 dst
[23].d
= vec_or (src0
[23].bl
, src1
[23].d
);
79 dst
[24].d
= vec_or (src0
[24].bll
, src1
[24].d
);
80 dst
[25].d
= vec_or (src0
[25].d
, src1
[25].bll
);
81 dst
[26].f
= vec_or (src0
[26].f
, src1
[26].f
);
82 dst
[27].bi
= vec_or (src0
[27].bi
, src1
[27].bi
);
83 dst
[28].bs
= vec_or (src0
[28].bs
, src1
[28].bs
);
84 dst
[29].bc
= vec_or (src0
[29].bc
, src1
[29].bc
);
86 dst
[30].d
= vec_xor (src0
[30].d
, src1
[30].d
);
87 dst
[31].d
= vec_xor (src0
[31].d
, src1
[31].bl
);
88 dst
[32].d
= vec_xor (src0
[32].bl
, src1
[32].d
);
92 func_cmp (opnd_t
*dst
, opnd_t
*src0
, opnd_t
*src1
)
94 dst
[0].bl
= vec_cmpeq (src0
[0].d
, src1
[0].d
);
95 dst
[1].bl
= vec_cmpgt (src0
[1].d
, src1
[1].d
);
96 dst
[2].bl
= vec_cmpge (src0
[2].d
, src1
[2].d
);
97 dst
[3].bl
= vec_cmplt (src0
[3].d
, src1
[3].d
);
98 dst
[4].bl
= vec_cmple (src0
[4].d
, src1
[4].d
);
102 func_all_cmp (int *dst
, opnd_t
*src0
, opnd_t
*src1
)
104 dst
[0] = vec_all_eq (src0
[0].d
, src1
[0].d
);
105 dst
[1] = vec_all_ge (src0
[1].d
, src1
[1].d
);
106 dst
[2] = vec_all_gt (src0
[2].d
, src1
[2].d
);
107 dst
[3] = vec_all_le (src0
[3].d
, src1
[3].d
);
108 dst
[4] = vec_all_lt (src0
[4].d
, src1
[4].d
);
109 dst
[5] = vec_all_nan (src0
[5].d
);
110 dst
[6] = vec_all_ne (src0
[6].d
, src1
[6].d
);
111 dst
[7] = vec_all_nge (src0
[7].d
, src1
[7].d
);
112 dst
[8] = vec_all_ngt (src0
[8].d
, src1
[8].d
);
113 dst
[9] = vec_all_nle (src0
[9].d
, src1
[9].d
);
114 dst
[10] = vec_all_nlt (src0
[10].d
, src1
[10].d
);
115 dst
[11] = vec_all_numeric (src0
[11].d
);
116 dst
[12] = vec_any_eq (src0
[12].d
, src1
[12].d
);
117 dst
[13] = vec_any_ge (src0
[13].d
, src1
[13].d
);
118 dst
[14] = vec_any_gt (src0
[14].d
, src1
[14].d
);
119 dst
[15] = vec_any_le (src0
[15].d
, src1
[15].d
);
120 dst
[16] = vec_any_lt (src0
[16].d
, src1
[16].d
);
121 dst
[17] = vec_any_nan (src0
[17].d
);
122 dst
[18] = vec_any_ne (src0
[18].d
, src1
[18].d
);
123 dst
[19] = vec_any_nge (src0
[19].d
, src1
[19].d
);
124 dst
[20] = vec_any_ngt (src0
[20].d
, src1
[20].d
);
125 dst
[21] = vec_any_nle (src0
[21].d
, src1
[21].d
);
126 dst
[22] = vec_any_nlt (src0
[22].d
, src1
[22].d
);
127 dst
[23] = vec_any_numeric (src0
[23].d
);
131 func_3op (opnd_t
*dst
, opnd_t
*src0
, opnd_t
*src1
, opnd_t
*src2
)
133 dst
[0].d
= vec_madd (src0
[0].d
, src1
[0].d
, src2
[0].d
);
134 dst
[1].d
= vec_msub (src0
[1].d
, src1
[1].d
, src2
[1].d
);
135 dst
[2].d
= vec_nmadd (src0
[2].d
, src1
[2].d
, src2
[2].d
);
136 dst
[3].d
= vec_nmsub (src0
[3].d
, src1
[3].d
, src2
[3].d
);
138 dst
[4].f
= vec_madd (src0
[4].f
, src1
[4].f
, src2
[4].f
);
139 dst
[5].f
= vec_msub (src0
[5].f
, src1
[5].f
, src2
[5].f
);
140 dst
[6].f
= vec_nmsub (src0
[6].f
, src1
[6].f
, src2
[6].f
);
141 dst
[7].f
= vec_nmadd (src0
[7].f
, src1
[7].f
, src2
[7].f
);
143 #if defined (__BIG_ENDIAN__) || defined (_ARCH_PWR9)
144 dst
[8].d
= vec_perm (src0
[8].d
, src1
[8].d
, src2
[8].uc
);
146 dst
[8].d
= vec_perm (src0
[8].d
, src1
[8].d
, ~src2
[8].uc
);
149 dst
[9].d
= vec_sel (src0
[9].d
, src1
[9].d
, src2
[9].d
);
150 dst
[10].d
= vec_sel (src0
[10].d
, src1
[10].d
, src2
[10].bl
);
152 dst
[11].si
= vec_msums(src0
[11].ss
, src1
[11].ss
, src2
[11].si
);
153 dst
[12].ui
= vec_msums(src0
[12].us
, src1
[12].us
, src2
[12].ui
);
This page took 0.047292 seconds and 5 git commands to generate.