Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/vect/slp-reduc-sad.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children | 1830386684a0 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* { dg-require-effective-target vect_usad_char } */ | |
2 | |
3 #include "tree-vect.h" | |
4 | |
5 typedef unsigned int uint32_t; | |
6 typedef unsigned short uint16_t; | |
7 typedef unsigned char uint8_t; | |
8 | |
9 extern int abs (int); | |
10 extern void abort (void); | |
11 | |
12 int __attribute__((noinline,noclone)) | |
13 foo (uint8_t *pix1, uint8_t *pix2, int i_stride_pix2) | |
14 { | |
15 int i_sum = 0; | |
16 for( int y = 0; y < 16; y++ ) | |
17 { | |
18 i_sum += abs ( pix1[0] - pix2[0] ); | |
19 i_sum += abs ( pix1[1] - pix2[1] ); | |
20 i_sum += abs ( pix1[2] - pix2[2] ); | |
21 i_sum += abs ( pix1[3] - pix2[3] ); | |
22 i_sum += abs ( pix1[4] - pix2[4] ); | |
23 i_sum += abs ( pix1[5] - pix2[5] ); | |
24 i_sum += abs ( pix1[6] - pix2[6] ); | |
25 i_sum += abs ( pix1[7] - pix2[7] ); | |
26 i_sum += abs ( pix1[8] - pix2[8] ); | |
27 i_sum += abs ( pix1[9] - pix2[9] ); | |
28 i_sum += abs ( pix1[10] - pix2[10] ); | |
29 i_sum += abs ( pix1[11] - pix2[11] ); | |
30 i_sum += abs ( pix1[12] - pix2[12] ); | |
31 i_sum += abs ( pix1[13] - pix2[13] ); | |
32 i_sum += abs ( pix1[14] - pix2[14] ); | |
33 i_sum += abs ( pix1[15] - pix2[15] ); | |
34 pix1 += 16; | |
35 pix2 += i_stride_pix2; | |
36 } | |
37 return i_sum; | |
38 } | |
39 | |
40 int | |
41 main () | |
42 { | |
43 check_vect (); | |
44 | |
45 uint8_t X[16*16]; | |
46 uint8_t Y[16*16]; | |
47 | |
48 for (int i = 0; i < 16*16; ++i) | |
49 { | |
50 X[i] = i; | |
51 Y[i] = 16*16 - i; | |
52 __asm__ volatile (""); | |
53 } | |
54 | |
55 if (foo (X, Y, 16) != 32512) | |
56 abort (); | |
57 | |
58 return 0; | |
59 } | |
60 | |
61 /* { dg-final { scan-tree-dump "vect_recog_sad_pattern: detected" "vect" } } */ | |
62 /* { dg-final { scan-tree-dump "vectorizing stmts using SLP" "vect" } } */ | |
63 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ |