Commit 308e51aa by Uros Bizjak

predicates.md (pic_symbolic_operand): Remove predicate.

	* config/i386/predicates.md (pic_symbolic_operand): Remove predicate.
	* config/i386/i386.md (*add<mode>_1): Do not use pic_symbolic_operand
	predicate in "type" attribute calculation.
	(*addsi_1_zext): Ditto.
	(*add<mode>_2): Do not use pic_symbolic_operand in insn predicate.
	(*addsi_2_zext): Ditto.
	(*add<mode>_3): Ditto.
	(*addsi_3_zext): Ditto.
	(*add<mode>_5): Ditto.

From-SVN: r160252
parent f3cf730b
2010-06-04 Uros Bizjak <ubizjak@gmail.com>
* config/i386/predicates.md (pic_symbolic_operand): Remove predicate.
* config/i386/i386.md (*add<mode>_1): Do not use pic_symbolic_operand
predicate in "type" attribute calculation.
(*addsi_1_zext): Ditto.
(*add<mode>_2): Do not use pic_symbolic_operand in insn predicate.
(*addsi_2_zext): Ditto.
(*add<mode>_3): Ditto.
(*addsi_3_zext): Ditto.
(*add<mode>_5): Ditto.
2010-06-03 Jan Hubicka <jh@suse.cz> 2010-06-03 Jan Hubicka <jh@suse.cz>
* tree-into-ssa.c (mark_block_for_update): Avoid redundant call * tree-into-ssa.c (mark_block_for_update): Avoid redundant call
...@@ -128,14 +140,12 @@ ...@@ -128,14 +140,12 @@
PR target/44218 PR target/44218
* doc/invoke.texi (RS/6000 and PowerPC Options): Delete obsolete * doc/invoke.texi (RS/6000 and PowerPC Options): Delete obsolete
-mswdiv option. Add -mrecip, -mrecip=<xxx>, -mrecip-precision -mswdiv option. Add -mrecip, -mrecip=<xxx>, -mrecip-precision options.
options.
* doc/extend.texi (powerpc builtins): Document vec_recip, * doc/extend.texi (powerpc builtins): Document vec_recip,
vec_rsqrt, vec_rsqrte altivec/vsx builtins. vec_rsqrt, vec_rsqrte altivec/vsx builtins.
* config/rs6000/rs60000-protos.h (rs6000_emit_swdiv): New * config/rs6000/rs60000-protos.h (rs6000_emit_swdiv): New function.
function.
(rs6000_emit_swrsqrt): Ditto. (rs6000_emit_swrsqrt): Ditto.
(rs6000_emit_swdivsf): Delete. (rs6000_emit_swdivsf): Delete.
(rs6000_emit_swdivdf): Ditto. (rs6000_emit_swdivdf): Ditto.
...@@ -162,8 +172,7 @@ ...@@ -162,8 +172,7 @@
(bdesc_2arg): Add reciprocal estimate builtins. (bdesc_2arg): Add reciprocal estimate builtins.
(bdesc_1arg): Add reciprocal square root estimate builtins. (bdesc_1arg): Add reciprocal square root estimate builtins.
(rs6000_expand_builtin): Rewrite to use a switch statement, (rs6000_expand_builtin): Rewrite to use a switch statement,
instead of multiple if/then/elses. Add reciprocal estimate instead of multiple if/then/elses. Add reciprocal estimate builtins.
builtins.
(rs6000_init_builtins): Create declarations for reciprocal (rs6000_init_builtins): Create declarations for reciprocal
estimate builtins. estimate builtins.
(rs6000_preferred_reload_class): Simplify VSX preferences, if scalar (rs6000_preferred_reload_class): Simplify VSX preferences, if scalar
...@@ -186,8 +195,7 @@ ...@@ -186,8 +195,7 @@
(rs6000_emit_swdiv): New common function to be called to replace a (rs6000_emit_swdiv): New common function to be called to replace a
division with reciprocal estimate and fixup. division with reciprocal estimate and fixup.
(rs6000_emit_swrsqrt): Replace rs6000_emit_swrsqrtsf. Add support (rs6000_emit_swrsqrt): Replace rs6000_emit_swrsqrtsf. Add support
for double and vector types. Add support for high precision for double and vector types. Add support for high precision machines.
machines.
* config/rs6000/rs6000.h (TARGET_FRES): New macro to say whether * config/rs6000/rs6000.h (TARGET_FRES): New macro to say whether
the reciprocal estimate instructions can be generated. the reciprocal estimate instructions can be generated.
...@@ -217,8 +225,7 @@ ...@@ -217,8 +225,7 @@
(altivec_overloaded_builtins): Add reciprocal estimate builtins. (altivec_overloaded_builtins): Add reciprocal estimate builtins.
* config/rs6000/rs6000.opt (-mrecip): Document add support for * config/rs6000/rs6000.opt (-mrecip): Document add support for
replacing division instructions with reciprocal estimate and replacing division instructions with reciprocal estimate and fixup.
fixup.
(-mrecip=<opt>): New option. (-mrecip=<opt>): New option.
(-mrecip-precision): Ditto. (-mrecip-precision): Ditto.
...@@ -230,8 +237,7 @@ ...@@ -230,8 +237,7 @@
* config/rs6000/altivec.md (UNSPEC_RSQRTEFP): Delete. * config/rs6000/altivec.md (UNSPEC_RSQRTEFP): Delete.
(UNSPEC_VREFP): Ditto. (UNSPEC_VREFP): Ditto.
(altivec_vnmsubfp*): Make altivec nmsub mirror the scalar and VSX (altivec_vnmsubfp*): Make altivec nmsub mirror the scalar and VSX
conterparts with regard to support of -mno-fused-madd and conterparts with regard to support of -mno-fused-madd and -ffast-math.
-ffast-math.
(altivec_vrsqrtefp): Use common UNSPEC to allow scalar/vector (altivec_vrsqrtefp): Use common UNSPEC to allow scalar/vector
reciprocal estimate instructions to be generated. reciprocal estimate instructions to be generated.
(altivec_vrefp): Ditto. (altivec_vrefp): Ditto.
...@@ -256,8 +262,7 @@ ...@@ -256,8 +262,7 @@
(fred_fpr): Ditto. (fred_fpr): Ditto.
(rsqrtdf_internal1): New function for frsqrte instruciton. (rsqrtdf_internal1): New function for frsqrte instruciton.
* config/rs6000/altivec.h (vec_recipdiv): Define new vector * config/rs6000/altivec.h (vec_recipdiv): Define new vector builtin.
builtin.
(vec_rsqrt): Ditto. (vec_rsqrt): Ditto.
2010-06-03 Richard Guenther <rguenther@suse.de> 2010-06-03 Richard Guenther <rguenther@suse.de>
...@@ -364,8 +369,7 @@ ...@@ -364,8 +369,7 @@
(*mov<mode>_64 TD_TF, *mov<mode>_31 TD_TF, *mov<mode>_64dfp DD_DF, (*mov<mode>_64 TD_TF, *mov<mode>_31 TD_TF, *mov<mode>_64dfp DD_DF,
*mov<mode>_64 DD_DF, *mov<mode>_31, mov<mode>): Remove load zero *mov<mode>_64 DD_DF, *mov<mode>_31, mov<mode>): Remove load zero
instruction. instruction.
* config/s390/s390.c: Don't accept fp zeros as valid constants * config/s390/s390.c: Don't accept fp zeros as valid constants anymore.
anymore.
2010-06-02 Jan Hubicka <jh@suse.cz> 2010-06-02 Jan Hubicka <jh@suse.cz>
...@@ -478,8 +482,7 @@ ...@@ -478,8 +482,7 @@
Include rtl.h. Include rtl.h.
(copy_decl_for_dup_finish): Do not use NULL_RTX. (copy_decl_for_dup_finish): Do not use NULL_RTX.
* tree-loop-linear.c: Do not include diagnostic.h, expr.h, * tree-loop-linear.c: Do not include diagnostic.h, expr.h and optabs.h.
and optabs.h.
* tree-loop-distribution.c: Likewise. * tree-loop-distribution.c: Likewise.
2010-06-01 Jan Hubicka <jh@suse.cz> 2010-06-01 Jan Hubicka <jh@suse.cz>
...@@ -518,25 +521,26 @@ ...@@ -518,25 +521,26 @@
* emit-rtl.c: (first_insn, last_insn): Remove defines. * emit-rtl.c: (first_insn, last_insn): Remove defines.
(get_insns, set_first_insn, get_last_insn, set_last_insn, get_max_uid): (get_insns, set_first_insn, get_last_insn, set_last_insn, get_max_uid):
Move to emit-rtl.h. Move to emit-rtl.h.
(set_new_first_and_last_insn, get_last_insn_anywhere, get_first_nonnote_insn, (set_new_first_and_last_insn, get_last_insn_anywhere,
get_last_nonnote_insn, try_split, make_call_insn_raw, add_insn_after, get_first_nonnote_insn, get_last_nonnote_insn, try_split,
add_insn_before, remove_insn, delete_insns_since, reorder_insns_nobb, make_call_insn_raw, add_insn_after, add_insn_before, remove_insn,
emit_insn_after_1, emit_debug_insn_before, emit_insn, start_sequence, delete_insns_since, reorder_insns_nobb, emit_insn_after_1,
push_to_sequence, push_to_sequence2, push_topmost_sequence, end_sequence, emit_debug_insn_before, emit_insn, start_sequence, push_to_sequence,
copy_insn): Use accessor functions. push_to_sequence2, push_topmost_sequence, end_sequence, copy_insn):
Use accessor functions.
* emit-rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn, * emit-rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value, gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode, set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p): Move here from rtl.h mem_expr_equal_p): Move here from rtl.h.
(get_insns, set_first-insn, get_last_insn, set_last_insn, get_max_uid): (get_insns, set_first-insn, get_last_insn, set_last_insn, get_max_uid):
Move here from emit-rtl.c; make inline. Move here from emit-rtl.c; make inline.
* cfglayout.h: Include emit-rtl.h * cfglayout.h: Include emit-rtl.h.
* rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn, * rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value, gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode, set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p, get_insns, set_first-insn, get_last_insn, set_last_insn, mem_expr_equal_p, get_insns, set_first-insn,
get_max_uid): Move to emit-rtl.h. get_last_insn, set_last_insn, get_max_uid): Move to emit-rtl.h.
* reg-stack.c: Include emit-rtl.h * reg-stack.c: Include emit-rtl.h.
* dce.c: Likewise. * dce.c: Likewise.
2010-06-01 Jan Hubicka <jh@suse.cz> 2010-06-01 Jan Hubicka <jh@suse.cz>
...@@ -548,8 +552,8 @@ ...@@ -548,8 +552,8 @@
(cgraph_function_versioning): Accept new_entry_block and bbs_to_copy. (cgraph_function_versioning): Accept new_entry_block and bbs_to_copy.
(cgraph_materialize_clone, save_inline_function_body): Update use of (cgraph_materialize_clone, save_inline_function_body): Update use of
tree_function_versioning. tree_function_versioning.
* tree-inline.c (copy_bb): Look for previous copied block to link after; * tree-inline.c (copy_bb): Look for previous copied block to link
fix debug output. after; fix debug output.
(copy_cfg_body): Accept new_entry_block and bbs_to_copy. (copy_cfg_body): Accept new_entry_block and bbs_to_copy.
(copy_body): Likewise. (copy_body): Likewise.
(expand_call_inline): Update use of copy_body. (expand_call_inline): Update use of copy_body.
...@@ -627,8 +631,7 @@ ...@@ -627,8 +631,7 @@
argument for fprintf. argument for fprintf.
(ix86_output_addr_diff_elt): Likewise. (ix86_output_addr_diff_elt): Likewise.
(x86_function_profiler): Likewise. (x86_function_profiler): Likewise.
* config/cygming.h (LOCAL_LABEL_PREFIX): Fix * config/cygming.h (LOCAL_LABEL_PREFIX): Fix for x64 no-underscore.
for x64 no-underscore.
(LPREFIX): Likewise. (LPREFIX): Likewise.
(ASM_GENERATE_INTERNAL_LABEL): Likewise. (ASM_GENERATE_INTERNAL_LABEL): Likewise.
...@@ -678,8 +681,7 @@ ...@@ -678,8 +681,7 @@
2010-05-31 Kai Tietz <kai.tietz@onevision.com> 2010-05-31 Kai Tietz <kai.tietz@onevision.com>
PR target/44161 PR target/44161
* config/i386/cygming.h (SUBTARGET_OVERRIDE_OPTIONS): Handle * config/i386/cygming.h (SUBTARGET_OVERRIDE_OPTIONS): Handle flag_pic.
flag_pic.
2010-05-31 Eric Botcazou <ebotcazou@adacore.com> 2010-05-31 Eric Botcazou <ebotcazou@adacore.com>
...@@ -688,8 +690,7 @@ ...@@ -688,8 +690,7 @@
2010-05-31 Richard Guenther <rguenther@suse.de> 2010-05-31 Richard Guenther <rguenther@suse.de>
* tree-ssa-structalias.c (find_func_aliases): Handle * tree-ssa-structalias.c (find_func_aliases): Handle BUILT_IN_RETURN.
BUILT_IN_RETURN.
2010-05-30 Jan Hubicka <jh@suse.cz> 2010-05-30 Jan Hubicka <jh@suse.cz>
...@@ -734,8 +735,7 @@ ...@@ -734,8 +735,7 @@
* cgraph.h (cgraph_dump_file): Declare. * cgraph.h (cgraph_dump_file): Declare.
* cgraphunit.c (cgraph_dump_file): Export. * cgraphunit.c (cgraph_dump_file): Export.
* ipa.c (dump_cgraph_node_set, dump_varpool_node_set): Be less * ipa.c (dump_cgraph_node_set, dump_varpool_node_set): Be less verbose.
verbose.
2010-05-30 Jan Hubicka <jh@suse.cz> 2010-05-30 Jan Hubicka <jh@suse.cz>
...@@ -752,9 +752,8 @@ ...@@ -752,9 +752,8 @@
* ipa-pure-const.c (pure_const_names): New static var. * ipa-pure-const.c (pure_const_names): New static var.
(check_call): Handle calls not leading to return. (check_call): Handle calls not leading to return.
(pure_const_read_summary): Dump info read. (pure_const_read_summary): Dump info read.
(propagate): Dump info about propagation process; ignore side (propagate): Dump info about propagation process; ignore side effects
effects of functions not leading to exit; fix handling of of functions not leading to exit; fix handling of pure functions.
pure functions.
2010-05-30 Jan Hubicka <jh@suse.cz> 2010-05-30 Jan Hubicka <jh@suse.cz>
......
...@@ -6118,10 +6118,6 @@ ...@@ -6118,10 +6118,6 @@
(const_string "lea") (const_string "lea")
(eq_attr "alternative" "3") (eq_attr "alternative" "3")
(const_string "lea") (const_string "lea")
; Current assemblers are broken and do not allow @GOTOFF in
; ought but a memory context.
(match_operand:SWI48 2 "pic_symbolic_operand" "")
(const_string "lea")
(match_operand:SWI48 2 "incdec_operand" "") (match_operand:SWI48 2 "incdec_operand" "")
(const_string "incdec") (const_string "incdec")
] ]
...@@ -6172,10 +6168,6 @@ ...@@ -6172,10 +6168,6 @@
[(set (attr "type") [(set (attr "type")
(cond [(eq_attr "alternative" "1") (cond [(eq_attr "alternative" "1")
(const_string "lea") (const_string "lea")
; Current assemblers are broken and do not allow @GOTOFF in
; ought but a memory context.
(match_operand:SI 2 "pic_symbolic_operand" "")
(const_string "lea")
(match_operand:SI 2 "incdec_operand" "") (match_operand:SI 2 "incdec_operand" "")
(const_string "incdec") (const_string "incdec")
] ]
...@@ -6410,10 +6402,7 @@ ...@@ -6410,10 +6402,7 @@
(set (match_operand:SWI48 0 "nonimmediate_operand" "=r,rm") (set (match_operand:SWI48 0 "nonimmediate_operand" "=r,rm")
(plus:SWI48 (match_dup 1) (match_dup 2)))] (plus:SWI48 (match_dup 1) (match_dup 2)))]
"ix86_match_ccmode (insn, CCGOCmode) "ix86_match_ccmode (insn, CCGOCmode)
&& ix86_binary_operator_ok (PLUS, <MODE>mode, operands) && ix86_binary_operator_ok (PLUS, <MODE>mode, operands)"
/* Current assemblers are broken and do not allow @GOTOFF in
ought but a memory context. */
&& ! pic_symbolic_operand (operands[2], VOIDmode)"
{ {
switch (get_attr_type (insn)) switch (get_attr_type (insn))
{ {
...@@ -6458,10 +6447,7 @@ ...@@ -6458,10 +6447,7 @@
(set (match_operand:DI 0 "register_operand" "=r") (set (match_operand:DI 0 "register_operand" "=r")
(zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))] (zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))]
"TARGET_64BIT && ix86_match_ccmode (insn, CCGOCmode) "TARGET_64BIT && ix86_match_ccmode (insn, CCGOCmode)
&& ix86_binary_operator_ok (PLUS, SImode, operands) && ix86_binary_operator_ok (PLUS, SImode, operands)"
/* Current assemblers are broken and do not allow @GOTOFF in
ought but a memory context. */
&& ! pic_symbolic_operand (operands[2], VOIDmode)"
{ {
switch (get_attr_type (insn)) switch (get_attr_type (insn))
{ {
...@@ -6576,10 +6562,7 @@ ...@@ -6576,10 +6562,7 @@
(match_operand:SWI48 1 "nonimmediate_operand" "%0"))) (match_operand:SWI48 1 "nonimmediate_operand" "%0")))
(clobber (match_scratch:SWI48 0 "=r"))] (clobber (match_scratch:SWI48 0 "=r"))]
"ix86_match_ccmode (insn, CCZmode) "ix86_match_ccmode (insn, CCZmode)
&& !(MEM_P (operands[1]) && MEM_P (operands[2])) && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
/* Current assemblers are broken and do not allow @GOTOFF in
ought but a memory context. */
&& ! pic_symbolic_operand (operands[2], VOIDmode)"
{ {
switch (get_attr_type (insn)) switch (get_attr_type (insn))
{ {
...@@ -6623,10 +6606,7 @@ ...@@ -6623,10 +6606,7 @@
(set (match_operand:DI 0 "register_operand" "=r") (set (match_operand:DI 0 "register_operand" "=r")
(zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))] (zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))]
"TARGET_64BIT && ix86_match_ccmode (insn, CCZmode) "TARGET_64BIT && ix86_match_ccmode (insn, CCZmode)
&& ix86_binary_operator_ok (PLUS, SImode, operands) && ix86_binary_operator_ok (PLUS, SImode, operands)"
/* Current assemblers are broken and do not allow @GOTOFF in
ought but a memory context. */
&& ! pic_symbolic_operand (operands[2], VOIDmode)"
{ {
switch (get_attr_type (insn)) switch (get_attr_type (insn))
{ {
...@@ -6907,10 +6887,7 @@ ...@@ -6907,10 +6887,7 @@
(const_int 0))) (const_int 0)))
(clobber (match_scratch:SWI48 0 "=r"))] (clobber (match_scratch:SWI48 0 "=r"))]
"ix86_match_ccmode (insn, CCGOCmode) "ix86_match_ccmode (insn, CCGOCmode)
&& !(MEM_P (operands[1]) && MEM_P (operands[2])) && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
/* Current assemblers are broken and do not allow @GOTOFF in
ought but a memory context. */
&& ! pic_symbolic_operand (operands[2], VOIDmode)"
{ {
switch (get_attr_type (insn)) switch (get_attr_type (insn))
{ {
......
...@@ -420,36 +420,6 @@ ...@@ -420,36 +420,6 @@
} }
}) })
;; Return true if the operand contains a @GOT or @GOTOFF reference.
(define_predicate "pic_symbolic_operand"
(match_code "const")
{
op = XEXP (op, 0);
if (TARGET_64BIT)
{
if (GET_CODE (op) == UNSPEC
&& XINT (op, 1) == UNSPEC_GOTPCREL)
return 1;
if (GET_CODE (op) == PLUS
&& GET_CODE (XEXP (op, 0)) == UNSPEC
&& XINT (XEXP (op, 0), 1) == UNSPEC_GOTPCREL)
return 1;
}
else
{
if (GET_CODE (op) == UNSPEC)
return 1;
if (GET_CODE (op) != PLUS
|| !CONST_INT_P (XEXP (op, 1)))
return 0;
op = XEXP (op, 0);
if (GET_CODE (op) == UNSPEC
&& XINT (op, 1) != UNSPEC_MACHOPIC_OFFSET)
return 1;
}
return 0;
})
;; Return true if OP is a symbolic operand that resolves locally. ;; Return true if OP is a symbolic operand that resolves locally.
(define_predicate "local_symbolic_operand" (define_predicate "local_symbolic_operand"
(match_code "const,label_ref,symbol_ref") (match_code "const,label_ref,symbol_ref")
......
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