Viewing file: vect-movi.c (1.46 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do run } */ /* { dg-options "-O3 --save-temps -fno-inline" } */
#pragma GCC target "+nosve"
extern void abort (void);
#define N 16
static void movi_msl8 (int *__restrict a) { int i;
/* { dg-final { scan-assembler "movi\\tv\[0-9\]+\.\[42\]s, 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\]+\.\[42\]s, 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\]+\.\[42\]s, 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\]+\.\[42\]s, 0xab, msl 16" } } */ for (i = 0; i < N; i++) a[i] = 0xff540000; }
static void movi_float_lsl24 (float * a) { int i;
/* { dg-final { scan-assembler {\tmovi\tv[0-9]+\.[42]s, 0x43, lsl 24\n} } } */ for (i = 0; i < N; i++) a[i] = 128.0; }
int main (void) { int a[N] = { 0 }; float b[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);
movi_float_lsl24 (b); CHECK_ARRAY (b, 128.0);
return 0; }
|