diff options
Diffstat (limited to 'gcc/config/i386/i386.md')
| -rw-r--r-- | gcc/config/i386/i386.md | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 770a7af..ed2c579 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -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") |
