1/* { dg-do run } */ 2/* { dg-options "-O2 -mavx512f" } */ 3/* { dg-require-effective-target avx512f } */ 4 5#include "avx512f-check.h" 6 7extern int memcmp (const void *, const void *, __SIZE_TYPE__); 8 9void 10avx512f_test (void) 11{ 12 union512i_d a, ad; 13 union512 b, bd; 14 union512d c, cd; 15 union256i_d d, dd; 16 union256 e, ed; 17 union256d f, fd; 18 union128i_d g, gd; 19 union128 h, hd; 20 union128d k, kd; 21 int i; 22 23 for (i = 0; i < 16; i++) 24 { 25 a.a[i] = 7146908634 + i; 26 b.a[i] = 45.12f + i; 27 } 28 29 for (i = 0; i < 8; i++) 30 { 31 c.a[i] = 41234512513451345.0905 + i; 32 d.a[i] = 109534 + i; 33 e.a[i] = 85034.095f + i; 34 } 35 36 for (i = 0; i < 4; i++) 37 { 38 f.a[i] = 41234512451345.0905 + i; 39 g.a[i] = 71469086341 + i; 40 h.a[i] = 45.1264f + i; 41 } 42 43 for (i = 0; i < 2; i++) 44 { 45 k.a[i] = 7146908634.576 + i; 46 } 47 48 bd.x = _mm512_castpd_ps (c.x); 49 if (memcmp(bd.a, c.a, 64)) 50 abort (); 51 52 ad.x = _mm512_castpd_si512 (c.x); 53 if (memcmp(ad.a, c.a, 64)) 54 abort (); 55 56 cd.x = _mm512_castps_pd (b.x); 57 if (memcmp(cd.a, b.a, 64)) 58 abort (); 59 60 ad.x = _mm512_castps_si512 (b.x); 61 if (memcmp(ad.a, b.a, 64)) 62 abort (); 63 64 bd.x = _mm512_castsi512_ps (a.x); 65 if (memcmp(bd.a, a.a, 64)) 66 abort (); 67 68 cd.x = _mm512_castsi512_pd (a.x); 69 if (memcmp(cd.a, a.a, 64)) 70 abort (); 71 72 kd.x = _mm512_castpd512_pd128 (c.x); 73 if (memcmp(kd.a, c.a, 16)) 74 abort (); 75 76 hd.x = _mm512_castps512_ps128 (b.x); 77 if (memcmp(hd.a, b.a, 16)) 78 abort (); 79 80 gd.x = _mm512_castsi512_si128 (a.x); 81 if (memcmp(gd.a, a.a, 16)) 82 abort (); 83 84 fd.x = _mm512_castpd512_pd256 (c.x); 85 if (memcmp(fd.a, c.a, 32)) 86 abort (); 87 88 ed.x = _mm512_castps512_ps256 (b.x); 89 if (memcmp(ed.a, b.a, 32)) 90 abort (); 91 92 dd.x = _mm512_castsi512_si256 (a.x); 93 if (memcmp(dd.a, a.a, 32)) 94 abort (); 95 96 cd.x = _mm512_castpd128_pd512 (k.x); 97 if (memcmp(cd.a, k.a, 16)) 98 abort (); 99 100 bd.x = _mm512_castps128_ps512 (h.x); 101 if (memcmp(bd.a, h.a, 16)) 102 abort (); 103 104 ad.x = _mm512_castsi128_si512 (g.x); 105 if (memcmp(ad.a, g.a, 16)) 106 abort (); 107 108 cd.x = _mm512_castpd256_pd512 (f.x); 109 if (memcmp(cd.a, f.a, 32)) 110 abort (); 111 112 bd.x = _mm512_castps256_ps512 (e.x); 113 if (memcmp(bd.a, e.a, 32)) 114 abort (); 115 116 ad.x = _mm512_castsi256_si512 (d.x); 117 if (memcmp(ad.a, d.a, 32)) 118 abort (); 119} 120