| /* { dg-do compile } */ |
| /* { dg-skip-if "skip override" { *-*-* } { "-mfloat-abi=hard" } { "" } } */ |
| /* { dg-options "-mpure-code -mcpu=cortex-m0 -march=armv6s-m -mthumb -mfloat-abi=soft" } */ |
| /* { dg-final { check-function-bodies "**" "" } } */ |
| |
| /* Does not use thumb1_gen_const_int. |
| ** test_0: |
| ** ... |
| ** movs r[0-3], #0 |
| ** ... |
| */ |
| int |
| test_0 () |
| { |
| return 0; |
| } |
| |
| /* Does not use thumb1_gen_const_int. |
| ** test_128: |
| ** ... |
| ** movs r[0-3], #128 |
| ** ... |
| */ |
| int |
| test_128 () |
| { |
| return 128; |
| } |
| |
| /* Does not use thumb1_gen_const_int. |
| ** test_264: |
| ** ... |
| ** movs r[0-3], #132 |
| ** lsls r[0-3], r[0-3], #1 |
| ** ... |
| */ |
| int |
| test_264 () |
| { |
| return 264; |
| } |
| |
| /* Does not use thumb1_gen_const_int. |
| ** test_510: |
| ** ... |
| ** movs r[0-3], #255 |
| ** lsls r[0-3], r[0-3], #1 |
| ** ... |
| */ |
| int |
| test_510 () |
| { |
| return 510; |
| } |
| |
| /* Does not use thumb1_gen_const_int. |
| ** test_512: |
| ** ... |
| ** movs r[0-3], #128 |
| ** lsls r[0-3], r[0-3], #2 |
| ** ... |
| */ |
| int |
| test_512 () |
| { |
| return 512; |
| } |
| |
| /* Does not use thumb1_gen_const_int. |
| ** test_764: |
| ** ... |
| ** movs r[0-3], #191 |
| ** lsls r[0-3], r[0-3], #2 |
| ** ... |
| */ |
| int |
| test_764 () |
| { |
| return 764; |
| } |
| |
| /* Does not use thumb1_gen_const_int. |
| ** test_65536: |
| ** ... |
| ** movs r[0-3], #128 |
| ** lsls r[0-3], r[0-3], #9 |
| ** ... |
| */ |
| int |
| test_65536 () |
| { |
| return 65536; |
| } |
| |
| /* |
| ** test_0x123456: |
| ** ... |
| ** movs r[0-3], #18 |
| ** lsls r[0-3], r[0-3], #8 |
| ** adds r[0-3], r[0-3], #52 |
| ** lsls r[0-3], r[0-3], #8 |
| ** adds r[0-3], r[0-3], #86 |
| ** ... |
| */ |
| int |
| test_0x123456 () |
| { |
| return 0x123456; |
| } |
| |
| /* |
| ** test_0x1123456: |
| ** ... |
| ** movs r[0-3], #137 |
| ** lsls r[0-3], r[0-3], #8 |
| ** adds r[0-3], r[0-3], #26 |
| ** lsls r[0-3], r[0-3], #8 |
| ** adds r[0-3], r[0-3], #43 |
| ** lsls r[0-3], r[0-3], #1 |
| ** ... |
| */ |
| int |
| test_0x1123456 () |
| { |
| return 0x1123456; |
| } |
| |
| /* With -Os, we generate: |
| movs r0, #16 |
| lsls r0, r0, r0 |
| With the other optimization levels, we generate: |
| movs r0, #16 |
| lsls r0, r0, #16 |
| hence the two alternatives. */ |
| /* |
| ** test_0x1000010: |
| ** ... |
| ** movs r[0-3], #16 |
| ** lsls r[0-3], r[0-3], (#16|r[0-3]) |
| ** adds r[0-3], r[0-3], #1 |
| ** lsls r[0-3], r[0-3], #4 |
| ** ... |
| */ |
| int |
| test_0x1000010 () |
| { |
| return 0x1000010; |
| } |
| |
| /* |
| ** test_0x1000011: |
| ** ... |
| ** movs r[0-3], #1 |
| ** lsls r[0-3], r[0-3], #24 |
| ** adds r[0-3], r[0-3], #17 |
| ** ... |
| */ |
| int |
| test_0x1000011 () |
| { |
| return 0x1000011; |
| } |
| |
| /* |
| ** test_m8192: |
| ** ... |
| ** movs r[0-3], #1 |
| ** lsls r[0-3], r[0-3], #13 |
| ** rsbs r[0-3], r[0-3], #0 |
| ** ... |
| */ |
| int |
| test_m8192 () |
| { |
| return -8192; |
| } |