1/* { dg-do compile } */ 2#include <altivec.h> 3extern void fu32(vector unsigned int, vector unsigned int, 4 vector unsigned int, vector unsigned int); 5void fxu32(vector unsigned int u32a, vector unsigned int u32b, 6 vector unsigned int u32c, vector unsigned int u32d) 7{ 8 fu32 (u32a, 9 u32b, 10 u32c, 11 vec_avg(u32d, u32d)); 12 fu32 (vec_or (u32a, u32a), 13 vec_and (u32b, u32b), 14 vec_max (u32c, u32c), 15 vec_min (u32d, u32d)); 16 fu32 (vec_sld (u32a, u32a, 0), 17 vec_sld (u32b, u32b, 0), 18 vec_sld (u32c, u32c, 0), 19 vec_sld (u32d, u32d, 0)); 20 fu32 (((vector unsigned int){0,0,0,0}), 21 ((vector unsigned int){0,0,0,0}), 22 ((vector unsigned int){0,0,0,0}), 23 ((vector unsigned int){0,0,0,0})); 24 fu32 (vec_xor(u32a, u32a), 25 vec_andc(u32b, u32b), 26 vec_sub(u32c, u32c), 27 vec_subs(u32d, u32d)); 28 fu32 (vec_splat_u32(0), 29 vec_splat_u32(0), 30 vec_splat_u32(0), 31 vec_splat_u32(0)); 32 fu32 (((vector unsigned int){0xffffffff,0xffffffff,0xffffffff,0xffffffff}), 33 ((vector unsigned int){0xffffffff,0xffffffff,0xffffffff,0xffffffff}), 34 ((vector unsigned int){0xffffffff,0xffffffff,0xffffffff,0xffffffff}), 35 ((vector unsigned int){0xffffffff,0xffffffff,0xffffffff,0xffffffff})); 36 fu32 (vec_splat_u32(-1), 37 vec_splat_u32(-1), 38 vec_splat_u32(-1), 39 vec_splat_u32(-1)); 40 fu32 ((vector unsigned int)vec_cmpeq(u32a, u32a), 41 (vector unsigned int)vec_cmpeq(u32b, u32b), 42 (vector unsigned int)vec_cmpeq(u32c, u32c), 43 (vector unsigned int)vec_cmpeq(u32d, u32d)); 44} 45 46extern void fu16(vector unsigned short, vector unsigned short, 47 vector unsigned short, vector unsigned short); 48void fxu16(vector unsigned short u16a, vector unsigned short u16b, 49 vector unsigned short u16c, vector unsigned short u16d) 50{ 51 fu16 (u16a, 52 u16b, 53 u16c, 54 vec_avg(u16d, u16d)); 55 fu16 (vec_or (u16a, u16a), 56 vec_and (u16b, u16b), 57 vec_max (u16c, u16c), 58 vec_min (u16d, u16d)); 59 fu16 (vec_sld (u16a, u16a, 0), 60 vec_sld (u16b, u16b, 0), 61 vec_sld (u16c, u16c, 0), 62 vec_sld (u16d, u16d, 0)); 63 fu16 (((vector unsigned short){0,0,0,0,0,0,0,0}), 64 ((vector unsigned short){0,0,0,0,0,0,0,0}), 65 ((vector unsigned short){0,0,0,0,0,0,0,0}), 66 ((vector unsigned short){0,0,0,0,0,0,0,0})); 67 fu16 (vec_xor(u16a, u16a), 68 vec_andc(u16b, u16b), 69 vec_sub(u16c, u16c), 70 vec_subs(u16d, u16d)); 71 fu16 (vec_splat_u16(0), 72 vec_splat_u16(0), 73 vec_splat_u16(0), 74 vec_splat_u16(0)); 75 fu16 (((vector unsigned short){0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}), 76 ((vector unsigned short){0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}), 77 ((vector unsigned short){0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}), 78 ((vector unsigned short){0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff})); 79 fu16 (vec_splat_u16(-1), 80 vec_splat_u16(-1), 81 vec_splat_u16(-1), 82 vec_splat_u16(-1)); 83 fu16 ((vector unsigned short)vec_cmpeq(u16a, u16a), 84 (vector unsigned short)vec_cmpeq(u16b, u16b), 85 (vector unsigned short)vec_cmpeq(u16c, u16c), 86 (vector unsigned short)vec_cmpeq(u16d, u16d)); 87} 88 89extern void fu8(vector unsigned char, vector unsigned char, 90 vector unsigned char, vector unsigned char); 91void fxu8(vector unsigned char u8a, vector unsigned char u8b, 92 vector unsigned char u8c, vector unsigned char u8d) 93{ 94 fu8 (u8a, 95 u8b, 96 u8c, 97 vec_avg(u8d, u8d)); 98 fu8 (vec_or (u8a, u8a), 99 vec_and (u8b, u8b), 100 vec_max (u8c, u8c), 101 vec_min (u8d, u8d)); 102 fu8 (vec_sld (u8a, u8a, 0), 103 vec_sld (u8b, u8b, 0), 104 vec_sld (u8c, u8c, 0), 105 vec_sld (u8d, u8d, 0)); 106 fu8 (((vector unsigned char){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}), 107 ((vector unsigned char){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}), 108 ((vector unsigned char){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}), 109 ((vector unsigned char){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); 110 fu8 (vec_xor(u8a, u8a), 111 vec_andc(u8b, u8b), 112 vec_sub(u8c, u8c), 113 vec_subs(u8d, u8d)); 114 fu8 (vec_splat_u8(0), 115 vec_splat_u8(0), 116 vec_splat_u8(0), 117 vec_splat_u8(0)); 118 fu8 (((vector unsigned char){0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}), 119 ((vector unsigned char){0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}), 120 ((vector unsigned char){0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}), 121 ((vector unsigned char){0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff})); 122 fu8 (vec_splat_u8(-1), 123 vec_splat_u8(-1), 124 vec_splat_u8(-1), 125 vec_splat_u8(-1)); 126 fu8 ((vector unsigned char)vec_cmpeq(u8a, u8a), 127 (vector unsigned char)vec_cmpeq(u8b, u8b), 128 (vector unsigned char)vec_cmpeq(u8c, u8c), 129 (vector unsigned char)vec_cmpeq(u8d, u8d)); 130} 131 132extern void fs32(vector signed int, vector signed int, 133 vector signed int, vector signed int); 134void fxs32(vector signed int s32a, vector signed int s32b, 135 vector signed int s32c, vector signed int s32d) 136{ 137 fs32 (s32a, 138 s32b, 139 s32c, 140 vec_avg(s32d, s32d)); 141 fs32 (vec_or (s32a, s32a), 142 vec_and (s32b, s32b), 143 vec_max (s32c, s32c), 144 vec_min (s32d, s32d)); 145 fs32 (vec_sld (s32a, s32a, 0), 146 vec_sld (s32b, s32b, 0), 147 vec_sld (s32c, s32c, 0), 148 vec_sld (s32d, s32d, 0)); 149 fs32 (((vector signed int){0,0,0,0}), 150 ((vector signed int){0,0,0,0}), 151 ((vector signed int){0,0,0,0}), 152 ((vector signed int){0,0,0,0})); 153 fs32 (vec_xor(s32a, s32a), 154 vec_andc(s32b, s32b), 155 vec_sub(s32c, s32c), 156 vec_subs(s32d, s32d)); 157 fs32 (vec_splat_s32(0), 158 vec_splat_s32(0), 159 vec_splat_s32(0), 160 vec_splat_s32(0)); 161 fs32 (((vector signed int){-1,-1,-1,-1}), 162 ((vector signed int){-1,-1,-1,-1}), 163 ((vector signed int){-1,-1,-1,-1}), 164 ((vector signed int){-1,-1,-1,-1})); 165 fs32 (vec_splat_s32(-1), 166 vec_splat_s32(-1), 167 vec_splat_s32(-1), 168 vec_splat_s32(-1)); 169 fs32 ((vector signed int)vec_cmpeq(s32a, s32a), 170 (vector signed int)vec_cmpeq(s32b, s32b), 171 (vector signed int)vec_cmpeq(s32c, s32c), 172 (vector signed int)vec_cmpeq(s32d, s32d)); 173} 174 175extern void fs16(vector signed short, vector signed short, 176 vector signed short, vector signed short); 177void fxs16(vector signed short s16a, vector signed short s16b, 178 vector signed short s16c, vector signed short s16d) 179{ 180 fs16 (s16a, 181 s16b, 182 s16c, 183 vec_avg(s16d, s16d)); 184 fs16 (vec_or (s16a, s16a), 185 vec_and (s16b, s16b), 186 vec_max (s16c, s16c), 187 vec_min (s16d, s16d)); 188 fs16 (vec_sld (s16a, s16a, 0), 189 vec_sld (s16b, s16b, 0), 190 vec_sld (s16c, s16c, 0), 191 vec_sld (s16d, s16d, 0)); 192 fs16 (((vector signed short){0,0,0,0,0,0,0,0}), 193 ((vector signed short){0,0,0,0,0,0,0,0}), 194 ((vector signed short){0,0,0,0,0,0,0,0}), 195 ((vector signed short){0,0,0,0,0,0,0,0})); 196 fs16 (vec_xor(s16a, s16a), 197 vec_andc(s16b, s16b), 198 vec_sub(s16c, s16c), 199 vec_subs(s16d, s16d)); 200 fs16 (vec_splat_s16(0), 201 vec_splat_s16(0), 202 vec_splat_s16(0), 203 vec_splat_s16(0)); 204 fs16 (((vector signed short){-1,-1,-1,-1,-1,-1,-1,-1}), 205 ((vector signed short){-1,-1,-1,-1,-1,-1,-1,-1}), 206 ((vector signed short){-1,-1,-1,-1,-1,-1,-1,-1}), 207 ((vector signed short){-1,-1,-1,-1,-1,-1,-1,-1})); 208 fs16 (vec_splat_s16(-1), 209 vec_splat_s16(-1), 210 vec_splat_s16(-1), 211 vec_splat_s16(-1)); 212 fs16 ((vector signed short)vec_cmpeq(s16a, s16a), 213 (vector signed short)vec_cmpeq(s16b, s16b), 214 (vector signed short)vec_cmpeq(s16c, s16c), 215 (vector signed short)vec_cmpeq(s16d, s16d)); 216} 217 218extern void fs8(vector signed char, vector signed char, 219 vector signed char, vector signed char); 220void fxs8(vector signed char s8a, vector signed char s8b, 221 vector signed char s8c, vector signed char s8d) 222{ 223 fs8 (s8a, 224 s8b, 225 s8c, 226 vec_avg(s8d, s8d)); 227 fs8 (vec_or (s8a, s8a), 228 vec_and (s8b, s8b), 229 vec_max (s8c, s8c), 230 vec_min (s8d, s8d)); 231 fs8 (vec_sld (s8a, s8a, 0), 232 vec_sld (s8b, s8b, 0), 233 vec_sld (s8c, s8c, 0), 234 vec_sld (s8d, s8d, 0)); 235 fs8 (((vector signed char){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}), 236 ((vector signed char){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}), 237 ((vector signed char){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}), 238 ((vector signed char){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); 239 fs8 (vec_xor(s8a, s8a), 240 vec_andc(s8b, s8b), 241 vec_sub(s8c, s8c), 242 vec_subs(s8d, s8d)); 243 fs8 (vec_splat_s8(0), 244 vec_splat_s8(0), 245 vec_splat_s8(0), 246 vec_splat_s8(0)); 247 fs8 (((vector signed char){-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}), 248 ((vector signed char){-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}), 249 ((vector signed char){-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}), 250 ((vector signed char){-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1})); 251 fs8 (vec_splat_s8(-1), 252 vec_splat_s8(-1), 253 vec_splat_s8(-1), 254 vec_splat_s8(-1)); 255 fs8 ((vector signed char)vec_cmpeq(s8a, s8a), 256 (vector signed char)vec_cmpeq(s8b, s8b), 257 (vector signed char)vec_cmpeq(s8c, s8c), 258 (vector signed char)vec_cmpeq(s8d, s8d)); 259} 260 261void fu32(vector unsigned int a, vector unsigned int b, 262 vector unsigned int c, vector unsigned int d) 263{ 264} 265 266void fu16(vector unsigned short a, vector unsigned short b, 267 vector unsigned short c, vector unsigned short d) 268{ 269} 270 271void fu8(vector unsigned char a, vector unsigned char b, 272 vector unsigned char c, vector unsigned char d) 273{ 274} 275 276void fs32(vector signed int a, vector signed int b, 277 vector signed int c, vector signed int d) 278{ 279} 280 281void fs16(vector signed short a, vector signed short b, 282 vector signed short c, vector signed short d) 283{ 284} 285 286void fs8(vector signed char a, vector signed char b, 287 vector signed char c, vector signed char d) 288{ 289} 290