(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
sve/
dup_lane_3.c
       1  /* { dg-do assemble { target aarch64_asm_sve_ok } } */
       2  /* { dg-options "-O -msve-vector-bits=2048 -mlittle-endian --save-temps" } */
       3  
       4  typedef unsigned char v128qi __attribute__((vector_size(128)));
       5  typedef unsigned char v64qi __attribute__((vector_size(64)));
       6  typedef unsigned char v32qi __attribute__((vector_size(32)));
       7  typedef unsigned short v64hi __attribute__((vector_size(128)));
       8  typedef unsigned short v32hi __attribute__((vector_size(64)));
       9  typedef _Float16 v64hf __attribute__((vector_size(128)));
      10  typedef _Float16 v32hf __attribute__((vector_size(64)));
      11  typedef __bf16 v64bf __attribute__((vector_size(128)));
      12  typedef __bf16 v32bf __attribute__((vector_size(64)));
      13  typedef unsigned int v32si __attribute__((vector_size(128)));
      14  typedef float v32sf __attribute__((vector_size(128)));
      15  
      16  #define PERM0(B) B, B
      17  #define PERM1(B) PERM0 (B), PERM0 (B)
      18  #define PERM2(B) PERM1 (B), PERM1 (B)
      19  #define PERM3(B) PERM2 (B), PERM2 (B)
      20  #define PERM4(B) PERM3 (B), PERM3 (B)
      21  #define PERM5(B) PERM4 (B), PERM4 (B)
      22  #define PERM6(B) PERM5 (B), PERM5 (B)
      23  
      24  v128qi
      25  qi_dup_h_32 (v128qi x)
      26  {
      27    return __builtin_shuffle (x, x, (v128qi) { PERM6 (32) });
      28  }
      29  
      30  v64qi
      31  qi_dup_s_16 (v64qi x)
      32  {
      33    return __builtin_shuffle (x, x, (v64qi) { PERM5 (16) });
      34  }
      35  
      36  v32qi
      37  qi_dup_d_8 (v32qi x)
      38  {
      39    return __builtin_shuffle (x, x, (v32qi) { PERM4 (8) });
      40  }
      41  
      42  v64hi
      43  hi_dup_s_16 (v64hi x)
      44  {
      45    return __builtin_shuffle (x, x, (v64hi) { PERM5 (16) });
      46  }
      47  
      48  v64hf
      49  hf_dup_s_16 (v64hf x)
      50  {
      51    return __builtin_shuffle (x, x, (v64hi) { PERM5 (16) });
      52  }
      53  
      54  v64bf
      55  bf_dup_s_16 (v64bf x)
      56  {
      57    return __builtin_shuffle (x, x, (v64hi) { PERM5 (16) });
      58  }
      59  
      60  v32hi
      61  hi_dup_d_8 (v32hi x)
      62  {
      63    return __builtin_shuffle (x, x, (v32hi) { PERM4 (8) });
      64  }
      65  
      66  v32hf
      67  hf_dup_d_8 (v32hf x)
      68  {
      69    return __builtin_shuffle (x, x, (v32hi) { PERM4 (8) });
      70  }
      71  
      72  v32bf
      73  bf_dup_d_8 (v32bf x)
      74  {
      75    return __builtin_shuffle (x, x, (v32hi) { PERM4 (8) });
      76  }
      77  
      78  v32si
      79  si_dup_d_8 (v32si x)
      80  {
      81    return __builtin_shuffle (x, x, (v32si) { PERM4 (8) });
      82  }
      83  
      84  v32sf
      85  sf_dup_d_8 (v32sf x)
      86  {
      87    return __builtin_shuffle (x, x, (v32si) { PERM4 (8) });
      88  }
      89  
      90  /* { dg-final { scan-assembler-not {\tdup\tz} } } */