Commit 75dd5ace by James Greenhalgh Committed by James Greenhalgh

[AArch64] Add combiner patterns for FAC instructions

gcc/
	* config/aarch64/aarch64-simd.md (*aarch64_fac<optab><mode>): New.
	* config/aarch64/iterators.md (FAC_COMPARISONS): New.

From-SVN: r198494
parent ad755ff1
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
(vcond<mode>_internal): Handle special cases for constant masks.
(vcond<mode><mode>): Allow nonmemory_operands for outcome vectors.
......
......@@ -3400,6 +3400,23 @@
(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>"
......
......@@ -553,6 +553,9 @@
;; 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
;; -------------------------------------------------------------------
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment