re PR rtl-optimization/15193 (Unary minus using pointer to V4SF vector causes -fforce-mem to exhaust all memory)
PR rtl-opt/15193 * expmed.c (extract_bit_field): Fix vector_extract return. * config/i386/i386.md (negv4sf2): New pattern. From-SVN: r82699
This commit is contained in:
parent
07d5edd25f
commit
5c64c9001b
3 changed files with 21 additions and 3 deletions
|
@ -1,3 +1,10 @@
|
|||
2004-06-07 Richard Henderson <rth@redhat.com>
|
||||
|
||||
PR rtl-opt/15193
|
||||
* expmed.c (extract_bit_field): Fix vector_extract return.
|
||||
|
||||
* config/i386/i386.md (negv4sf2): New pattern.
|
||||
|
||||
2004-06-07 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/15337
|
||||
|
|
|
@ -20404,6 +20404,18 @@
|
|||
[(set_attr "type" "sseadd")
|
||||
(set_attr "mode" "SF")])
|
||||
|
||||
;; ??? Should probably be done by generic code instead.
|
||||
(define_expand "negv4sf2"
|
||||
[(set (match_operand:V4SF 0 "register_operand" "")
|
||||
(xor:V4SF (match_operand:V4SF 1 "nonimmediate_operand" "")
|
||||
(match_dup 2)))]
|
||||
"TARGET_SSE"
|
||||
{
|
||||
rtx m0 = gen_lowpart (SFmode, gen_int_mode (0x80000000, SImode));
|
||||
rtx vm0 = gen_rtx_CONST_VECTOR (V4SFmode, gen_rtvec (4, m0, m0, m0, m0));
|
||||
operands[2] = force_reg (V4SFmode, vm0);
|
||||
})
|
||||
|
||||
(define_insn "mulv4sf3"
|
||||
[(set (match_operand:V4SF 0 "register_operand" "=x")
|
||||
(mult:V4SF (match_operand:V4SF 1 "register_operand" "0")
|
||||
|
|
|
@ -1125,6 +1125,7 @@ extract_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
|
|||
|| ! (*insn_data[icode].operand[1].predicate) (src, mode1)
|
||||
|| ! (*insn_data[icode].operand[2].predicate) (rtxpos, mode2))
|
||||
abort ();
|
||||
|
||||
pat = GEN_FCN (icode) (dest, src, rtxpos);
|
||||
seq = get_insns ();
|
||||
end_sequence ();
|
||||
|
@ -1132,9 +1133,7 @@ extract_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
|
|||
{
|
||||
emit_insn (seq);
|
||||
emit_insn (pat);
|
||||
return extract_bit_field (dest, bitsize,
|
||||
bitnum - pos * GET_MODE_BITSIZE (innermode),
|
||||
unsignedp, target, mode, tmode, total_size);
|
||||
return dest;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue