/* Verify that hardware multiply is preferred on XScale. */ | |
/* { dg-do compile } */ | |
/* { dg-options "-mcpu=xscale -O2" } */ | |
/* { dg-require-effective-target arm32 } */ | |
/* 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; | |
} | |
/* { dg-final { scan-assembler "mla\[ ].*" } } */ |