]>
gcc.gnu.org Git - gcc.git/blob - gcc/testsuite/gcc.target/powerpc/vsx-vector-6.h
a891b64e6faaed8228e1d1c625fe6de558f1bf6f
1 /* This test code is included into vsx-vector-6-be.c and vsx-vector-6-le.c.
2 The two files have the tests for the number of instructions generated for
7 void foo (vector
double *out
, vector
double *in
, vector
long *p_l
, vector
bool long *p_b
,
8 vector
unsigned char *p_uc
, int *i
, vector
float *p_f
,
9 vector
bool char *outbc
, vector
bool int *outbi
,
10 vector
bool short *outbsi
, vector
int *outsi
,
11 vector
unsigned int *outui
, vector
signed char *outsc
,
12 vector
unsigned char *outuc
)
14 vector
double in0
= in
[0];
15 vector
double in1
= in
[1];
16 vector
double in2
= in
[2];
17 vector
long inl
= *p_l
;
18 vector
bool long inb
= *p_b
;
19 vector
bool long long inbl0
;
20 vector
bool long long inbl1
;
21 vector
unsigned char uc
= *p_uc
;
27 vector
bool char inbc0
;
28 vector
bool char inbc1
;
29 vector
bool short inbs0
;
30 vector
bool short inbs1
;
31 vector
bool int inbi0
;
32 vector
bool int inbi1
;
33 vector
signed short int inssi0
, inssi1
;
34 vector
unsigned short int inusi0
, inusi1
;
35 vector
signed int insi0
, insi1
;
36 vector
unsigned int inui0
, inui1
;
37 vector
unsigned char inuc0
, inuc1
;
39 *out
++ = vec_abs (in0
);
40 *out
++ = vec_add (in0
, in1
);
41 *out
++ = vec_and (in0
, in1
);
42 *out
++ = vec_and (in0
, inb
);
43 *out
++ = vec_and (inb
, in0
);
44 *out
++ = vec_andc (in0
, in1
);
45 *out
++ = vec_andc (in0
, inb
);
46 *out
++ = vec_andc (inb
, in0
);
47 *out
++ = vec_andc (inbl0
, in0
);
48 *out
++ = vec_andc (in0
, inbl0
);
50 *out
++ = vec_ceil (in0
);
51 *p_b
++ = vec_cmpeq (in0
, in1
);
52 *p_b
++ = vec_cmpgt (in0
, in1
);
53 *p_b
++ = vec_cmpge (in0
, in1
);
54 *p_b
++ = vec_cmplt (in0
, in1
);
55 *p_b
++ = vec_cmple (in0
, in1
);
56 *out
++ = vec_div (in0
, in1
);
57 *out
++ = vec_floor (in0
);
58 *out
++ = vec_madd (in0
, in1
, in2
);
59 *out
++ = vec_msub (in0
, in1
, in2
);
60 *out
++ = vec_max (in0
, in1
);
61 *out
++ = vec_min (in0
, in1
);
62 *out
++ = vec_msub (in0
, in1
, in2
);
63 *out
++ = vec_mul (in0
, in1
);
64 *out
++ = vec_nearbyint (in0
);
65 *out
++ = vec_nmadd (in0
, in1
, in2
);
66 *out
++ = vec_nmsub (in0
, in1
, in2
);
67 *out
++ = vec_nor (in0
, in1
);
68 *out
++ = vec_or (in0
, in1
);
69 *out
++ = vec_or (in0
, inb
);
70 *out
++ = vec_or (inb
, in0
);
71 *out
++ = vec_perm (in0
, in1
, uc
);
72 *out
++ = vec_rint (in0
);
73 *out
++ = vec_sel (in0
, in1
, inl
);
74 *out
++ = vec_sel (in0
, in1
, inb
);
75 *out
++ = vec_sub (in0
, in1
);
76 *out
++ = vec_sqrt (in0
);
77 *out
++ = vec_trunc (in0
);
78 *out
++ = vec_xor (in0
, in1
);
79 *out
++ = vec_xor (in0
, inb
);
80 *out
++ = vec_xor (inb
, in0
);
82 *i
++ = vec_all_eq (in0
, in1
);
83 *i
++ = vec_all_ge (in0
, in1
);
84 *i
++ = vec_all_gt (in0
, in1
);
85 *i
++ = vec_all_le (in0
, in1
);
86 *i
++ = vec_all_lt (in0
, in1
);
87 *i
++ = vec_all_nan (in0
);
88 *i
++ = vec_all_ne (in0
, in1
);
89 *i
++ = vec_all_nge (in0
, in1
);
90 *i
++ = vec_all_ngt (in0
, in1
);
91 *i
++ = vec_all_nle (in0
, in1
);
92 *i
++ = vec_all_nlt (in0
, in1
);
93 *i
++ = vec_all_numeric (in0
);
94 *i
++ = vec_any_eq (in0
, in1
);
95 *i
++ = vec_any_ge (in0
, in1
);
96 *i
++ = vec_any_gt (in0
, in1
);
97 *i
++ = vec_any_le (in0
, in1
);
98 *i
++ = vec_any_lt (in0
, in1
);
99 *i
++ = vec_any_nan (in0
);
100 *i
++ = vec_any_ne (in0
, in1
);
101 *i
++ = vec_any_nge (in0
, in1
);
102 *i
++ = vec_any_ngt (in0
, in1
);
103 *i
++ = vec_any_nle (in0
, in1
);
104 *i
++ = vec_any_nlt (in0
, in1
);
105 *i
++ = vec_any_numeric (in0
);
107 *p_f
++ = vec_msub (inf0
, inf1
, inf2
);
108 *p_f
++ = vec_nmsub (inf0
, inf1
, inf2
);
109 *p_f
++ = vec_nmadd (inf0
, inf1
, inf2
);
110 *p_f
++ = vec_or (inf0
, inf1
);
111 *p_f
++ = vec_trunc (inf0
);
113 *out
++ = vec_or (inbl0
, in0
);
114 *out
++ = vec_or (in0
, inbl0
);
116 *out
++ = vec_nor (in0
, in1
);
118 *outbc
++ = vec_nor (inbc0
, inbc1
);
119 *outbc
++ = vec_andc (inbc0
, inbc1
);
120 *outbc
++ = vec_or (inbc0
, inbc1
);
122 *outuc
++ = vec_max (inuc0
, inuc1
);
124 *outbi
++ = vec_andc (inbi0
, inbi1
);
125 *outbsi
++ = vec_andc (inbs0
, inbs1
);
127 *outbsi
++ = vec_andc (inbs0
, inbs1
);
129 *outbi
++ = vec_nor (inbi0
, inbi1
);
130 *outbi
++ = vec_or (inbi0
, inbi1
);
132 *outbsi
++ = vec_nor (inbs0
, inbs1
);
133 *outbsi
++ = vec_or (inbs0
, inbs1
);
135 *outsi
++ = vec_msums(inssi0
, inssi1
, insi0
);
136 *outui
++ = vec_msums(inusi0
, inusi1
, inui0
);
138 *p_f
++ = vec_nor (inf0
, inf1
);
140 *p_f
++ = vec_andc (inf0
, inf1
);
141 *p_f
++ = vec_andc (inbi0
, inf0
);
142 *p_f
++ = vec_andc (inf0
, inbi0
);
144 *in
++ = vec_andc (inbl0
, in1
);
145 *in
++ = vec_andc (in0
, inbl1
);
153 vector
bool long *p_b
;
154 vector
unsigned char *p_uc
;
157 vector
bool char *outbc
;
158 vector
bool int *outbi
;
159 vector
bool short *outbsi
;
161 vector
unsigned int *outui
;
162 vector
signed char *outsc
;
163 vector
unsigned char *outuc
;
165 foo (out
, in
, p_l
, p_b
, p_uc
, i
, p_f
, outbc
,
166 outbi
, outbsi
, outsi
, outui
, outsc
, outuc
);
This page took 0.044006 seconds and 4 git commands to generate.