/* { dg-do compile } */ /* { dg-options "-O2 -fopenmp -fdump-tree-vect-details" } */ /* { dg-additional-options "-msse2" { target { i?86-*-* x86_64-*-* } } } */ /* { dg-additional-options "-mavx" { target avx } } */ /* { dg-final { scan-tree-dump-times "vectorized \[1-9]\[0-9]* loops in function" 5 "vect" { target i?86-*-* x86_64-*-* aarch64-*-* } } } */ int a[1024][1024]; void foo (void) { #pragma omp for simd collapse(2) for (int i = 0; i < 1024; i++) for (int j = 0; j < i; j++) a[i][j] += 3; } void bar (void) { #pragma omp parallel for simd collapse(2) for (int i = 0; i < 1024; i++) for (int j = 0; j < i; j++) a[i][j] += 3; } void baz (void) { #pragma omp distribute parallel for simd collapse(2) for (int i = 0; i < 1024; i++) for (int j = 0; j < i; j++) a[i][j] += 3; } void qux (void) { #pragma omp distribute simd collapse(2) for (int i = 0; i < 1024; i++) for (int j = 0; j < i; j++) a[i][j] += 3; } void corge (void) { #pragma omp taskloop simd collapse(2) for (int i = 0; i < 1024; i++) for (int j = 0; j < i; j++) a[i][j] += 3; }