20 lines
736 B
Diff
20 lines
736 B
Diff
diff -urpN gcc-7.3.0-bak/gcc/config/arm/arm.c gcc-7.3.0/gcc/config/arm/arm.c
|
|
--- gcc-7.3.0-bak/gcc/config/arm/arm.c 2018-11-13 14:23:21.362347728 +0800
|
|
+++ gcc-7.3.0/gcc/config/arm/arm.c 2018-11-13 14:31:15.722360215 +0800
|
|
@@ -26853,7 +26853,14 @@ static bool
|
|
arm_array_mode_supported_p (machine_mode mode,
|
|
unsigned HOST_WIDE_INT nelems)
|
|
{
|
|
- if (TARGET_NEON
|
|
+
|
|
+
|
|
+ /* We don't want to enable interleaved loads and stores for BYTES_BIG_ENDIAN
|
|
+ for now, as the lane-swapping logic needs to be extended in the expanders.
|
|
+ See PR target/82518. */
|
|
+
|
|
+
|
|
+ if (TARGET_NEON && !BYTES_BIG_ENDIAN
|
|
&& (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode))
|
|
&& (nelems >= 2 && nelems <= 4))
|
|
return true;
|