(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
bpf/
core-builtin-fieldinfo-lshift-2.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O0 -dA -gbtf -mco-re" } */
       3  
       4  struct S {
       5    char c;
       6    short s;
       7    int x;
       8  };
       9  
      10  union U {
      11    struct S s[2];
      12    long long ll;
      13  };
      14  
      15  enum {
      16    FIELD_LSHIFT_U64 = 4,
      17  };
      18  
      19  unsigned int foo (union U *u)
      20  {
      21    /* s0s = 48, s1c = 56, ll = 0; endianness independent.  */
      22    unsigned s0s = __builtin_preserve_field_info (u->s[0].s, FIELD_LSHIFT_U64);
      23    unsigned s1c = __builtin_preserve_field_info (u->s[1].c, FIELD_LSHIFT_U64);
      24    unsigned ll  = __builtin_preserve_field_info (u->ll, FIELD_LSHIFT_U64);
      25  
      26    return s0s + s1c + ll;
      27  }
      28  
      29  /* { dg-final { scan-assembler-times "\[\t \]mov\[\t \]%r\[0-9\],48" 1 } } */
      30  /* { dg-final { scan-assembler-times "\[\t \]mov\[\t \]%r\[0-9\],56" 1 } } */
      31  /* { dg-final { scan-assembler-times "\[\t \]mov\[\t \]%r\[0-9\],0" 1 } } */
      32  
      33  /* { dg-final { scan-assembler-times "ascii \"0:0:0:1.0\"\[\t \]+\[^\n\]*btf_aux_string" 1 } } */
      34  /* { dg-final { scan-assembler-times "ascii \"0:0:1:0.0\"\[\t \]+\[^\n\]*btf_aux_string" 1 } } */
      35  /* { dg-final { scan-assembler-times "ascii \"0:1.0\"\[\t \]+\[^\n\]*btf_aux_string" 1 } } */
      36  
      37  /* { dg-final { scan-assembler-times "0x4\[\t \]+\[^\n\]*bpfcr_kind" 3 } } */