1  /* { dg-do compile } */
       2  /* { dg-options "-mpure-code" } */
       3  
       4  int f3 (void) { return 0x11000000; }
       5  int f3_2 (void) { return 0x12345678; }
       6  int f3_3 (void) { return -1; }
       7  int f3_4 (void) { return 511; }
       8  
       9  /* For cortex-m0 (thumb-1/v6m), we generate 1 lsls in f3 3 lsls in f3_2 and 1 in f3_4; 1 rsbs in f3_3.  */
      10  /* { dg-final { scan-assembler-times "lsls" 5 { target { { ! arm_thumb1_movt_ok } && { ! arm_thumb2_ok } } } } } */
      11  /* { dg-final { scan-assembler-times "rsbs" 1 { target { { ! arm_thumb1_movt_ok } && { ! arm_thumb2_ok } } } } } */
      12  
      13  /* For cortex-m23 (thumb-1/v8m.base), we generate 1 lsls in f3, and none in f3_2 nor f3_4; 1 rsbs in f3_3.  */
      14  /* { dg-final { scan-assembler-times "lsls" 1 { target { arm_thumb1_movt_ok && { ! arm_thumb2_ok } } } } } */
      15  /* { dg-final { scan-assembler-times "rsbs" 1 { target { arm_thumb1_movt_ok && { ! arm_thumb2_ok } } } } } */
      16  
      17  /* For cortex-m3 (thumb-2/v7m), we generate no lsls and no rsbs.  */
      18  /* { dg-final { scan-assembler-times "lsls" 0 { target { arm_thumb2_ok } } } } */
      19  /* { dg-final { scan-assembler-times "rsbs" 0 { target { arm_thumb2_ok } } } } */
      20