(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vmx/
ops-long-1.c
       1  /* { dg-do compile } */
       2  /* { dg-require-effective-target vmx_hw } */
       3  /* { dg-options "-maltivec -mabi=altivec -std=gnu99 -mvsx -Wno-deprecated" } */
       4  
       5  /* Checks from the original ops.c that pass pointers to long or
       6     unsigned long for operations that support that in released versions
       7     of <altivec.h>.  */
       8  
       9  #include <altivec.h>
      10  #include <stdlib.h>
      11  extern int *var_int;
      12  extern long * *var_long_ptr;
      13  extern unsigned long * *var_unsigned_long_ptr;
      14  extern long long int * *var_long_long_ptr;
      15  extern unsigned long long int * *var_unsigned_long_long_ptr;
      16  extern vector signed int * *var_vec_s32_ptr;
      17  extern vector signed int *var_vec_s32;
      18  extern vector unsigned char * *var_vec_u8_ptr;
      19  extern vector unsigned char *var_vec_u8;
      20  extern vector unsigned int * *var_vec_u32_ptr;
      21  extern vector unsigned int *var_vec_u32;
      22  /* Use of long long int types requires -mvsx command-line option. */
      23  extern vector long long int *var_vec_s64;
      24  extern vector unsigned long long int *var_vec_u64;
      25  
      26  void f13() {
      27    *var_vec_s32++ = vec_ld(var_int[0], var_long_ptr[1]);
      28    *var_vec_s32++ = vec_lde(var_int[0], var_long_ptr[1]);
      29    *var_vec_s64++ = vec_ldl(var_int[0], var_long_long_ptr[1]);
      30    *var_vec_s32++ = vec_lvewx(var_int[0], var_long_ptr[1]);
      31    *var_vec_s32++ = vec_lvx(var_int[0], var_long_ptr[1]);
      32    *var_vec_s64++ = vec_lvxl(var_int[0], var_long_long_ptr[1]);
      33  }
      34  void f22() {
      35    *var_vec_u32++ = vec_ld(var_int[0], var_unsigned_long_ptr[1]);
      36    *var_vec_u32++ = vec_lde(var_int[0], var_unsigned_long_ptr[1]);
      37    *var_vec_u64++ = vec_ldl(var_int[0], var_unsigned_long_long_ptr[1]);
      38    *var_vec_u32++ = vec_lvewx(var_int[0], var_unsigned_long_ptr[1]);
      39    *var_vec_u32++ = vec_lvx(var_int[0], var_unsigned_long_ptr[1]);
      40    *var_vec_u64++ = vec_lvxl(var_int[0], var_unsigned_long_long_ptr[1]);
      41  }
      42  void f25() {
      43    *var_vec_u8++ = vec_lvsl(var_int[0], var_long_ptr[1]);
      44    *var_vec_u8++ = vec_lvsl(var_int[0], var_unsigned_long_ptr[1]);
      45    *var_vec_u8++ = vec_lvsr(var_int[0], var_long_ptr[1]);
      46    *var_vec_u8++ = vec_lvsr(var_int[0], var_unsigned_long_ptr[1]);
      47  }
      48  void f33() {
      49    vec_dst(var_long_ptr[0], var_int[1], 0);
      50    vec_dst(var_long_ptr[0], var_int[1], 1);
      51    vec_dst(var_long_ptr[0], var_int[1], 2);
      52    vec_dst(var_long_ptr[0], var_int[1], 3);
      53    vec_dst(var_unsigned_long_ptr[0], var_int[1], 0);
      54    vec_dst(var_unsigned_long_ptr[0], var_int[1], 1);
      55    vec_dst(var_unsigned_long_ptr[0], var_int[1], 2);
      56    vec_dst(var_unsigned_long_ptr[0], var_int[1], 3);
      57  }
      58  void f34() {
      59    vec_dstst(var_long_ptr[0], var_int[1], 0);
      60    vec_dstst(var_long_ptr[0], var_int[1], 1);
      61    vec_dstst(var_long_ptr[0], var_int[1], 2);
      62    vec_dstst(var_long_ptr[0], var_int[1], 3);
      63    vec_dstst(var_unsigned_long_ptr[0], var_int[1], 0);
      64    vec_dstst(var_unsigned_long_ptr[0], var_int[1], 1);
      65    vec_dstst(var_unsigned_long_ptr[0], var_int[1], 2);
      66    vec_dstst(var_unsigned_long_ptr[0], var_int[1], 3);
      67  }
      68  void f35() {
      69    vec_dststt(var_long_ptr[0], var_int[1], 0);
      70    vec_dststt(var_long_ptr[0], var_int[1], 1);
      71    vec_dststt(var_long_ptr[0], var_int[1], 2);
      72    vec_dststt(var_long_ptr[0], var_int[1], 3);
      73    vec_dststt(var_unsigned_long_ptr[0], var_int[1], 0);
      74    vec_dststt(var_unsigned_long_ptr[0], var_int[1], 1);
      75    vec_dststt(var_unsigned_long_ptr[0], var_int[1], 2);
      76    vec_dststt(var_unsigned_long_ptr[0], var_int[1], 3);
      77    vec_dstt(var_long_ptr[0], var_int[1], 0);
      78    vec_dstt(var_long_ptr[0], var_int[1], 1);
      79    vec_dstt(var_long_ptr[0], var_int[1], 2);
      80    vec_dstt(var_long_ptr[0], var_int[1], 3);
      81  }
      82  void f36() {
      83    vec_dstt(var_unsigned_long_ptr[0], var_int[1], 0);
      84    vec_dstt(var_unsigned_long_ptr[0], var_int[1], 1);
      85    vec_dstt(var_unsigned_long_ptr[0], var_int[1], 2);
      86    vec_dstt(var_unsigned_long_ptr[0], var_int[1], 3);
      87  }