altivec-splat.c

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

C
50
字号
/* { dg-do compile { target powerpc*-*-* } } *//* { dg-require-effective-target powerpc_altivec_ok } *//* { dg-options "-maltivec -mabi=altivec -O2" } *//* Testcase by Richard Guenther and Steven Bosscher.   Check that "easy" AltiVec constants are correctly synthesized   if they need to be reloaded.  */typedef __attribute__ ((vector_size (16))) unsigned char v16qi;typedef __attribute__ ((vector_size (16))) unsigned short v8hi;typedef __attribute__ ((vector_size (16))) unsigned int v4si;#define REGLIST								\  "77",  "78",  "79",  "80",  "81",  "82",  "83",  "84",  "85",  "86",	\  "87",  "88",  "89",  "90",  "91",  "92",  "93",  "94",  "95",  "96",	\  "97",  "98",  "99", "100", "101", "102", "103", "104", "105", "106",	\ "107", "108"#define TEST(a, result, b)				\  void a##_##b (int h)					\  {							\    volatile a tmp;					\    while (h-- > 0)					\      {							\        asm ("" : : : REGLIST);				\        tmp = (a) (result) __builtin_altivec_##b (5);	\      }							\  }							\							\  void a##_##b##_neg (int h)				\  {							\    volatile a tmp;					\    while (h-- > 0)					\      {							\        asm ("" : : : REGLIST);				\        tmp = (a) (result) __builtin_altivec_##b (-5);	\      }							\  }TEST(v16qi, v16qi, vspltisb)TEST(v16qi, v8hi, vspltish)TEST(v16qi, v4si, vspltisw)TEST(v8hi, v16qi, vspltisb)TEST(v8hi, v8hi, vspltish)TEST(v8hi, v4si, vspltisw)TEST(v4si, v16qi, vspltisb)TEST(v4si, v8hi, vspltish)TEST(v4si, v4si, vspltisw)

⌨️ 快捷键说明

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