Add support for the FCCMP insn types
authorEvandro Menezes <e.menezes@samsung.com>
Mon, 15 Feb 2016 21:15:49 +0000 (21:15 +0000)
committerEvandro Menezes <evandro@gcc.gnu.org>
Mon, 15 Feb 2016 21:15:49 +0000 (21:15 +0000)
2016-01-21  Evandro Menezes  <e.menezes@samsung.com>

gcc/
* config/aarch64/aarch64.md (fccmp): Change insn type.
(fccmpe): Likewise.
* config/aarch64/thunderx.md (thunderx_fcmp): Add "fccmp{s,d}" types.
* config/arm/cortex-a53.md (cortex_a53_fpalu): Likewise.
* config/arm/cortex-a57.md (cortex_a57_fp_cmp): Likewise.
* config/arm/xgene1.md (xgene1_fcmp): Likewise.
* config/arm/exynos-m1.md (exynos_m1_fp_ccmp): New insn reservation.
* config/arm/types.md (fccmps): Add new insn type.
(fccmpd): Likewise.

From-SVN: r233432

gcc/ChangeLog
gcc/config/aarch64/aarch64.md
gcc/config/aarch64/thunderx.md
gcc/config/arm/cortex-a53.md
gcc/config/arm/cortex-a57.md
gcc/config/arm/exynos-m1.md
gcc/config/arm/types.md
gcc/config/arm/xgene1.md

index 5858a5ef958eceba08c954d30964f9f81eb507ab..54e704226e68f64ce9b710718b380de592c3c171 100644 (file)
@@ -1,3 +1,17 @@
+2016-02-15  Evandro Menezes  <e.menezes@samsung.com>
+    
+       Add support for the FCCMP insn types
+
+       * config/aarch64/aarch64.md (fccmp): Change insn type.
+       (fccmpe): Likewise.
+       * config/aarch64/thunderx.md (thunderx_fcmp): Add "fccmp{s,d}" types.
+       * config/arm/cortex-a53.md (cortex_a53_fpalu): Likewise.
+       * config/arm/cortex-a57.md (cortex_a57_fp_cmp): Likewise.
+       * config/arm/xgene1.md (xgene1_fcmp): Likewise.
+       * config/arm/exynos-m1.md (exynos_m1_fp_ccmp): New insn reservation.
+       * config/arm/types.md (fccmps): Add new insn type.
+       (fccmpd): Likewise.
+
 2016-02-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
 
        * alias.c (get_alias_set): Fix a typo in comment.
index b42f550d29593a1c92ec3c76767a05d4c70357db..77bd191856a2fccf08fce4fe2ddc8382506468e1 100644 (file)
          (unspec:CCFP [(match_operand 5 "immediate_operand")] UNSPEC_NZCV)))]
   "TARGET_FLOAT"
   "fccmp\\t%<s>2, %<s>3, %k5, %m4"
-  [(set_attr "type" "fcmp<s>")]
+  [(set_attr "type" "fccmp<s>")]
 )
 
 (define_insn "fccmpe<mode>"
          (unspec:CCFPE [(match_operand 5 "immediate_operand")] UNSPEC_NZCV)))]
   "TARGET_FLOAT"
   "fccmpe\\t%<s>2, %<s>3, %k5, %m4"
-  [(set_attr "type" "fcmp<s>")]
+  [(set_attr "type" "fccmp<s>")]
 )
 
 ;; Expansion of signed mod by a power of 2 using CSNEG.
index 922df390386f1636d88b7b80217bfc5dc2fa5955..058713a2ad98a364d36a3faaf0e93c39cb89adbc 100644 (file)
 
 (define_insn_reservation "thunderx_fcmp" 3
   (and (eq_attr "tune" "thunderx")
-       (eq_attr "type" "fcmps,fcmpd"))
+       (eq_attr "type" "fcmps,fcmpd,fccmps,fccmpd"))
   "thunderx_pipe1")
 
 (define_insn_reservation "thunderx_fmul" 6
index c1eeedb72dde271cf03817c525e9e0eaa943c4f6..fc60bc26c7caf7e94064d7f292b877b12f333fca 100644 (file)
 (define_insn_reservation "cortex_a53_fpalu" 5
   (and (eq_attr "tune" "cortexa53")
        (eq_attr "type" "ffariths, fadds, ffarithd, faddd, fmov,
-                       f_cvt, fcmps, fcmpd, fcsel, f_rints, f_rintd,
-                       f_minmaxs, f_minmaxd"))
+                       f_cvt, fcmps, fcmpd, fccmps, fccmpd, fcsel,
+                       f_rints, f_rintd, f_minmaxs, f_minmaxd"))
   "cortex_a53_slot_any,cortex_a53_fp_alu")
 
 (define_insn_reservation "cortex_a53_fconst" 3
index ca6cfc029a256109c97d11fc63f34316f96921e8..37912db464315a0d70835b81991e8e07a4d9db89 100644 (file)
 
 (define_insn_reservation "cortex_a57_fp_cmp" 7
   (and (eq_attr "tune" "cortexa57")
-       (eq_attr "type" "fcmps,fcmpd"))
+       (eq_attr "type" "fcmps,fcmpd,fccmps,fccmpd"))
   "ca57_cx2")
 
 (define_insn_reservation "cortex_a57_fp_arith" 4
index 044807321fa0d50fd098e22de39fbb307962f02f..2f52b22fb50bd3864f4ccd713eb46ea9ffaec64b 100644 (file)
        (eq_attr "type" "fcmps, fcmpd"))
   "em1_nmisc")
 
+(define_insn_reservation "exynos_m1_fp_ccmp" 7
+  (and (eq_attr "tune" "exynosm1")
+       (eq_attr "type" "fccmps, fccmpd"))
+  "(em1_st, em1_nmisc)")
+
 (define_insn_reservation "exynos_m1_fp_sel" 4
   (and (eq_attr "tune" "exynosm1")
        (eq_attr "type" "fcsel"))
index 321ff898bd816082b77b6ad69f29ba9e205a2fae..25f79b4d010ae24c14d97d9fead93db1eff42f32 100644 (file)
@@ -70,6 +70,7 @@
 ; f_rint[d,s]        double/single floating point rount to integral.
 ; f_store[d,s]       double/single store to memory.  Used for VFP unit.
 ; fadd[d,s]          double/single floating-point scalar addition.
+; fccmp[d,s]         From ARMv8-A: floating-point conditional compare.
 ; fcmp[d,s]          double/single floating-point compare.
 ; fconst[d,s]        double/single load immediate.
 ; fcsel              From ARMv8-A: Floating-point conditional select.
   f_stores,\
   faddd,\
   fadds,\
+  fccmpd,\
+  fccmps,\
   fcmpd,\
   fcmps,\
   fconstd,\
index 8dfd8a188b98ecf5962649bc5cc5530a22079c63..b7aeac6916353f9a02b56821e3df3c2f43fc2946 100644 (file)
 
 (define_insn_reservation "xgene1_fcmp" 10
   (and (eq_attr "tune" "xgene1")
-       (eq_attr "type" "fcmpd,fcmps"))
+       (eq_attr "type" "fcmpd,fcmps,fccmpd,fccmps"))
   "xgene1_decode1op,xgene1_fsu+xgene1_fcmp*3")
 
 (define_insn_reservation "xgene1_fcsel" 3