(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
vect-movi.c
       1  /* { dg-do run } */
       2  /* { dg-options "-O3 --save-temps -fno-inline" } */
       3  
       4  #pragma GCC target "+nosve"
       5  
       6  extern void abort (void);
       7  
       8  #define N 16
       9  
      10  static void
      11  movi_msl8 (int *__restrict a)
      12  {
      13    int i;
      14  
      15    /* { dg-final { scan-assembler "movi\\tv\[0-9\]+\.\[42\]s, 0xab, msl 8" } } */
      16    for (i = 0; i < N; i++)
      17      a[i] = 0xabff;
      18  }
      19  
      20  static void
      21  movi_msl16 (int *__restrict a)
      22  {
      23    int i;
      24  
      25    /* { dg-final { scan-assembler "movi\\tv\[0-9\]+\.\[42\]s, 0xab, msl 16" } } */
      26    for (i = 0; i < N; i++)
      27      a[i] = 0xabffff;
      28  }
      29  
      30  static void
      31  mvni_msl8 (int *__restrict a)
      32  {
      33    int i;
      34  
      35    /* { dg-final { scan-assembler "mvni\\tv\[0-9\]+\.\[42\]s, 0xab, msl 8" } } */
      36    for (i = 0; i < N; i++)
      37      a[i] = 0xffff5400;
      38  }
      39  
      40  static void
      41  mvni_msl16 (int *__restrict a)
      42  {
      43    int i;
      44  
      45    /* { dg-final { scan-assembler "mvni\\tv\[0-9\]+\.\[42\]s, 0xab, msl 16" } } */
      46    for (i = 0; i < N; i++)
      47      a[i] = 0xff540000;
      48  }
      49  
      50  static void
      51  movi_float_lsl24 (float * a)
      52  {
      53    int i;
      54  
      55    /* { dg-final { scan-assembler {\tmovi\tv[0-9]+\.[42]s, 0x43, lsl 24\n} } } */
      56    for (i = 0; i < N; i++)
      57      a[i] = 128.0;
      58  }
      59  
      60  int
      61  main (void)
      62  {
      63    int a[N] = { 0 };
      64    float b[N] = { 0 };
      65    int i;
      66  
      67  #define CHECK_ARRAY(a, val)	\
      68    for (i = 0; i < N; i++)	\
      69      if (a[i] != val)		\
      70        abort ();
      71  
      72    movi_msl8 (a);
      73    CHECK_ARRAY (a, 0xabff);
      74  
      75    movi_msl16 (a);
      76    CHECK_ARRAY (a, 0xabffff);
      77  
      78    mvni_msl8 (a);
      79    CHECK_ARRAY (a, 0xffff5400);
      80  
      81    mvni_msl16 (a);
      82    CHECK_ARRAY (a, 0xff540000);
      83  
      84    movi_float_lsl24 (b);
      85    CHECK_ARRAY (b, 128.0);
      86  
      87    return 0;
      88  }
      89