diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2012-08-11 13:37:02 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2012-08-11 13:37:02 +0200 |
commit | 920ac8043ed391ccfb38b8c1d2f59bf966c393d2 (patch) | |
tree | ca235b06d863a3c167f37e0d38e444951a7430d4 /gcc | |
parent | 8810cc52c9c7af05759a77d5bfe6d46e16b571e8 (diff) | |
download | gcc-920ac8043ed391ccfb38b8c1d2f59bf966c393d2.zip gcc-920ac8043ed391ccfb38b8c1d2f59bf966c393d2.tar.gz gcc-920ac8043ed391ccfb38b8c1d2f59bf966c393d2.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 24 | ||||
-rw-r--r-- | gcc/config/i386/sse.md | 29 |
2 files changed, 29 insertions, 24 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8a4bcb5..11d323c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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> diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 0cff3a3..51d77e0 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -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")]) |