Commit aedff010 by Sebastian Pop Committed by Sebastian Pop

Remove XOP splitters.

	* config/i386/i386-protos.h (ix86_expand_fma4_multiple_memory):
	Removed.
	* config/i386/i386.c (ix86_expand_fma4_multiple_memory): Removed.
	* config/i386/sse.md: Remove all XOP splitters.
	Allow the second and fourth operands of XOP multiply-add insns
	to be nonimmediate.

From-SVN: r155057
parent c7b4d948
2009-12-07 Sebastian Pop <sebastian.pop@amd.com> 2009-12-07 Sebastian Pop <sebastian.pop@amd.com>
* config/i386/i386-protos.h (ix86_expand_fma4_multiple_memory):
Removed.
* config/i386/i386.c (ix86_expand_fma4_multiple_memory): Removed.
* config/i386/sse.md: Remove all XOP splitters.
Allow the second and fourth operands of XOP multiply-add insns
to be nonimmediate.
2009-12-07 Sebastian Pop <sebastian.pop@amd.com>
* config/i386/sse.md: Remove all FMA4 splitters. * config/i386/sse.md: Remove all FMA4 splitters.
Allow the second operand of FMA4 insns to be a nonimmediate. Allow the second operand of FMA4 insns to be a nonimmediate.
Fix comments punctuation. Fix comments punctuation.
...@@ -218,8 +218,6 @@ extern void ix86_expand_vector_set (bool, rtx, rtx, int); ...@@ -218,8 +218,6 @@ extern void ix86_expand_vector_set (bool, rtx, rtx, int);
extern void ix86_expand_vector_extract (bool, rtx, rtx, int); extern void ix86_expand_vector_extract (bool, rtx, rtx, int);
extern void ix86_expand_reduc_v4sf (rtx (*)(rtx, rtx, rtx), rtx, rtx); extern void ix86_expand_reduc_v4sf (rtx (*)(rtx, rtx, rtx), rtx, rtx);
extern bool ix86_expand_fma4_multiple_memory (rtx [], enum machine_mode);
extern void ix86_expand_vec_extract_even_odd (rtx, rtx, rtx, unsigned); extern void ix86_expand_vec_extract_even_odd (rtx, rtx, rtx, unsigned);
/* In i386-c.c */ /* In i386-c.c */
......
...@@ -28808,36 +28808,6 @@ ix86_expand_round (rtx operand0, rtx operand1) ...@@ -28808,36 +28808,6 @@ ix86_expand_round (rtx operand0, rtx operand1)
} }
/* Fixup an FMA4 or XOP instruction that has 2 memory input references
into a form the hardware will allow by using the destination
register to load one of the memory operations. Presently this is
used by the multiply/add routines to allow 2 memory references. */
bool
ix86_expand_fma4_multiple_memory (rtx operands[],
enum machine_mode mode)
{
rtx scratch = operands[0];
gcc_assert (register_operand (operands[0], mode));
gcc_assert (register_operand (operands[1], mode));
gcc_assert (MEM_P (operands[2]) && MEM_P (operands[3]));
if (reg_mentioned_p (scratch, operands[1]))
{
if (!can_create_pseudo_p ())
return false;
scratch = gen_reg_rtx (mode);
}
emit_move_insn (scratch, operands[3]);
if (rtx_equal_p (operands[2], operands[3]))
operands[2] = operands[3] = scratch;
else
operands[3] = scratch;
return true;
}
/* Table of valid machine attributes. */ /* Table of valid machine attributes. */
static const struct attribute_spec ix86_attribute_table[] = static const struct attribute_spec ix86_attribute_table[] =
{ {
......
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