diff options
Diffstat (limited to 'gcc/config/i386/i386.c')
| -rw-r--r-- | gcc/config/i386/i386.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 0a8b1f6..0901960 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -2995,6 +2995,26 @@ split_di (operands, num, lo_half, hi_half) abort(); } } + +void +split_xf (orig, out) + rtx orig; + rtx out[3]; +{ + if (REG_P (orig)) + { + int regno = REGNO (orig); + out[0] = gen_rtx_REG (SImode, regno); + out[1] = gen_rtx_REG (SImode, regno + 1); + out[2] = gen_rtx_REG (SImode, regno + 2); + } + else + { + out[0] = change_address (orig, SImode, NULL_RTX); + out[1] = adj_offsettable_operand (out[0], 4); + out[2] = adj_offsettable_operand (out[0], 8); + } +} /* Output code to perform a 387 binary operation in INSN, one of PLUS, MINUS, MULT or DIV. OPERANDS are the insn operands, where operands[3] |
