sse.md (xop integer multiply/add insns): Use register_operand for operand 3 predicate.
* config/i386/sse.md (xop integer multiply/add insns): Use register_operand for operand 3 predicate. (xop_phadd<u>bq): Fix vec_select selectors. From-SVN: r190314
This commit is contained in:
parent
8810cc52c9
commit
920ac8043e
2 changed files with 29 additions and 24 deletions
|
@ -1,3 +1,9 @@
|
|||
2012-08-11 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
* config/i386/sse.md (xop integer multiply/add insns): Use
|
||||
register_operand for operand 3 predicate.
|
||||
(xop_phadd<u>bq): Fix vec_select selectors.
|
||||
|
||||
2012-08-11 Martin Jambor <mjambor@suse.cz>
|
||||
|
||||
PR fortran/48636
|
||||
|
@ -48,7 +54,8 @@
|
|||
(produce_asm_for_decls): Likewise.
|
||||
(lto_output): Use output_symtab.
|
||||
* lto-section-in.c (lto_section_name): Update.
|
||||
* lto-section-out.c (lto_destroy_simple_output_block): Remove section_type.
|
||||
* lto-section-out.c (lto_destroy_simple_output_block): Remove
|
||||
section_type.
|
||||
* lto-streamer.h (enum lto_section_type): Remove LTO_section_varpool;
|
||||
rename LTO_section_cgraph to LTO_section_symtab_nodes.
|
||||
(struct lto_header): Remove section_type.
|
||||
|
@ -87,7 +94,7 @@
|
|||
(add_node_to): Update.
|
||||
(add_references): Update.
|
||||
(output_outgoing_cgraph_edges): Update.
|
||||
(output_refs): Update.
|
||||
(output_refs): Update.
|
||||
(compute_ltrans_boundary): Update.
|
||||
(output_cgraph): Update; output varpools too.
|
||||
(input_overwrite_node): Update.
|
||||
|
@ -124,15 +131,16 @@
|
|||
add symtab_node_encoder.
|
||||
(lto_file_decl_data): Likewise.
|
||||
(lto_cgraph_encoder_deref, lto_cgraph_encoder_lookup,
|
||||
lto_cgraph_encoder_new, lto_cgraph_encoder_encode, lto_cgraph_encoder_delete,
|
||||
lto_cgraph_encoder_encode_body_p, lto_varpool_encoder_encode_body_p,
|
||||
lto_varpool_encoder_deref, lto_varpool_encoder_lookup, lto_varpool_encoder_new,
|
||||
lto_cgraph_encoder_new, lto_cgraph_encoder_encode,
|
||||
lto_cgraph_encoder_delete, lto_cgraph_encoder_encode_body_p,
|
||||
lto_varpool_encoder_encode_body_p, lto_varpool_encoder_deref,
|
||||
lto_varpool_encoder_lookup, lto_varpool_encoder_new,
|
||||
lto_varpool_encoder_encode, lto_varpool_encoder_delete,
|
||||
lto_varpool_encoder_encode_initializer_p): Remove.
|
||||
(lto_symtab_encoder_deref, lto_symtab_encoder_lookup,
|
||||
lto_symtab_encoder_t, lto_symtab_encoder_encode, lto_symtab_encoder_delete,
|
||||
lto_symtab_encoder_encode_body_p, lto_symtab_encoder_encode_initializer_p):
|
||||
New.
|
||||
lto_symtab_encoder_t, lto_symtab_encoder_encode,
|
||||
lto_symtab_encoder_delete, lto_symtab_encoder_encode_body_p,
|
||||
lto_symtab_encoder_encode_initializer_p): New.
|
||||
|
||||
2012-08-11 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
|
|
|
@ -9547,9 +9547,6 @@
|
|||
(define_code_attr madcs [(plus "madcs") (ss_plus "madcss")])
|
||||
|
||||
;; XOP parallel integer multiply/add instructions.
|
||||
;; Note the XOP multiply/add instructions
|
||||
;; a[i] = b[i] * c[i] + d[i];
|
||||
;; do not allow the value being added to be a memory operation.
|
||||
|
||||
(define_insn "xop_p<macs><ssemodesuffix><ssemodesuffix>"
|
||||
[(set (match_operand:VI24_128 0 "register_operand" "=x")
|
||||
|
@ -9557,7 +9554,7 @@
|
|||
(mult:VI24_128
|
||||
(match_operand:VI24_128 1 "nonimmediate_operand" "%x")
|
||||
(match_operand:VI24_128 2 "nonimmediate_operand" "xm"))
|
||||
(match_operand:VI24_128 3 "nonimmediate_operand" "x")))]
|
||||
(match_operand:VI24_128 3 "register_operand" "x")))]
|
||||
"TARGET_XOP"
|
||||
"vp<macs><ssemodesuffix><ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
|
||||
[(set_attr "type" "ssemuladd")
|
||||
|
@ -9575,7 +9572,7 @@
|
|||
(vec_select:V2SI
|
||||
(match_operand:V4SI 2 "nonimmediate_operand" "xm")
|
||||
(parallel [(const_int 0) (const_int 2)]))))
|
||||
(match_operand:V2DI 3 "nonimmediate_operand" "x")))]
|
||||
(match_operand:V2DI 3 "register_operand" "x")))]
|
||||
"TARGET_XOP"
|
||||
"vp<macs>dql\t{%3, %2, %1, %0|%0, %1, %2, %3}"
|
||||
[(set_attr "type" "ssemuladd")
|
||||
|
@ -9593,7 +9590,7 @@
|
|||
(vec_select:V2SI
|
||||
(match_operand:V4SI 2 "nonimmediate_operand" "xm")
|
||||
(parallel [(const_int 1) (const_int 3)]))))
|
||||
(match_operand:V2DI 3 "nonimmediate_operand" "x")))]
|
||||
(match_operand:V2DI 3 "register_operand" "x")))]
|
||||
"TARGET_XOP"
|
||||
"vp<macs>dqh\t{%3, %2, %1, %0|%0, %1, %2, %3}"
|
||||
[(set_attr "type" "ssemuladd")
|
||||
|
@ -9614,7 +9611,7 @@
|
|||
(match_operand:V8HI 2 "nonimmediate_operand" "xm")
|
||||
(parallel [(const_int 1) (const_int 3)
|
||||
(const_int 5) (const_int 7)]))))
|
||||
(match_operand:V4SI 3 "nonimmediate_operand" "x")))]
|
||||
(match_operand:V4SI 3 "register_operand" "x")))]
|
||||
"TARGET_XOP"
|
||||
"vp<macs>wd\t{%3, %2, %1, %0|%0, %1, %2, %3}"
|
||||
[(set_attr "type" "ssemuladd")
|
||||
|
@ -9646,7 +9643,7 @@
|
|||
(match_dup 2)
|
||||
(parallel [(const_int 1) (const_int 3)
|
||||
(const_int 5) (const_int 7)])))))
|
||||
(match_operand:V4SI 3 "nonimmediate_operand" "x")))]
|
||||
(match_operand:V4SI 3 "register_operand" "x")))]
|
||||
"TARGET_XOP"
|
||||
"vp<madcs>wd\t{%3, %2, %1, %0|%0, %1, %2, %3}"
|
||||
[(set_attr "type" "ssemuladd")
|
||||
|
@ -9722,39 +9719,39 @@
|
|||
(any_extend:V2DI
|
||||
(vec_select:V2QI
|
||||
(match_operand:V16QI 1 "nonimmediate_operand" "xm")
|
||||
(parallel [(const_int 0) (const_int 4)])))
|
||||
(parallel [(const_int 0) (const_int 8)])))
|
||||
(any_extend:V2DI
|
||||
(vec_select:V2QI
|
||||
(match_dup 1)
|
||||
(parallel [(const_int 1) (const_int 5)]))))
|
||||
(parallel [(const_int 1) (const_int 9)]))))
|
||||
(plus:V2DI
|
||||
(any_extend:V2DI
|
||||
(vec_select:V2QI
|
||||
(match_dup 1)
|
||||
(parallel [(const_int 2) (const_int 6)])))
|
||||
(parallel [(const_int 2) (const_int 10)])))
|
||||
(any_extend:V2DI
|
||||
(vec_select:V2QI
|
||||
(match_dup 1)
|
||||
(parallel [(const_int 3) (const_int 7)])))))
|
||||
(parallel [(const_int 3) (const_int 11)])))))
|
||||
(plus:V2DI
|
||||
(plus:V2DI
|
||||
(any_extend:V2DI
|
||||
(vec_select:V2QI
|
||||
(match_dup 1)
|
||||
(parallel [(const_int 8) (const_int 12)])))
|
||||
(parallel [(const_int 4) (const_int 12)])))
|
||||
(any_extend:V2DI
|
||||
(vec_select:V2QI
|
||||
(match_dup 1)
|
||||
(parallel [(const_int 9) (const_int 13)]))))
|
||||
(parallel [(const_int 5) (const_int 13)]))))
|
||||
(plus:V2DI
|
||||
(any_extend:V2DI
|
||||
(vec_select:V2QI
|
||||
(match_dup 1)
|
||||
(parallel [(const_int 10) (const_int 14)])))
|
||||
(parallel [(const_int 6) (const_int 14)])))
|
||||
(any_extend:V2DI
|
||||
(vec_select:V2QI
|
||||
(match_dup 1)
|
||||
(parallel [(const_int 11) (const_int 15)])))))))]
|
||||
(parallel [(const_int 7) (const_int 15)])))))))]
|
||||
"TARGET_XOP"
|
||||
"vphadd<u>bq\t{%1, %0|%0, %1}"
|
||||
[(set_attr "type" "sseiadd1")])
|
||||
|
|
Loading…
Add table
Reference in a new issue