Commit d78ba518 by Segher Boessenkool Committed by Segher Boessenkool

rs6000: Add "enabled" attribute

This adds the "enabled" attribute to the rs6000 backend.  It uses the
(new) "isa" attribute to automatically select which instruction
alternatives should be enabled.

For now it allows isa strings of "p5", "p6", "p7", meaning the
instructions introduced on that CPU, not requiring vectors; and "p7v",
"p8v", "p9v" for the same, but with vectors.

These are currently mapped to TARGET_POPCNTB, TARGET_CMPB,
TARGET_POPCNTD, TARGET_VSX, TARGET_P8_VECTOR, and TARGET_P9_VECTOR;
that will change to something a bit saner later.


	* config/rs6000/rs6000.md (isa): New attribute.
	(enabled): New attribute.

From-SVN: r271360
parent 6b5777c6
2019-05-17 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000.md (isa): New attribute.
(enabled): New attribute.
2019-05-17 Max Filippov <jcmvbkbc@gmail.com> 2019-05-17 Max Filippov <jcmvbkbc@gmail.com>
* config/aarch64/aarch64.c (aarch64_output_mi_thunk): Call * config/aarch64/aarch64.c (aarch64_output_mi_thunk): Call
......
...@@ -265,6 +265,39 @@ ...@@ -265,6 +265,39 @@
rs64a,mpccore,cell,ppca2,titan" rs64a,mpccore,cell,ppca2,titan"
(const (symbol_ref "(enum attr_cpu) rs6000_tune"))) (const (symbol_ref "(enum attr_cpu) rs6000_tune")))
;; The ISA we implement.
(define_attr "isa" "any,p5,p6,p7,p7v,p8v,p9v" (const_string "any"))
;; Is this alternative enabled for the current CPU/ISA/etc.?
(define_attr "enabled" ""
(cond
[(eq_attr "isa" "any")
(const_int 1)
(and (eq_attr "isa" "p5")
(match_test "TARGET_POPCNTB"))
(const_int 1)
(and (eq_attr "isa" "p6")
(match_test "TARGET_CMPB"))
(const_int 1)
(and (eq_attr "isa" "p7")
(match_test "TARGET_POPCNTD"))
(const_int 1)
(and (eq_attr "isa" "p7v")
(match_test "TARGET_VSX"))
(const_int 1)
(and (eq_attr "isa" "p8v")
(match_test "TARGET_P8_VECTOR"))
(const_int 1)
(and (eq_attr "isa" "p9v")
(match_test "TARGET_P9_VECTOR"))
(const_int 1)
] (const_int 0)))
;; If this instruction is microcoded on the CELL processor ;; If this instruction is microcoded on the CELL processor
; The default for load extended, the recorded instructions and rotate/shifts by a variable is always microcoded ; The default for load extended, the recorded instructions and rotate/shifts by a variable is always microcoded
......
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