1  /* { dg-options "isa_rev>=6 -mgp64" } */
       2  /* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
       3  /* { dg-final { scan-assembler-not "\tsb\t" } } */
       4  /* { dg-final { scan-assembler-not "\tsh\t" } } */
       5  /* { dg-final { scan-assembler-not "\tlb\t" } } */
       6  /* { dg-final { scan-assembler-not "\tlh\t" } } */
       7  /* { dg-final { scan-assembler-not "\tswl\t" } } */
       8  /* { dg-final { scan-assembler-not "\tswr\t" } } */
       9  /* { dg-final { scan-assembler-not "\tlwl\t" } } */
      10  /* { dg-final { scan-assembler-not "\tlwr\t" } } */
      11  /* { dg-final { scan-assembler-not "\tsdl\t" } } */
      12  /* { dg-final { scan-assembler-not "\tsdr\t" } } */
      13  /* { dg-final { scan-assembler-not "\tldl\t" } } */
      14  /* { dg-final { scan-assembler-not "\tldr\t" } } */
      15  /* { dg-final { scan-assembler-times "\tsw\t" 1 } } */
      16  /* { dg-final { scan-assembler-times "\tlw\t" 1 } } */
      17  /* { dg-final { scan-assembler-times "\tsd\t" 1 } } */
      18  /* { dg-final { scan-assembler-times "\tld\t" 1 } } */
      19  /* { dg-final { scan-assembler-not "\tnop" } } */
      20  
      21  /* Test to make sure we produce the unaligned load/store for
      22     both 64bit and 32bits sized accesses.  */
      23  
      24  struct s
      25  {
      26    char c;
      27    int i;
      28    long long l;
      29  } __attribute__ ((packed)) s __attribute__((aligned(1) ));
      30  
      31  NOMIPS16 void
      32  sd (long long l)
      33  {
      34    s.l = l;
      35  }
      36  
      37  NOMIPS16 long long
      38  ld ()
      39  {
      40    return s.l;
      41  }
      42  
      43  NOMIPS16 void
      44  sw (int i)
      45  {
      46    s.i = i;
      47  }
      48  
      49  NOMIPS16 int
      50  lw ()
      51  {
      52    return s.i;
      53  }