Commit 9a9e266b by Eric Botcazou Committed by Eric Botcazou

sparc.c (fp_sethi_p): Test !SPARC_SIMM13_P and remove redundant test.

	* config/sparc/sparc.c (fp_sethi_p): Test !SPARC_SIMM13_P and
	remove redundant test.
	(fp_mov_p): Accept 0.
	(fp_high_losum_p): Remove redundant test.
	* config/sparc/predicates.md (const_high_operand): Explicitly test
	(not small_int_operand).
	(fp_const_high_losum_operand): New.
	* config/sparc/sparc.md (movsi_insn): Do not emit 'clr'.  Reorder.
	(movdi_insn_sp32_v9): Use canonical predicates.
	(movdi_insn_sp32): Test !TARGET_V9 instead of !TARGET_ARCH64.
	(movdi_insn_sp64_novis): Delete.
	(movdi_insn_sp64_vis): Rename into movdi_insn_sp64.
	(movsf_insn_novis): Delete.
	(movsf_insn_vis): Rename into movsf_insn.
	(movsf_no_f_insn): Rename into movsf_insn_no_fpu.
	(movsf_lo_sum): Use fp_const_high_losum_operand.
	(movsf_high): Likewise.
	(movsf_high_losum splitter): Likewise.
	(mov<V32:mode> expander): Use register_or_zero_operand.
	(mov<V64:mode> expander): Likewise.
	(movdf_insn_sp32): Use register_or_zero_operand.
	(movdf_no_e_insn_sp32): Use register_or_zero_operand.
	Rename into movdf_insn_sp32_no_fpu.
	(movdf_no_e_insn_v9_sp32): Use register_or_zero_operand.
	Rename into movdf_insn_sp32_v9_no_fpu.
	(movdf_insn_v9only_novis): Delete.
	(movdf_insn_v9only_vis): Rename into movdf_insn_sp32_v9.
	(movdf_insn_sp64_novis): Delete.
	(movdf_insn_sp64_vis): Rename into movdf_insn_sp64.
	(movdf_no_e_insn_sp64): Use register_or_zero_operand.
	Rename into movdf_insn_sp64_no_fpu.
	(movtf expander): Use register_or_zero_operand.
	(movtf_insn_sp32): Delete.
	(movtf_insn_vis_sp32): Use register_or_zero_operand.
	Rename into movtf_insn_sp32.
	(movtf_no_e_insn_sp32): Use register_or_zero_operand.
	Rename into movtf_insn_sp32_no_fpu.
	(movtf_insn_hq_sp64): Delete.
	(movtf_insn_hq_vis_sp64): Use register_or_zero_operand.
	Rename into movtf_insn_sp64_hq.
	(movtf_insn_sp64): Delete.
	(movtf_insn_vis_sp64): Use register_or_zero_operand.
	Rename into movtf_insn_sp64.
	(movtf_no_e_insn_sp64): Use register_or_zero_operand.
	Rename into movtf_insn_sp64_no_fpu.

