diff options
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.patch | 120 |
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 @@ | |||
1 | 2011-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 | |||
9 | 2011-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 | |||