| /* Verify that hardware multiply is preferred on XScale. */ |
| /* { dg-do compile { target xscale*-*-* } } */ |
| /* { dg-options "-mcpu=xscale -O2" } */ |
| |
| /* Brett Gaines' test case. */ |
| unsigned BCPL(unsigned) __attribute__ ((naked)); |
| unsigned BCPL(unsigned seed) |
| { |
| /* Best code would be: |
| ldr r1, =2147001325 |
| ldr r2, =715136305 |
| mla r0, r1, r0, r2 |
| mov pc, lr */ |
| |
| return seed * 2147001325U + 715136305U; |
| } |
| |
| /* We want to suppress running for -mthumb but not for -mthumb-interwork. */ |
| /* { dg-final { global compiler_flags; if ![string match "*-mthumb *" $compiler_flags] { scan-assembler "mla\[ ].*" } } } */ |