1/* { dg-require-effective-target vect_int } */ 2 3#include <stdarg.h> 4#include "tree-vect.h" 5 6#define N 128 7 8int 9main1 () 10{ 11 int i; 12 unsigned short out[N*8]; 13 14 for (i = 0; i < N; i++) 15 { 16 out[i*4] = 8; 17 out[i*4 + 1] = 18; 18 out[i*4 + 2] = 28; 19 out[i*4 + 3] = 38; 20 } 21 22 /* check results: */ 23 for (i = 0; i < N; i++) 24 { 25 if (out[i*4] != 8 26 || out[i*4 + 1] != 18 27 || out[i*4 + 2] != 28 28 || out[i*4 + 3] != 38) 29 abort (); 30 } 31 32 for (i = 0; i < N; i++) 33 { 34 out[i*8] = 8; 35 out[i*8 + 1] = 7; 36 out[i*8 + 2] = 81; 37 out[i*8 + 3] = 28; 38 out[i*8 + 4] = 18; 39 out[i*8 + 5] = 85; 40 out[i*8 + 6] = 5; 41 out[i*8 + 7] = 4; 42 } 43 44 /* check results: */ 45 for (i = 0; i < N; i++) 46 { 47 if (out[i*8] != 8 48 || out[i*8 + 1] != 7 49 || out[i*8 + 2] != 81 50 || out[i*8 + 3] != 28 51 || out[i*8 + 4] != 18 52 || out[i*8 + 5] != 85 53 || out[i*8 + 6] != 5 54 || out[i*8 + 7] != 4) 55 abort (); 56 } 57 58 /* SLP with unrolling by 8. */ 59 for (i = 0; i < N; i++) 60 { 61 out[i*5] = 8; 62 out[i*5 + 1] = 7; 63 out[i*5 + 2] = 81; 64 out[i*5 + 3] = 28; 65 out[i*5 + 4] = 18; 66 } 67 68 /* check results: */ 69 for (i = 0; i < N; i++) 70 { 71 if (out[i*5] != 8 72 || out[i*5 + 1] != 7 73 || out[i*5 + 2] != 81 74 || out[i*5 + 3] != 28 75 || out[i*5 + 4] != 18) 76 abort (); 77 } 78 79 /* SLP with unrolling by 8. */ 80 for (i = 0; i < N/2; i++) 81 { 82 out[i*9] = 8; 83 out[i*9 + 1] = 7; 84 out[i*9 + 2] = 81; 85 out[i*9 + 3] = 28; 86 out[i*9 + 4] = 18; 87 out[i*9 + 5] = 85; 88 out[i*9 + 6] = 5; 89 out[i*9 + 7] = 4; 90 out[i*9 + 8] = 14; 91 } 92 93 /* check results: */ 94 for (i = 0; i < N/2; i++) 95 { 96 if (out[i*9] != 8 97 || out[i*9 + 1] != 7 98 || out[i*9 + 2] != 81 99 || out[i*9 + 3] != 28 100 || out[i*9 + 4] != 18 101 || out[i*9 + 5] != 85 102 || out[i*9 + 6] != 5 103 || out[i*9 + 7] != 4 104 || out[i*9 + 8] != 14) 105 abort (); 106 } 107 108 return 0; 109} 110 111int main (void) 112{ 113 check_vect (); 114 115 main1 (); 116 117 return 0; 118} 119 120/* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */ 121/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect" } } */ 122/* { dg-final { cleanup-tree-dump "vect" } } */ 123 124