diff options
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0413-config-i386-sse.md-vec_dupv4sf-Correct-mode-of-force.patch')
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0413-config-i386-sse.md-vec_dupv4sf-Correct-mode-of-force.patch | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0413-config-i386-sse.md-vec_dupv4sf-Correct-mode-of-force.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0413-config-i386-sse.md-vec_dupv4sf-Correct-mode-of-force.patch new file mode 100644 index 0000000000..983b4d4430 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0413-config-i386-sse.md-vec_dupv4sf-Correct-mode-of-force.patch | |||
@@ -0,0 +1,50 @@ | |||
1 | From f3bc59535b5f2f6c0eb0ac46d3cbc0ffed8249f3 Mon Sep 17 00:00:00 2001 | ||
2 | From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | ||
3 | Date: Sat, 11 Jun 2011 12:06:31 +0000 | ||
4 | Subject: [PATCH] * config/i386/sse.md (vec_dupv4sf): Correct mode of forced register. | ||
5 | (*vec_dupv2df): Rename from vec_dupv2df. | ||
6 | (vec_dupv2df): New expander. | ||
7 | |||
8 | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174950 138bc75d-0d04-0410-961f-82ee72b054a4 | ||
9 | |||
10 | index 0e03dd4..12b307a 100644 | ||
11 | --- a/gcc/config/i386/sse.md | ||
12 | +++ b/gcc/config/i386/sse.md | ||
13 | @@ -3816,7 +3816,7 @@ | ||
14 | "TARGET_SSE" | ||
15 | { | ||
16 | if (!TARGET_AVX) | ||
17 | - operands[1] = force_reg (V4SFmode, operands[1]); | ||
18 | + operands[1] = force_reg (SFmode, operands[1]); | ||
19 | }) | ||
20 | |||
21 | (define_insn "*vec_dupv4sf_avx" | ||
22 | @@ -5117,6 +5117,16 @@ | ||
23 | (set_attr "length_immediate" "*,*,*,1,*,*") | ||
24 | (set_attr "mode" "DF,V1DF,V1DF,V2DF,V1DF,V1DF")]) | ||
25 | |||
26 | +(define_expand "vec_dupv2df" | ||
27 | + [(set (match_operand:V2DF 0 "register_operand" "") | ||
28 | + (vec_duplicate:V2DF | ||
29 | + (match_operand:DF 1 "nonimmediate_operand" "")))] | ||
30 | + "TARGET_SSE2" | ||
31 | +{ | ||
32 | + if (!TARGET_SSE3) | ||
33 | + operands[1] = force_reg (DFmode, operands[1]); | ||
34 | +}) | ||
35 | + | ||
36 | (define_insn "*vec_dupv2df_sse3" | ||
37 | [(set (match_operand:V2DF 0 "register_operand" "=x") | ||
38 | (vec_duplicate:V2DF | ||
39 | @@ -5127,7 +5137,7 @@ | ||
40 | (set_attr "prefix" "maybe_vex") | ||
41 | (set_attr "mode" "DF")]) | ||
42 | |||
43 | -(define_insn "vec_dupv2df" | ||
44 | +(define_insn "*vec_dupv2df" | ||
45 | [(set (match_operand:V2DF 0 "register_operand" "=x") | ||
46 | (vec_duplicate:V2DF | ||
47 | (match_operand:DF 1 "register_operand" "0")))] | ||
48 | -- | ||
49 | 1.7.0.4 | ||
50 | |||