vect-outer-5.c
来自「用于进行gcc测试」· C语言 代码 · 共 84 行
C
84 行
/* { dg-require-effective-target vect_int } */#include <stdio.h>#include <stdarg.h>#include <signal.h>#include "tree-vect.h"#define N 64#define MAX 42extern void abort(void); __attribute__ ((noinline)) int main1 (){ float A[N] __attribute__ ((__aligned__(16))); float B[N] __attribute__ ((__aligned__(16))); float C[N] __attribute__ ((__aligned__(16))); float D[N] __attribute__ ((__aligned__(16))); float E[4] = {0,1,2,480}; float s; int i, j; for (i = 0; i < N; i++) { A[i] = i; B[i] = i; C[i] = i; D[i] = i; } /* Outer-loop 1: Vectorizable with respect to dependence distance. */ for (i = 0; i < N-20; i++) { s = 0; for (j=0; j<N; j+=4) s += C[j]; A[i] = A[i+20] + s; } /* check results: */ for (i = 0; i < N-20; i++) { s = 0; for (j=0; j<N; j+=4) s += C[j]; if (A[i] != D[i+20] + s) abort (); } /* Outer-loop 2: Not vectorizable because of dependence distance. */ for (i = 0; i < 4; i++) { s = 0; for (j=0; j<N; j+=4) s += C[j]; B[i+3] = B[i] + s; } /* check results: */ for (i = 0; i < 4; i++) { if (B[i] != E[i]) abort (); } return 0;}int main (){ check_vect (); return main1();}/* NOTE: We temporarily xfail the following check until versioning for aliasing is fixed to avoid versioning when the dependence distance is known. *//* { dg-final { scan-tree-dump-times "not vectorized: possible dependence between data-refs" 1 "vect" { xfail *-*-* } } } *//* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } *//* { dg-final { scan-tree-dump-times "zero step in outer loop." 1 "vect" } } *//* { dg-final { cleanup-tree-dump "vect" } } */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?