diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index bc47a291de4b9b24d829e4dbf060fff7a321558f..43a9c5b27d78a47cf965636a03232005a4c8e7c3 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -3840,7 +3840,7 @@ (match_operand:VB 1 "register_operand") (match_operand:VB 2 "register_operand") (match_operand:VB 3 "register_operand")] - "TARGET_SIMD" + "TARGET_SIMD && !BYTES_BIG_ENDIAN" { aarch64_expand_vec_perm (operands[0], operands[1], operands[2], operands[3]); diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 159f88f28dd838d4aee6d75f8d21897695609c49..b425183c1e893c6511ba575a0cd416563c9510be 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -3436,7 +3436,8 @@ proc check_effective_target_vect_perm { } { } else { set et_vect_perm_saved 0 if { [is-effective-target arm_neon_ok] - || [istarget aarch64*-*-*] + || ([istarget aarch64*-*-*] + && [is-effective-target aarch64_little_endian]) || [istarget powerpc*-*-*] || [istarget spu-*-*] || [istarget i?86-*-*] @@ -3464,7 +3465,8 @@ proc check_effective_target_vect_perm_byte { } { set et_vect_perm_byte_saved 0 if { ([is-effective-target arm_neon_ok] && [is-effective-target arm_little_endian]) - || [istarget aarch64*-*-*] + || ([istarget aarch64*-*-*] + && [is-effective-target aarch64_little_endian]) || [istarget powerpc*-*-*] || [istarget spu-*-*] } { set et_vect_perm_byte_saved 1 @@ -3488,7 +3490,8 @@ proc check_effective_target_vect_perm_short { } { set et_vect_perm_short_saved 0 if { ([is-effective-target arm_neon_ok] && [is-effective-target arm_little_endian]) - || [istarget aarch64*-*-*] + || ([istarget aarch64*-*-*] + && [is-effective-target aarch64_little_endian]) || [istarget powerpc*-*-*] || [istarget spu-*-*] } { set et_vect_perm_short_saved 1