1 /* { dg-do compile } */ 2 /* { dg-options "-mavx512bw -O3 -fopenmp-simd -fdump-tree-vect-details" } */ 3 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 10 "vect" } } */ 4 /* { dg-final { scan-assembler-not "maskmov" } } */ 5 6 #define LENGTH 1000 7 8 long l1[LENGTH], l2[LENGTH]; 9 int i1[LENGTH], i2[LENGTH]; 10 short s1[LENGTH], s2[LENGTH]; 11 char c1[LENGTH], c2[LENGTH]; 12 double d1[LENGTH], d2[LENGTH]; 13 test1(int n)14int test1 (int n) 15 { 16 int i; 17 #pragma omp simd safelen(16) 18 for (i = 0; i < LENGTH; i++) 19 if (l1[i] > l2[i]) 20 i1[i] = 1; 21 } 22 test2(int n)23int test2 (int n) 24 { 25 int i; 26 #pragma omp simd safelen(16) 27 for (i = 0; i < LENGTH; i++) 28 if (i1[i] > i2[i]) 29 s1[i] = 1; 30 } 31 test3(int n)32int test3 (int n) 33 { 34 int i; 35 #pragma omp simd safelen(16) 36 for (i = 0; i < LENGTH; i++) 37 if (s1[i] > s2[i]) 38 c1[i] = 1; 39 } 40 test4(int n)41int test4 (int n) 42 { 43 int i; 44 #pragma omp simd safelen(16) 45 for (i = 0; i < LENGTH; i++) 46 if (d1[i] > d2[i]) 47 c1[i] = 1; 48 } 49 test5(int n)50int test5 (int n) 51 { 52 int i; 53 #pragma omp simd safelen(16) 54 for (i = 0; i < LENGTH; i++) 55 i1[i] = l1[i] > l2[i] ? 3 : 4; 56 } 57 test6(int n)58int test6 (int n) 59 { 60 int i; 61 #pragma omp simd safelen(16) 62 for (i = 0; i < LENGTH; i++) 63 s1[i] = i1[i] > i2[i] ? 3 : 4; 64 } 65 test7(int n)66int test7 (int n) 67 { 68 int i; 69 #pragma omp simd safelen(16) 70 for (i = 0; i < LENGTH; i++) 71 c1[i] = s1[i] > s2[i] ? 3 : 4; 72 } 73 test8(int n)74int test8 (int n) 75 { 76 int i; 77 #pragma omp simd safelen(16) 78 for (i = 0; i < LENGTH; i++) 79 c1[i] = d1[i] > d2[i] ? 3 : 4; 80 } 81 test9(int n)82int test9 (int n) 83 { 84 int i; 85 #pragma omp simd safelen(16) 86 for (i = 0; i < LENGTH; i++) 87 if (l1[i] > l2[i] && i1[i] < i2[i]) 88 c1[i] = 1; 89 } 90 test10(int n)91int test10 (int n) 92 { 93 int i; 94 #pragma omp simd safelen(16) 95 for (i = 0; i < LENGTH; i++) 96 if (l1[i] > l2[i] && i1[i] < i2[i]) 97 c1[i] = 1; 98 else 99 c1[i] = 2; 100 } 101