blob: b9642ed69925055428f9dd94ea38406971313b88 (
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
|
diff -ruN gcc-4.4.0/gcc/config/rs6000/rs6000.c gcc-4.4.0-e500mc64/gcc/config/rs6000/rs6000.c
--- gcc-4.4.0/gcc/config/rs6000/rs6000.c 2009-03-17 15:18:21.000000000 -0500
+++ gcc-4.4.0-e500mc64/gcc/config/rs6000/rs6000.c 2009-12-04 10:36:44.000000000 -0600
@@ -11032,6 +11059,14 @@
mode = SImode;
gen_func.mov = gen_movsi;
}
+ else if (TARGET_COPY_UNALIGNED && bytes == 3 && offset > 0)
+ {
+ /* We generate a single unaligned SI move instead of 2 (HI, QI) */
+ move_bytes = 3;
+ mode = SImode;
+ gen_func.mov = gen_movsi;
+ offset--;
+ }
else if (bytes >= 2 && (align >= 16 || !STRICT_ALIGNMENT))
{ /* move 2 bytes */
move_bytes = 2;
diff -ruN gcc-4.4.0/gcc/config/rs6000/rs6000.opt gcc-4.4.0-e500mc64/gcc/config/rs6000/rs6000.opt
--- gcc-4.4.0/gcc/config/rs6000/rs6000.opt 2009-02-20 09:20:38.000000000 -0600
+++ gcc-4.4.0-e500mc64/gcc/config/rs6000/rs6000.opt 2009-09-30 13:51:17.000000000 -0500
@@ -201,6 +201,10 @@
Target RejectNegative Joined
-misel=yes/no Deprecated option. Use -misel/-mno-isel instead
+mcopy-unaligned
+Target Report Var(TARGET_COPY_UNALIGNED)
+Generate unaligned word load and stores to move 3 bytes
+
mspe
Target
Generate SPE SIMD instructions on E500
|