summaryrefslogtreecommitdiff
path: root/gcc/config/i386/i386.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/i386/i386.c')
-rw-r--r--gcc/config/i386/i386.c68
1 files changed, 20 insertions, 48 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index f7f5873829f..36d85765457 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -1,6 +1,6 @@
/* Subroutines used for code generation on IA-32.
- Copyright (C) 1988, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+ Copyright (C) 1988, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
Free Software Foundation, Inc.
This file is part of GCC.
@@ -13255,8 +13255,7 @@ ix86_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
rtx val = force_operand (XEXP (x, 1), temp);
if (val != temp)
{
- if (GET_MODE (val) != Pmode)
- val = convert_to_mode (Pmode, val, 1);
+ val = convert_to_mode (Pmode, val, 1);
emit_move_insn (temp, val);
}
@@ -13270,8 +13269,7 @@ ix86_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
rtx val = force_operand (XEXP (x, 0), temp);
if (val != temp)
{
- if (GET_MODE (val) != Pmode)
- val = convert_to_mode (Pmode, val, 1);
+ val = convert_to_mode (Pmode, val, 1);
emit_move_insn (temp, val);
}
@@ -15939,8 +15937,7 @@ ix86_expand_move (enum machine_mode mode, rtx operands[])
op1 = force_operand (op1, op0);
if (op1 == op0)
return;
- if (GET_MODE (op1) != mode)
- op1 = convert_to_mode (mode, op1, 1);
+ op1 = convert_to_mode (mode, op1, 1);
}
else if (TARGET_DLLIMPORT_DECL_ATTRIBUTES
&& SYMBOL_REF_DLLIMPORT_P (op1))
@@ -15968,8 +15965,7 @@ ix86_expand_move (enum machine_mode mode, rtx operands[])
op0, 1, OPTAB_DIRECT);
if (tmp == op0)
return;
- if (GET_MODE (tmp) != mode)
- op1 = convert_to_mode (mode, tmp, 1);
+ op1 = convert_to_mode (mode, tmp, 1);
}
}
@@ -16022,8 +16018,7 @@ ix86_expand_move (enum machine_mode mode, rtx operands[])
op1 = legitimize_pic_address (op1, reg);
if (op0 == op1)
return;
- if (GET_MODE (op1) != mode)
- op1 = convert_to_mode (mode, op1, 1);
+ op1 = convert_to_mode (mode, op1, 1);
}
}
}
@@ -21659,9 +21654,7 @@ ix86_adjust_counter (rtx countreg, HOST_WIDE_INT value)
rtx
ix86_zero_extend_to_Pmode (rtx exp)
{
- if (GET_MODE (exp) != Pmode)
- exp = convert_to_mode (Pmode, exp, 1);
- return force_reg (Pmode, exp);
+ return force_reg (Pmode, convert_to_mode (Pmode, exp, 1));
}
/* Divide COUNTREG by SCALE. */
@@ -23633,9 +23626,7 @@ ix86_expand_call (rtx retval, rtx fnaddr, rtx callarg1,
? !sibcall_insn_operand (XEXP (fnaddr, 0), word_mode)
: !call_insn_operand (XEXP (fnaddr, 0), word_mode))
{
- fnaddr = XEXP (fnaddr, 0);
- if (GET_MODE (fnaddr) != word_mode)
- fnaddr = convert_to_mode (word_mode, fnaddr, 1);
+ fnaddr = convert_to_mode (word_mode, XEXP (fnaddr, 0), 1);
fnaddr = gen_rtx_MEM (QImode, copy_to_mode_reg (word_mode, fnaddr));
}
@@ -31285,9 +31276,8 @@ ix86_expand_special_args_builtin (const struct builtin_description *d,
gcc_assert (target == 0);
if (memory)
{
- if (GET_MODE (op) != Pmode)
- op = convert_to_mode (Pmode, op, 1);
- target = gen_rtx_MEM (tmode, force_reg (Pmode, op));
+ op = force_reg (Pmode, convert_to_mode (Pmode, op, 1));
+ target = gen_rtx_MEM (tmode, op);
}
else
target = force_reg (tmode, op);
@@ -31331,9 +31321,8 @@ ix86_expand_special_args_builtin (const struct builtin_description *d,
if (i == memory)
{
/* This must be the memory operand. */
- if (GET_MODE (op) != Pmode)
- op = convert_to_mode (Pmode, op, 1);
- op = gen_rtx_MEM (mode, force_reg (Pmode, op));
+ op = force_reg (Pmode, convert_to_mode (Pmode, op, 1));
+ op = gen_rtx_MEM (mode, op);
gcc_assert (GET_MODE (op) == mode
|| GET_MODE (op) == VOIDmode);
}
@@ -31581,9 +31570,8 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
mode1 = insn_data[icode].operand[1].mode;
mode2 = insn_data[icode].operand[2].mode;
- if (GET_MODE (op0) != Pmode)
- op0 = convert_to_mode (Pmode, op0, 1);
- op0 = gen_rtx_MEM (mode1, force_reg (Pmode, op0));
+ op0 = force_reg (Pmode, convert_to_mode (Pmode, op0, 1));
+ op0 = gen_rtx_MEM (mode1, op0);
if (!insn_data[icode].operand[0].predicate (op0, mode0))
op0 = copy_to_mode_reg (mode0, op0);
@@ -31614,11 +31602,7 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
op0 = expand_normal (arg0);
icode = CODE_FOR_sse2_clflush;
if (!insn_data[icode].operand[0].predicate (op0, Pmode))
- {
- if (GET_MODE (op0) != Pmode)
- op0 = convert_to_mode (Pmode, op0, 1);
- op0 = force_reg (Pmode, op0);
- }
+ op0 = force_reg (Pmode, convert_to_mode (Pmode, op0, 1));
emit_insn (gen_sse2_clflush (op0));
return 0;
@@ -31631,11 +31615,7 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
op1 = expand_normal (arg1);
op2 = expand_normal (arg2);
if (!REG_P (op0))
- {
- if (GET_MODE (op0) != Pmode)
- op0 = convert_to_mode (Pmode, op0, 1);
- op0 = force_reg (Pmode, op0);
- }
+ op0 = force_reg (Pmode, convert_to_mode (Pmode, op0, 1));
if (!REG_P (op1))
op1 = copy_to_mode_reg (SImode, op1);
if (!REG_P (op2))
@@ -31872,11 +31852,7 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
op0 = expand_normal (arg0);
icode = CODE_FOR_lwp_llwpcb;
if (!insn_data[icode].operand[0].predicate (op0, Pmode))
- {
- if (GET_MODE (op0) != Pmode)
- op0 = convert_to_mode (Pmode, op0, 1);
- op0 = force_reg (Pmode, op0);
- }
+ op0 = force_reg (Pmode, convert_to_mode (Pmode, op0, 1));
emit_insn (gen_lwp_llwpcb (op0));
return 0;
@@ -32022,9 +31998,7 @@ addcarryx:
/* Generate CF from input operand. */
op1 = expand_normal (arg0);
- if (GET_MODE (op1) != QImode)
- op1 = convert_to_mode (QImode, op1, 1);
- op1 = copy_to_mode_reg (QImode, op1);
+ op1 = copy_to_mode_reg (QImode, convert_to_mode (QImode, op1, 1));
emit_insn (gen_addqi3_cc (op0, op1, constm1_rtx));
/* Gen ADCX instruction to compute X+Y+CF. */
@@ -32174,9 +32148,7 @@ addcarryx:
/* Force memory operand only with base register here. But we
don't want to do it on memory operand for other builtin
functions. */
- if (GET_MODE (op1) != Pmode)
- op1 = convert_to_mode (Pmode, op1, 1);
- op1 = force_reg (Pmode, op1);
+ op1 = force_reg (Pmode, convert_to_mode (Pmode, op1, 1));
if (!insn_data[icode].operand[1].predicate (op0, mode0))
op0 = copy_to_mode_reg (mode0, op0);