[AArch64] Add combiner patterns for FAC instructions
authorJames Greenhalgh <james.greenhalgh@arm.com>
Wed, 1 May 2013 10:46:00 +0000 (10:46 +0000)
committerJames Greenhalgh <jgreenhalgh@gcc.gnu.org>
Wed, 1 May 2013 10:46:00 +0000 (10:46 +0000)
gcc/
* config/aarch64/aarch64-simd.md (*aarch64_fac<optab><mode>): New.
* config/aarch64/iterators.md (FAC_COMPARISONS): New.

From-SVN: r198494

gcc/ChangeLog
gcc/config/aarch64/aarch64-simd.md
gcc/config/aarch64/iterators.md

index d0392c80076093f40c8793f70df86b219ec92968..ccc1fc7c4a34c92bc4e9e2e60f48b88e67821b91 100644 (file)
@@ -1,3 +1,8 @@
+2013-05-01  James Greenhalgh  <james.greenhalgh@arm.com>
+
+       * config/aarch64/aarch64-simd.md (*aarch64_fac<optab><mode>): New.
+       * config/aarch64/iterators.md (FAC_COMPARISONS): New.
+
 2013-05-01  James Greenhalgh  <james.greenhalgh@arm.com>
 
        * config/aarch64/aarch64-simd.md
index dfe4acb51a8b35d5e005176e5263141b9c971d2e..21c2a68e095a8b6f871f453e44f4ebc66af6bf82 100644 (file)
    (set_attr "simd_mode" "<MODE>")]
 )
 
+;; fac(ge|gt)
+;; Note we can also handle what would be fac(le|lt) by
+;; generating fac(ge|gt).
+
+(define_insn "*aarch64_fac<optab><mode>"
+  [(set (match_operand:<V_cmp_result> 0 "register_operand" "=w")
+       (neg:<V_cmp_result>
+         (FAC_COMPARISONS:<V_cmp_result>
+           (abs:VALLF (match_operand:VALLF 1 "register_operand" "w"))
+           (abs:VALLF (match_operand:VALLF 2 "register_operand" "w"))
+  )))]
+  "TARGET_SIMD"
+  "fac<n_optab>\t%<v>0<Vmtype>, %<v><cmp_1><Vmtype>, %<v><cmp_2><Vmtype>"
+  [(set_attr "simd_type" "simd_fcmp")
+   (set_attr "simd_mode" "<MODE>")]
+)
+
 ;; addp
 
 (define_insn "aarch64_addp<mode>"
index 0b9f9e84069dca631dd6d67a7ec033dba0905404..00e315d920cf3e457e1fb636e2284cf917cd1ce7 100644 (file)
 ;; Unsigned comparison operators.
 (define_code_iterator UCOMPARISONS [ltu leu geu gtu])
 
+;; Unsigned comparison operators.
+(define_code_iterator FAC_COMPARISONS [lt le ge gt])
+
 ;; -------------------------------------------------------------------
 ;; Code Attributes
 ;; -------------------------------------------------------------------