1/* { dg-do run } */ 2/* { dg-options "-O2" } */ 3/* { dg-additional-options "-msse2" { target sse2_runtime } } */ 4/* { dg-additional-options "-mavx" { target avx_runtime } } */ 5 6int 7main () 8{ 9 int i, j, b, c = 0; 10 i = 4; j = 4; b = 7; 11 #pragma omp simd linear(b:2) reduction(+:c) 12 for (i = 0; i < 64; i++) 13 { 14 c = c + (b != 7 + 2 * i); 15 b = b + 2; 16 } 17 if (c || i != 64 || b != 7 + 64 * 2) 18 __builtin_abort (); 19 i = 4; j = 4; b = 7; 20 #pragma omp simd linear(b:3) reduction(+:c) 21 for (i = 0; i < 64; i += 4) 22 { 23 c = c + (b != 7 + i / 4 * 3); 24 b = b + 3; 25 } 26 if (c || i != 64 || b != 7 + 16 * 3) 27 __builtin_abort (); 28 i = 4; j = 4; b = 7; 29 #pragma omp simd linear(i) linear(b:2) reduction(+:c) 30 for (i = 0; i < 64; i++) 31 { 32 c = c + (b != 7 + 2 * i); 33 b = b + 2; 34 } 35 if (c || i != 64 || b != 7 + 64 * 2) 36 __builtin_abort (); 37 i = 4; j = 4; b = 7; 38 #pragma omp simd linear(i:4) linear(b:3) reduction(+:c) 39 for (i = 0; i < 64; i += 4) 40 { 41 c = c + (b != 7 + i / 4 * 3); 42 b = b + 3; 43 } 44 if (c || i != 64 || b != 7 + 16 * 3) 45 __builtin_abort (); 46 i = 4; j = 4; b = 7; 47 #pragma omp simd collapse (2) linear(b:2) reduction(+:c) 48 for (i = 0; i < 8; i++) 49 for (j = 0; j < 8; j++) 50 { 51 c = c + (b != 7 + 2 * j + 2 * 8 * i); 52 b = b + 2; 53 } 54 if (c || i != 8 || j != 8 || b != 7 + 64 * 2) 55 __builtin_abort (); 56 i = 4; j = 4; b = 7; 57 #pragma omp simd collapse (2) lastprivate (i, j) linear(b:2) reduction(+:c) 58 for (i = 0; i < 8; i++) 59 for (j = 0; j < 8; j++) 60 { 61 c = c + (b != 7 + 2 * j + 2 * 8 * i); 62 b = b + 2; 63 } 64 if (c || i != 8 || j != 8 || b != 7 + 64 * 2) 65 __builtin_abort (); 66 i = 4; j = 4; b = 7; 67 #pragma omp parallel for simd schedule (static, 4) linear(b:2) reduction(+:c) 68 for (i = 0; i < 64; i++) 69 { 70 c = c + (b != 7 + 2 * i); 71 b = b + 2; 72 } 73 if (c || i != 64 || b != 7 + 64 * 2) 74 __builtin_abort (); 75 i = 4; j = 4; b = 7; 76 #pragma omp parallel for simd schedule (static, 4) linear(b:3) reduction(+:c) 77 for (i = 0; i < 64; i += 4) 78 { 79 c = c + (b != 7 + i / 4 * 3); 80 b = b + 3; 81 } 82 if (c || i != 64 || b != 7 + 16 * 3) 83 __builtin_abort (); 84 i = 4; j = 4; b = 7; 85 #pragma omp parallel for simd schedule (static, 4) linear(i) linear(b:2) reduction(+:c) 86 for (i = 0; i < 64; i++) 87 { 88 c = c + (b != 7 + 2 * i); 89 b = b + 2; 90 } 91 if (c || i != 64 || b != 7 + 64 * 2) 92 __builtin_abort (); 93 i = 4; j = 4; b = 7; 94 #pragma omp parallel for simd schedule (static, 4) linear(i:4) linear(b:3) reduction(+:c) 95 for (i = 0; i < 64; i += 4) 96 { 97 c = c + (b != 7 + i / 4 * 3); 98 b = b + 3; 99 } 100 if (c || i != 64 || b != 7 + 16 * 3) 101 __builtin_abort (); 102 i = 4; j = 4; b = 7; 103 #pragma omp parallel for simd lastprivate (i, j) collapse (2) schedule (static, 4) linear(b:2) reduction(+:c) 104 for (i = 0; i < 8; i++) 105 for (j = 0; j < 8; j++) 106 { 107 c = c + (b != 7 + 2 * j + 2 * 8 * i); 108 b = b + 2; 109 } 110 if (c || i != 8 || j != 8 || b != 7 + 64 * 2) 111 __builtin_abort (); 112 i = 4; j = 4; b = 7; 113 #pragma omp parallel for simd collapse (2) schedule (static, 4) linear(b:2) reduction(+:c) 114 for (i = 0; i < 8; i++) 115 for (j = 0; j < 8; j++) 116 { 117 c = c + (b != 7 + 2 * j + 2 * 8 * i); 118 b = b + 2; 119 } 120 if (c || i != 8 || j != 8 || b != 7 + 64 * 2) 121 __builtin_abort (); 122 return 0; 123} 124