From c278658453f6cc135ff0cc94368752f4402d11a6 Mon Sep 17 00:00:00 2001 From: Kyrylo Tkachov Date: Tue, 9 Sep 2014 11:27:00 +0000 Subject: [PATCH] [ARM][5/7] Convert FP mnemonics to UAL | sqrt and FP compare patterns * config/arm/vfp.md (*sqrtsf2_vfp): Use UAL assembly syntax. (*sqrtdf2_vfp): Likewise. (*cmpsf_vfp): Likewise. (*cmpsf_trap_vfp): Likewise. (*cmpdf_vfp): Likewise. (*cmpdf_trap_vfp): Likewise. * gcc.target/arm/vfp-1.c: Updated expected assembly. From-SVN: r215054 --- gcc/ChangeLog | 9 +++++++++ gcc/config/arm/vfp.md | 23 +++++++++++++---------- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.target/arm/vfp-1.c | 4 ++-- 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 12ed31f4d19..a2fe5488083 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2014-09-09 Kyrylo Tkachov + + * config/arm/vfp.md (*sqrtsf2_vfp): Use UAL assembly syntax. + (*sqrtdf2_vfp): Likewise. + (*cmpsf_vfp): Likewise. + (*cmpsf_trap_vfp): Likewise. + (*cmpdf_vfp): Likewise. + (*cmpdf_trap_vfp): Likewise. + 2014-09-09 Kyrylo Tkachov * config/arm/vfp.md (*extendsfdf2_vfp): Use UAL assembly syntax. diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md index 0afd8bf060b..d23f7c901e8 100644 --- a/gcc/config/arm/vfp.md +++ b/gcc/config/arm/vfp.md @@ -1082,7 +1082,7 @@ [(set (match_operand:SF 0 "s_register_operand" "=&t,t") (sqrt:SF (match_operand:SF 1 "s_register_operand" "t,t")))] "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" - "fsqrts%?\\t%0, %1" + "vsqrt%?.f32\\t%0, %1" [(set_attr "predicable" "yes") (set_attr "predicable_short_it" "no") (set_attr "arch" "*,armv6_or_vfpv3") @@ -1093,7 +1093,7 @@ [(set (match_operand:DF 0 "s_register_operand" "=&w,w") (sqrt:DF (match_operand:DF 1 "s_register_operand" "w,w")))] "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" - "fsqrtd%?\\t%P0, %P1" + "vsqrt%?.f64\\t%P0, %P1" [(set_attr "predicable" "yes") (set_attr "predicable_short_it" "no") (set_attr "arch" "*,armv6_or_vfpv3") @@ -1175,14 +1175,17 @@ ;; Comparison patterns +;; In the compare with FP zero case the ARM Architecture Reference Manual +;; specifies the immediate to be #0.0. However, some buggy assemblers only +;; accept #0. We don't want to autodetect broken assemblers, so output #0. (define_insn "*cmpsf_vfp" [(set (reg:CCFP VFPCC_REGNUM) (compare:CCFP (match_operand:SF 0 "s_register_operand" "t,t") (match_operand:SF 1 "vfp_compare_operand" "t,G")))] "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" "@ - fcmps%?\\t%0, %1 - fcmpzs%?\\t%0" + vcmp%?.f32\\t%0, %1 + vcmp%?.f32\\t%0, #0" [(set_attr "predicable" "yes") (set_attr "predicable_short_it" "no") (set_attr "type" "fcmps")] @@ -1194,8 +1197,8 @@ (match_operand:SF 1 "vfp_compare_operand" "t,G")))] "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" "@ - fcmpes%?\\t%0, %1 - fcmpezs%?\\t%0" + vcmpe%?.f32\\t%0, %1 + vcmpe%?.f32\\t%0, #0" [(set_attr "predicable" "yes") (set_attr "predicable_short_it" "no") (set_attr "type" "fcmps")] @@ -1207,8 +1210,8 @@ (match_operand:DF 1 "vfp_compare_operand" "w,G")))] "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "@ - fcmpd%?\\t%P0, %P1 - fcmpzd%?\\t%P0" + vcmp%?.f64\\t%P0, %P1 + vcmp%?.f64\\t%P0, #0" [(set_attr "predicable" "yes") (set_attr "predicable_short_it" "no") (set_attr "type" "fcmpd")] @@ -1220,8 +1223,8 @@ (match_operand:DF 1 "vfp_compare_operand" "w,G")))] "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "@ - fcmped%?\\t%P0, %P1 - fcmpezd%?\\t%P0" + vcmpe%?.f64\\t%P0, %P1 + vcmpe%?.f64\\t%P0, #0" [(set_attr "predicable" "yes") (set_attr "predicable_short_it" "no") (set_attr "type" "fcmpd")] diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 65783e1f0a3..7214b7ee1c7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -10,6 +10,10 @@ * gcc.target/arm/vfp-1.c: Updated expected assembly. +2014-09-09 Kyrylo Tkachov + + * gcc.target/arm/vfp-1.c: Updated expected assembly. + 2014-09-09 Kyrylo Tkachov * gcc.target/arm/pr51835.c: Update expected assembly. diff --git a/gcc/testsuite/gcc.target/arm/vfp-1.c b/gcc/testsuite/gcc.target/arm/vfp-1.c index 1a970a701cd..8ceef2ba637 100644 --- a/gcc/testsuite/gcc.target/arm/vfp-1.c +++ b/gcc/testsuite/gcc.target/arm/vfp-1.c @@ -44,7 +44,7 @@ void test_sf() { /* { dg-final { scan-assembler "vnmla.f32" } } */ f1 = -f2 * f3 - f1; /* sqrtsf2_vfp */ - /* { dg-final { scan-assembler "fsqrts" } } */ + /* { dg-final { scan-assembler "vsqrt.f32" } } */ f1 = sqrtf (f1); } @@ -85,7 +85,7 @@ void test_df() { /* { dg-final { scan-assembler "vnmla.f64" } } */ d1 = -d2 * d3 - d1; /* sqrtdf2_vfp */ - /* { dg-final { scan-assembler "fsqrtd" } } */ + /* { dg-final { scan-assembler "vsqrt.f64" } } */ d1 = sqrt (d1); } -- 2.30.2