1  /* Check that a comparison 'unsigned int <= 0x7FFFFFFF' results in code
       2     utilizing the cmp/pz instruction.  */
       3  /* { dg-do compile }  */
       4  /* { dg-options "-O1" } */
       5  /* { dg-final { scan-assembler-not "not\[ \t\]" } } */
       6  /* { dg-final { scan-assembler-times "cmp/pz" 7 } } */
       7  /* { dg-final { scan-assembler-times "shll" 1 } } */
       8  /* { dg-final { scan-assembler-times "movt" 4 } } */
       9  
      10  int
      11  test_00 (unsigned int a)
      12  {
      13    return !(a > 0x7FFFFFFF);
      14  }
      15  
      16  int
      17  test_01 (unsigned int a)
      18  {
      19    return !(a > 0x7FFFFFFF) ? -5 : 10;
      20  }
      21  
      22  int
      23  test_02 (unsigned int a)
      24  {
      25    /* 1x shll, 1x movt  */
      26    return a >= 0x80000000;
      27  }
      28  
      29  int
      30  test_03 (unsigned int a)
      31  {
      32    return a >= 0x80000000 ? -5 : 10;
      33  }
      34  
      35  int
      36  test_04 (unsigned int a)
      37  {
      38    return a <= 0x7FFFFFFF;
      39  }
      40  
      41  int
      42  test_05 (unsigned int a)
      43  {
      44    return a <= 0x7FFFFFFF ? -5 : 10;
      45  }
      46  
      47  int
      48  test_06 (unsigned int a)
      49  {
      50    return a < 0x80000000;
      51  }
      52  
      53  int
      54  test_07 (unsigned int a)
      55  {
      56    return a < 0x80000000 ? -5 : 10;
      57  }