1/* Test saving and restoring of SIMD registers. */ 2 3typedef short Q __attribute__((vector_size(8))); 4 5Q q1 = {1, 2}, q2 = {3, 4}, q3 = {5, 6}, q4 = {7, 8}; 6 7Q w1, w2, w3, w4; 8Q z1, z2, z3, z4; 9 10volatile int dummy; 11 12void __attribute__((__noinline__)) 13func0 (void) 14{ 15 dummy = 1; 16} 17 18void __attribute__((__noinline__)) 19func1 (void) 20{ 21 Q a, b; 22 a = q1 * q2; 23 b = q3 * q4; 24 w1 = a; 25 w2 = b; 26 func0 (); 27 w3 = a; 28 w4 = b; 29} 30 31void __attribute__((__noinline__)) 32func2 (void) 33{ 34 Q a, b; 35 a = q1 + q2; 36 b = q3 - q4; 37 z1 = a; 38 z2 = b; 39 func1 (); 40 z3 = a; 41 z4 = b; 42} 43 44int 45main (void) 46{ 47 func2 (); 48 49 if (memcmp (&w1, &w3, sizeof (Q)) != 0) 50 abort (); 51 if (memcmp (&w2, &w4, sizeof (Q)) != 0) 52 abort (); 53 if (memcmp (&z1, &z3, sizeof (Q)) != 0) 54 abort (); 55 if (memcmp (&z2, &z4, sizeof (Q)) != 0) 56 abort (); 57 58 return 0; 59} 60