blob: 10aba38756c4d4f994973fdc76d7cc84b81e7dde (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
This is just a workaround rather than a real fix. The real fix
has been ported to the gcc 3.4.4 ebuild.
Tested on i686-pc-linux and x86_64-pc-linux
2004-09-20 Scott Robert Ladd <scott.ladd@coyotegulch.com>
PR 14631
* config/i386/i386.md (sse2_pinsrw): Changing the pattern of
sse2_pinsrw from vector_merge to unspec.
http://gcc.gnu.org/ml/gcc-patches/2004-09/msg01949.html
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14631
--- gcc-3.4.2/gcc/config/i386/i386.md
+++ gcc-3.4.2/gcc/config/i386/i386.md
@@ -105,6 +105,7 @@
(UNSPEC_MFENCE 59)
(UNSPEC_LFENCE 60)
(UNSPEC_PSADBW 61)
+ (UNSPEC_PINSRW 62)
(UNSPEC_ADDSUB 71)
(UNSPEC_HADD 72)
(UNSPEC_HSUB 73)
@@ -22095,11 +22096,12 @@
(define_insn "sse2_pinsrw"
[(set (match_operand:V8HI 0 "register_operand" "=x")
- (vec_merge:V8HI (match_operand:V8HI 1 "register_operand" "0")
+ (unspec:V8HI [(match_operand:V8HI 1 "register_operand" "0")
(vec_duplicate:V8HI
(truncate:HI
(match_operand:SI 2 "nonimmediate_operand" "rm")))
- (match_operand:SI 3 "const_0_to_255_operand" "N")))]
+ (match_operand:SI 3 "const_0_to_255_operand" "N")]
+ UNSPEC_PINSRW))]
"TARGET_SSE2"
"pinsrw\t{%3, %2, %0|%0, %2, %3}"
[(set_attr "type" "ssecvt")
|