| /* { dg-do run } */ |
| /* { dg-options "-O3 --save-temps -fno-inline" } */ |
| |
| extern void abort (void); |
| |
| #define N 16 |
| |
| static void |
| movi_msl8 (int *__restrict a) |
| { |
| int i; |
| |
| /* { dg-final { scan-assembler "movi\\tv\[0-9\]+\.4s, 0xab, msl 8" } } */ |
| for (i = 0; i < N; i++) |
| a[i] = 0xabff; |
| } |
| |
| static void |
| movi_msl16 (int *__restrict a) |
| { |
| int i; |
| |
| /* { dg-final { scan-assembler "movi\\tv\[0-9\]+\.4s, 0xab, msl 16" } } */ |
| for (i = 0; i < N; i++) |
| a[i] = 0xabffff; |
| } |
| |
| static void |
| mvni_msl8 (int *__restrict a) |
| { |
| int i; |
| |
| /* { dg-final { scan-assembler "mvni\\tv\[0-9\]+\.4s, 0xab, msl 8" } } */ |
| for (i = 0; i < N; i++) |
| a[i] = 0xffff5400; |
| } |
| |
| static void |
| mvni_msl16 (int *__restrict a) |
| { |
| int i; |
| |
| /* { dg-final { scan-assembler "mvni\\tv\[0-9\]+\.4s, 0xab, msl 16" } } */ |
| for (i = 0; i < N; i++) |
| a[i] = 0xff540000; |
| } |
| |
| int |
| main (void) |
| { |
| int a[N] = { 0 }; |
| int i; |
| |
| #define CHECK_ARRAY(a, val) \ |
| for (i = 0; i < N; i++) \ |
| if (a[i] != val) \ |
| abort (); |
| |
| movi_msl8 (a); |
| CHECK_ARRAY (a, 0xabff); |
| |
| movi_msl16 (a); |
| CHECK_ARRAY (a, 0xabffff); |
| |
| mvni_msl8 (a); |
| CHECK_ARRAY (a, 0xffff5400); |
| |
| mvni_msl16 (a); |
| CHECK_ARRAY (a, 0xff540000); |
| |
| return 0; |
| } |
| |
| /* { dg-final { cleanup-saved-temps } } */ |