summaryrefslogtreecommitdiffstats
path: root/toolchain-layer/recipes-devtools/gcc/gcc-4.6/linaro/gcc-4.6-linaro-r106755.patch
diff options
context:
space:
mode:
Diffstat (limited to 'toolchain-layer/recipes-devtools/gcc/gcc-4.6/linaro/gcc-4.6-linaro-r106755.patch')
-rw-r--r--toolchain-layer/recipes-devtools/gcc/gcc-4.6/linaro/gcc-4.6-linaro-r106755.patch120
1 files changed, 0 insertions, 120 deletions
diff --git a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/linaro/gcc-4.6-linaro-r106755.patch b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/linaro/gcc-4.6-linaro-r106755.patch
deleted file mode 100644
index b8f587c9f4..0000000000
--- a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/linaro/gcc-4.6-linaro-r106755.patch
+++ /dev/null
@@ -1,120 +0,0 @@
12011-06-10 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
2
3 Backport from mainline:
4 gcc/
5 2011-06-02 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
6 * config/arm/neon.md (orndi3_neon): Actually split it.
7
8
92011-06-10 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
10
11 Backport from mainline.
12 gcc/
13 2011-05-26 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
14
15 * config/arm/neon.md ("orn<mode>3_neon"): Canonicalize not.
16 ("orndi3_neon"): Likewise.
17 ("bic<mode>3_neon"): Likewise.
18
19 gcc/testsuite
20 2011-05-26 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
21
22 * gcc.target/arm/neon-vorn-vbic.c: New test.
23
24=== modified file 'gcc/config/arm/neon.md'
25--- old/gcc/config/arm/neon.md 2011-06-02 12:12:00 +0000
26+++ new/gcc/config/arm/neon.md 2011-06-04 00:04:47 +0000
27@@ -783,30 +783,57 @@
28
29 (define_insn "orn<mode>3_neon"
30 [(set (match_operand:VDQ 0 "s_register_operand" "=w")
31- (ior:VDQ (match_operand:VDQ 1 "s_register_operand" "w")
32- (not:VDQ (match_operand:VDQ 2 "s_register_operand" "w"))))]
33+ (ior:VDQ (not:VDQ (match_operand:VDQ 2 "s_register_operand" "w"))
34+ (match_operand:VDQ 1 "s_register_operand" "w")))]
35 "TARGET_NEON"
36 "vorn\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
37 [(set_attr "neon_type" "neon_int_1")]
38 )
39
40-(define_insn "orndi3_neon"
41- [(set (match_operand:DI 0 "s_register_operand" "=w,?=&r,?&r")
42- (ior:DI (match_operand:DI 1 "s_register_operand" "w,r,0")
43- (not:DI (match_operand:DI 2 "s_register_operand" "w,0,r"))))]
44+;; TODO: investigate whether we should disable
45+;; this and bicdi3_neon for the A8 in line with the other
46+;; changes above.
47+(define_insn_and_split "orndi3_neon"
48+ [(set (match_operand:DI 0 "s_register_operand" "=w,?&r,?&r,?&r")
49+ (ior:DI (not:DI (match_operand:DI 2 "s_register_operand" "w,0,0,r"))
50+ (match_operand:DI 1 "s_register_operand" "w,r,r,0")))]
51 "TARGET_NEON"
52 "@
53 vorn\t%P0, %P1, %P2
54 #
55+ #
56 #"
57- [(set_attr "neon_type" "neon_int_1,*,*")
58- (set_attr "length" "*,8,8")]
59+ "reload_completed &&
60+ (TARGET_NEON && !(IS_VFP_REGNUM (REGNO (operands[0]))))"
61+ [(set (match_dup 0) (ior:SI (not:SI (match_dup 2)) (match_dup 1)))
62+ (set (match_dup 3) (ior:SI (not:SI (match_dup 4)) (match_dup 5)))]
63+ "
64+ {
65+ if (TARGET_THUMB2)
66+ {
67+ operands[3] = gen_highpart (SImode, operands[0]);
68+ operands[0] = gen_lowpart (SImode, operands[0]);
69+ operands[4] = gen_highpart (SImode, operands[2]);
70+ operands[2] = gen_lowpart (SImode, operands[2]);
71+ operands[5] = gen_highpart (SImode, operands[1]);
72+ operands[1] = gen_lowpart (SImode, operands[1]);
73+ }
74+ else
75+ {
76+ emit_insn (gen_one_cmpldi2 (operands[0], operands[2]));
77+ emit_insn (gen_iordi3 (operands[0], operands[1], operands[0]));
78+ DONE;
79+ }
80+ }"
81+ [(set_attr "neon_type" "neon_int_1,*,*,*")
82+ (set_attr "length" "*,16,8,8")
83+ (set_attr "arch" "any,a,t2,t2")]
84 )
85
86 (define_insn "bic<mode>3_neon"
87 [(set (match_operand:VDQ 0 "s_register_operand" "=w")
88- (and:VDQ (match_operand:VDQ 1 "s_register_operand" "w")
89- (not:VDQ (match_operand:VDQ 2 "s_register_operand" "w"))))]
90+ (and:VDQ (not:VDQ (match_operand:VDQ 2 "s_register_operand" "w"))
91+ (match_operand:VDQ 1 "s_register_operand" "w")))]
92 "TARGET_NEON"
93 "vbic\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
94 [(set_attr "neon_type" "neon_int_1")]
95
96=== added file 'gcc/testsuite/gcc.target/arm/neon-vorn-vbic.c'
97--- old/gcc/testsuite/gcc.target/arm/neon-vorn-vbic.c 1970-01-01 00:00:00 +0000
98+++ new/gcc/testsuite/gcc.target/arm/neon-vorn-vbic.c 2011-06-03 23:50:02 +0000
99@@ -0,0 +1,20 @@
100+/* { dg-do compile } */
101+/* { dg-require-effective-target arm_neon_ok } */
102+/* { dg-options "-O2 -ftree-vectorize" } */
103+/* { dg-add-options arm_neon } */
104+
105+void bor (int *__restrict__ c, int *__restrict__ a, int *__restrict__ b)
106+{
107+ int i;
108+ for (i = 0; i < 9; i++)
109+ c[i] = b[i] | (~a[i]);
110+}
111+void bic (int *__restrict__ c, int *__restrict__ a, int *__restrict__ b)
112+{
113+ int i;
114+ for (i = 0; i < 9; i++)
115+ c[i] = b[i] & (~a[i]);
116+}
117+
118+/* { dg-final { scan-assembler "vorn\\t" } } */
119+/* { dg-final { scan-assembler "vbic\\t" } } */
120