vect-strided-same-dr.c

来自「用于进行gcc测试」· C语言 代码 · 共 77 行

C
77
字号
/* { dg-require-effective-target vect_int } */#include <stdarg.h>#include "tree-vect.h"#define N 128 typedef struct {   unsigned short a;   unsigned short b;} s;s buffer1[N], buffer2[N];__attribute__ ((noinline)) intmain1 (s * __restrict__  pIn, s* __restrict__ pOut){  unsigned short i, x, y, d;  s *p, *q;  p = pIn;  q = pOut;  for (i = 0; i < N/2; i++)    {      x = pIn->a + 5;      y = pIn->a + 2;      pOut->a = x;      pOut->b = pIn->b;      pOut++;      pOut->a = y;      pOut->b = pIn->b;      pOut++;      pIn++;    }  /* check results:  */  for (i = 0; i < N/2; i++)    {      if (q->a != p->a + 5          || q->b != p->b)         abort ();      q++;      if (q->a != p->a + 2          || q->b != p->b)        abort ();      q++;      p++;    }  return 0;}int main (void){  short i;  for (i = 0; i < N; i++)    {      buffer1[i].a = i;      buffer1[i].b = i + 8;      buffer2[i].a = i * 3;      buffer2[i].b = i * 2;      if (buffer1[i].a == 500)         abort();    }  check_vect ();  main1 (buffer1, buffer2);  return 0;}/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } *//* { dg-final { cleanup-tree-dump "vect" } } */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?