Hi Renlin, The new test you added introduces 2 new FAILs when the target is arm-none-linux-gnueabi (as opposed to arm-none-linux-gnueabihf).
Christophe. On 24 December 2013 15:46, Renlin Li <renlin...@arm.com> wrote: > Hi, > > I just updated my patch according your suggestion. > Thank you for committing it for me! > > All you guys have a nice Xmas break! > > Kind regards, > Renlin Li > > > On 04/12/13 11:23, Ramana Radhakrishnan wrote: >> >> Sorry about the slow response. Been on holiday. >> >> On 20/11/13 16:27, Renlin Li wrote: >>> >>> Hi all, >>> >>> This patch will make the arm back-end use vcvt for float to fixed point >>> conversions when applicable. >>> >>> Test on arm-none-linux-gnueabi has been done on the model. >>> Okay for trunk? >>> >>> + (define_insn "*combine_vcvtf2i" >>> + [(set (match_operand:SI 0 "s_register_operand" "=r") >>> + (fix:SI (fix:SF (mult:SF (match_operand:SF 1 "s_register_operand" >>> "t") >>> + (match_operand 2 >>> + "const_double_vcvt_power_of_two" >>> "Dp")))))] >>> + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP3 && >>> !flag_rounding_math" >>> + "vcvt%?.s32.f32\\t%1, %1, %v2\;vmov%?\\t%0, %1" >>> + [(set_attr "predicable" "yes") >>> + (set_attr "predicable_short_it" "no") >>> + (set_attr "ce_count" "2") >>> + (set_attr "type" "f_cvtf2i")] >>> + ) >>> + >> >> You need to set length to 8. >> >>> --- /dev/null >>> +++ b/gcc/testsuite/gcc.target/arm/fixed_float_conversion.c >>> @@ -0,0 +1,15 @@ >>> +/* Check that vcvt is used for fixed and float data conversions. */ >>> +/* { dg-do compile } */ >>> +/* { dg-options "-O1 -mfpu=vfp3" } */ >>> +/* { dg-require-effective-target arm_vfp_ok } */ >>> +float fixed_to_float(int i) >>> +{ >>> + return ((float)i / (1 << 16)); >>> +} >>> + >>> +int float_to_fixed(float f) >>> +{ >>> + return ((int)(f*(1 << 16))); >>> +} >>> +/* { dg-final { scan-assembler "vcvt.f32.s32" } } */ >>> +/* { dg-final { scan-assembler "vcvt.s32.f32" } } */ >> >> >> GNU coding style for functions. >> >> Ok with those changes. >> >> >> >> >> regards >> Ramana >> >> >>> Kind regards, >>> Renlin Li >>> >>> >>> gcc/ChangeLog: >>> >>> 2013-11-20 Renlin Li <renlin...@arm.com> >>> >>> * config/arm/arm-protos.h (vfp_const_double_for_bits): Declare. >>> * config/arm/constraints.md (Dp): Define new constraint. >>> * config/arm/predicates.md ( const_double_vcvt_power_of_two): >>> Define >>> new predicate. >>> * config/arm/arm.c (arm_print_operand): Add print for new >>> fucntion. >>> (vfp3_const_double_for_bits): New function. >>> * config/arm/vfp.md (combine_vcvtf2i): Define new instruction. >>> >>> gcc/testsuite/ChangeLog: >>> >>> 2013-11-20 Renlin Li <renlin...@arm.com> >>> >>> * gcc.target/arm/fixed_float_conversion.c: New test case. >>> >