From-SVN: r99506
parent 4718bfd8
2005-05-10 Eric Botcazou <ebotcazou@libertysurf.fr>
* config/sparc/sparc.c (fp_sethi_p): Test !SPARC_SIMM13_P and
remove redundant test.
(fp_mov_p): Accept 0.
(fp_high_losum_p): Remove redundant test.
* config/sparc/predicates.md (const_high_operand): Explicitly test
(not small_int_operand).
(fp_const_high_losum_operand): New.
* config/sparc/sparc.md (movsi_insn): Do not emit 'clr'. Reorder.
(movdi_insn_sp32_v9): Use canonical predicates.
(movdi_insn_sp32): Test !TARGET_V9 instead of !TARGET_ARCH64.
(movdi_insn_sp64_novis): Delete.
(movdi_insn_sp64_vis): Rename into movdi_insn_sp64.
(movsf_insn_novis): Delete.
(movsf_insn_vis): Rename into movsf_insn.
(movsf_no_f_insn): Rename into movsf_insn_no_fpu.
(movsf_lo_sum): Use fp_const_high_losum_operand.
(movsf_high): Likewise.
(movsf_high_losum splitter): Likewise.
(mov<V32:mode> expander): Use register_or_zero_operand.
(mov<V64:mode> expander): Likewise.
(movdf_insn_sp32): Use register_or_zero_operand.
(movdf_no_e_insn_sp32): Use register_or_zero_operand.
Rename into movdf_insn_sp32_no_fpu.
(movdf_no_e_insn_v9_sp32): Use register_or_zero_operand.
Rename into movdf_insn_sp32_v9_no_fpu.
(movdf_insn_v9only_novis): Delete.
(movdf_insn_v9only_vis): Rename into movdf_insn_sp32_v9.
(movdf_insn_sp64_novis): Delete.
(movdf_insn_sp64_vis): Rename into movdf_insn_sp64.
(movdf_no_e_insn_sp64): Use register_or_zero_operand.
Rename into movdf_insn_sp64_no_fpu.
(movtf expander): Use register_or_zero_operand.
(movtf_insn_sp32): Delete.
(movtf_insn_vis_sp32): Use register_or_zero_operand.
Rename into movtf_insn_sp32.
(movtf_no_e_insn_sp32): Use register_or_zero_operand.
Rename into movtf_insn_sp32_no_fpu.
(movtf_insn_hq_sp64): Delete.
(movtf_insn_hq_vis_sp64): Use register_or_zero_operand.
Rename into movtf_insn_sp64_hq.
(movtf_insn_sp64): Delete.
(movtf_insn_vis_sp64): Use register_or_zero_operand.
Rename into movtf_insn_sp64.
(movtf_no_e_insn_sp64): Use register_or_zero_operand.
Rename into movtf_insn_sp64_no_fpu.
2005-05-10 Nathan Sidwell <nathan@codesourcery.com>
* config/stormy16/stormy16.c (xstormy16_emit_cbranch): Use
......
......@@ -65,7 +65,7 @@
;; The first test avoids emitting sethi to load zero for example.
(define_predicate "const_high_operand"
(and (match_code "const_int")
(and (match_test "INTVAL (op) & ~(HOST_WIDE_INT)0x3ff")
(and (not (match_operand 0 "small_int_operand"))
(match_test "SPARC_SETHI_P (INTVAL (op) & GET_MODE_MASK (mode))"))))
;; Return true if OP is a constant whose 1's complement can be loaded by the
......@@ -75,6 +75,16 @@
(and (not (match_operand 0 "small_int_operand"))
(match_test "SPARC_SETHI_P (~INTVAL (op) & GET_MODE_MASK (mode))"))))
;; Return true if OP is a FP constant that needs to be loaded by the sethi/losum
;; pair of instructions.
(define_predicate "fp_const_high_losum_operand"
(match_operand 0 "const_double_operand")
{
gcc_assert (mode == SFmode);
return fp_high_losum_p (op);
})
;; Predicates for symbolic constants.
;; Return true if OP is either a symbol reference or a sum of a symbol
......
......@@ -818,12 +818,8 @@ fp_sethi_p (rtx op)
long i;
REAL_VALUE_FROM_CONST_DOUBLE (r, op);
if (REAL_VALUES_EQUAL (r, dconst0) &&
! REAL_VALUE_MINUS_ZERO (r))
return 0;
REAL_VALUE_TO_TARGET_SINGLE (r, i);
if (SPARC_SETHI_P (i))
return 1;
return !SPARC_SIMM13_P (i) && SPARC_SETHI_P (i);
}
return 0;
......@@ -842,12 +838,8 @@ fp_mov_p (rtx op)
long i;
REAL_VALUE_FROM_CONST_DOUBLE (r, op);
if (REAL_VALUES_EQUAL (r, dconst0) &&
! REAL_VALUE_MINUS_ZERO (r))
return 0;
REAL_VALUE_TO_TARGET_SINGLE (r, i);
if (SPARC_SIMM13_P (i))
return 1;
return SPARC_SIMM13_P (i);
}
return 0;
......@@ -869,13 +861,8 @@ fp_high_losum_p (rtx op)
long i;
REAL_VALUE_FROM_CONST_DOUBLE (r, op);
if (REAL_VALUES_EQUAL (r, dconst0) &&
! REAL_VALUE_MINUS_ZERO (r))
return 0;
REAL_VALUE_TO_TARGET_SINGLE (r, i);
if (! SPARC_SETHI_P (i)
&& ! SPARC_SIMM13_P (i))
return 1;
return !SPARC_SIMM13_P (i) && !SPARC_SETHI_P (i);
}
return 0;
......
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