1 /* { dg-options "-O2" } */
2 
3 void
store(int * arr,int x,int y,int z)4 store (int *arr, int x, int y, int z)
5 {
6   arr[400] = x;
7   arr[401] = y;
8 
9   arr[500] = z;
10   arr[501] = x;
11 }
12 
13 /* { dg-final { scan-assembler-times "stp\tw\[0-9\]+, w\[0-9\]+, " 2 } } */
14 
15 void
store_float(float * arr,float x,float y)16 store_float (float *arr, float x, float y)
17 {
18   arr[404] = x;
19   arr[403] = y;
20 
21   arr[400] = x;
22   arr[401] = y;
23 }
24 
25 /* { dg-final { scan-assembler-times "stp\ts\[0-9\]+, s\[0-9\]+, " 2 } } */
26 
27 void
store_long(long long int * arr,long long int x,long long int y)28 store_long (long long int *arr, long long int x, long long int y)
29 {
30   arr[400] = x;
31   arr[401] = y;
32 
33   arr[403] = y;
34   arr[404] = x;
35 }
36 
37 /* { dg-final { scan-assembler-times "stp\tx\[0-9\]+, x\[0-9\]+, " 2 } } */
38 
39 void
store_double(double * arr,double x,double y)40 store_double (double *arr, double x, double y)
41 {
42   arr[200] = x;
43   arr[201] = y;
44 
45   arr[263] = y;
46   arr[264] = x;
47 }
48 
49 /* { dg-final { scan-assembler-times "stp\td\[0-9\]+, d\[0-9\]+, " 2 } } */
50