On Thu, 2012-03-15 at 08:12 +0900, Kaz Kojima wrote: > Oleg Endo <oleg.e...@t-online.de> wrote: > > I'd like to add an SH target testcase which is supposed to check the > > usage of the FPUL register when float values are treated as int and vice > > versa. Does this make sense? > > > > Tested against rev 185360 with the usual > > > > make -k check RUNTESTFLAGS="--target_board=sh-sim > > \{-m2/-ml,-m2/-mb,-m2a-single/-mb, > > -m4-single/-ml,-m4-single/-mb, > > -m4a-single/-ml,-m4a-single/-mb}" > > > > and individually with some of the sub-target variations that do not have > > an FPU (for which the test is skipped). > > ENOPATCH. Sounds a good idea though.
Argh, sorry .. now there is.
Index: gcc/testsuite/gcc.target/sh/fpul-usage-1.c =================================================================== --- gcc/testsuite/gcc.target/sh/fpul-usage-1.c (revision 0) +++ gcc/testsuite/gcc.target/sh/fpul-usage-1.c (revision 0) @@ -0,0 +1,24 @@ +/* Check that the FPUL register is used when reading a float as an int and + vice versa, as opposed to pushing and popping the values over the stack. */ +/* { dg-do compile { target "sh*-*-*" } } */ +/* { dg-options "-O1" } */ +/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */ +/* { dg-final { scan-assembler "fpul" } } */ +/* { dg-final { scan-assembler-not "r15" } } */ + +int +float_as_int (float val) +{ + union { float f; int i; } u; + u.f = val; + return u.i; +} + +float +int_as_float (int val) +{ + union { float f; int i; } u; + u.i = val; + return u.f; +} +