From: Uros Bizjak Date: Sat, 11 Jun 2011 12:08:53 +0000 (+0200) Subject: sse.md (vec_dupv4sf): Correct mode of forced register. X-Git-Tag: releases/gcc-4.5.4~595 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=797b95ba19c05ea88d217c81a6e39b63c11ff635;p=thirdparty%2Fgcc.git sse.md (vec_dupv4sf): Correct mode of forced register. * config/i386/sse.md (vec_dupv4sf): Correct mode of forced register. (*vec_dupv2df): Rename from vec_dupv2df. (vec_dupv2df): New expander. From-SVN: r174951 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 133949248b82..2e3fba348d07 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-06-11 Uros Bizjak + + * config/i386/sse.md (vec_dupv4sf): Correct mode of forced register. + (*vec_dupv2df): Rename from vec_dupv2df. + (vec_dupv2df): New expander. + 2011-06-09 Eric Botcazou * config/sparc/sparc.md (return_internal): Adjust 'length' attribute. diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 67f55ee7abe1..424e09254339 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -3904,7 +3904,7 @@ "TARGET_SSE" { if (!TARGET_AVX) - operands[1] = force_reg (V4SFmode, operands[1]); + operands[1] = force_reg (SFmode, operands[1]); }) (define_insn "*vec_dupv4sf_avx" @@ -5135,6 +5135,16 @@ (set_attr "length_immediate" "*,*,*,1,*,*") (set_attr "mode" "DF,V1DF,V1DF,V2DF,V1DF,V1DF")]) +(define_expand "vec_dupv2df" + [(set (match_operand:V2DF 0 "register_operand" "") + (vec_duplicate:V2DF + (match_operand:DF 1 "nonimmediate_operand" "")))] + "TARGET_SSE2" +{ + if (!TARGET_SSE3) + operands[1] = force_reg (DFmode, operands[1]); +}) + (define_insn "*vec_dupv2df_sse3" [(set (match_operand:V2DF 0 "register_operand" "=x") (vec_duplicate:V2DF @@ -5145,7 +5155,7 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "DF")]) -(define_insn "vec_dupv2df" +(define_insn "*vec_dupv2df" [(set (match_operand:V2DF 0 "register_operand" "=x") (vec_duplicate:V2DF (match_operand:DF 1 "register_operand" "0")))]