(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
extend.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2" } */
       3  
       4  int
       5  ldr_uxtw (int *arr, unsigned int i)
       6  {
       7    /* { dg-final { scan-assembler "ldr\tw\[0-9\]+,.*uxtw #?2]" } } */
       8    return arr[i];
       9  }
      10  
      11  int
      12  ldr_uxtw0 (char *arr, unsigned int i)
      13  {
      14    /* { dg-final { scan-assembler "ldr\tw\[0-9\]+,.*uxtw]" } } */
      15    return arr[i];
      16  }
      17  
      18  int
      19  ldr_sxtw (int *arr, int i)
      20  {
      21    /* { dg-final { scan-assembler "ldr\tw\[0-9\]+,.*sxtw #?2]" } } */
      22    return arr[i];
      23  }
      24  
      25  int
      26  ldr_sxtw0 (char *arr, int i)
      27  {
      28    /* { dg-final { scan-assembler "ldr\tw\[0-9\]+,.*sxtw]" } } */
      29    return arr[i];
      30  }
      31  
      32  unsigned long long
      33  adddi_uxtw (unsigned long long a, unsigned int i)
      34  {
      35    /* { dg-final { scan-assembler "add\tx\[0-9\]+,.*uxtw #?3" } } */
      36    return a + ((unsigned long long)i << 3);
      37  }
      38  
      39  unsigned long long
      40  adddi_uxtw0 (unsigned long long a, unsigned int i)
      41  {
      42    /* { dg-final { scan-assembler "add\tx\[0-9\]+,.*uxtw\n" } } */
      43    return a + i;
      44  }
      45  
      46  long long
      47  adddi_sxtw (long long a, int i)
      48  {
      49    /* { dg-final { scan-assembler "add\tx\[0-9\]+,.*sxtw #?3" } } */
      50    return a + ((long long)i << 3);
      51  }
      52  
      53  long long
      54  adddi_sxtw0 (long long a, int i)
      55  {
      56    /* { dg-final { scan-assembler "add\tx\[0-9\]+,.*sxtw\n" } } */
      57    return a + i;
      58  }
      59  
      60  unsigned long long
      61  subdi_uxtw (unsigned long long a, unsigned int i)
      62  {
      63    /* { dg-final { scan-assembler "sub\tx\[0-9\]+,.*uxtw #?3" } } */
      64    return a - ((unsigned long long)i << 3);
      65  }
      66  
      67  unsigned long long
      68  subdi_uxtw0 (unsigned long long a, unsigned int i)
      69  {
      70    /* { dg-final { scan-assembler "sub\tx\[0-9\]+,.*uxtw\n" } } */
      71    return a - i;
      72  }
      73  
      74  long long
      75  subdi_sxtw (long long a, int i)
      76  {
      77    /* { dg-final { scan-assembler "sub\tx\[0-9\]+,.*sxtw #?3" } } */
      78    return a - ((long long)i << 3);
      79  }
      80  
      81  long long
      82  subdi_sxtw0 (long long a, int i)
      83  {
      84    /* { dg-final { scan-assembler "sub\tx\[0-9\]+,.*sxtw\n" } } */
      85    return a - (long long)i;
      86  }
      87  
      88  unsigned long long
      89  subdi_uxth (unsigned long long a, unsigned short i)
      90  {
      91    /* { dg-final { scan-assembler "sub\tx\[0-9\]+,.*uxth #?1" } } */
      92    return a - ((unsigned long long)i << 1);
      93  }
      94  
      95  unsigned long long
      96  subdi_uxth0 (unsigned long long a, unsigned short i)
      97  {
      98    /* { dg-final { scan-assembler "sub\tx\[0-9\]+,.*uxth\n" } } */
      99    return a - i;
     100  }
     101  
     102  long long
     103  subdi_sxth (long long a, short i)
     104  {
     105    /* { dg-final { scan-assembler "sub\tx\[0-9\]+,.*sxth #?1" } } */
     106    return a - ((long long)i << 1);
     107  }
     108  
     109  long long
     110  subdi_sxth0 (long long a, short i)
     111  {
     112    /* { dg-final { scan-assembler "sub\tx\[0-9\]+,.*sxth\n" } } */
     113    return a - (long long)i;
     114  }
     115  
     116  unsigned int
     117  subsi_uxth (unsigned int a, unsigned short i)
     118  {
     119    /* { dg-final { scan-assembler "sub\tw\[0-9\]+,.*uxth #?1" } } */
     120    return a - ((unsigned int)i << 1);
     121  }
     122  
     123  unsigned int
     124  subsi_uxth0 (unsigned int a, unsigned short i)
     125  {
     126    /* { dg-final { scan-assembler "sub\tw\[0-9\]+,.*uxth\n" } } */
     127    return a - i;
     128  }
     129  
     130  int
     131  subsi_sxth (int a, short i)
     132  {
     133    /* { dg-final { scan-assembler "sub\tw\[0-9\]+,.*sxth #?1" } } */
     134    return a - ((int)i << 1);
     135  }
     136  
     137  int
     138  subsi_sxth0 (int a, short i)
     139  {
     140    /* { dg-final { scan-assembler "sub\tw\[0-9\]+,.*sxth\n" } } */
     141    return a - (int)i;
     142  }
     143  
     144  unsigned int
     145  addsi_uxth (unsigned int a, unsigned short i)
     146  {
     147    /* { dg-final { scan-assembler "add\tw\[0-9\]+,.*uxth #?1" } } */
     148    return a + ((unsigned int)i << 1);
     149  }
     150  
     151  unsigned int
     152  addsi_uxth0 (unsigned int a, unsigned short i)
     153  {
     154    /* { dg-final { scan-assembler "add\tw\[0-9\]+,.*uxth\n" } } */
     155    return a + i;
     156  }
     157  
     158  int
     159  addsi_sxth (int a, short i)
     160  {
     161    /* { dg-final { scan-assembler "add\tw\[0-9\]+,.*sxth #?1" } } */
     162    return a + ((int)i << 1);
     163  }
     164  
     165  int
     166  addsi_sxth0 (int a, short i)
     167  {
     168    /* { dg-final { scan-assembler "add\tw\[0-9\]+,.*sxth\n" } } */
     169    return a + (int)i;
     170  }