From de75c8761e57b0360c9b93690a011e406b7a5f60 Mon Sep 17 00:00:00 2001 From: Bill Schmidt Date: Wed, 16 Oct 2013 17:48:03 +0000 Subject: [PATCH] vsx.md (vsx_concat_): Adjust output for LE. 2013-10-16 Bill Schmidt * config/rs6000/vsx.md (vsx_concat_): Adjust output for LE. (vsx_concat_v2sf): Likewise. From-SVN: r203713 --- gcc/ChangeLog | 5 +++++ gcc/config/rs6000/vsx.md | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9c32df89da4a..be6345c8447c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-10-16 Bill Schmidt + + * config/rs6000/vsx.md (vsx_concat_): Adjust output for LE. + (vsx_concat_v2sf): Likewise. + 2013-10-16 James Greenhalgh * config/aarch64/aarch64.md diff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md index dfb9ab197839..df87c1967541 100644 --- a/gcc/config/rs6000/vsx.md +++ b/gcc/config/rs6000/vsx.md @@ -1194,7 +1194,12 @@ (match_operand: 1 "vsx_register_operand" "ws,wa") (match_operand: 2 "vsx_register_operand" "ws,wa")))] "VECTOR_MEM_VSX_P (mode)" - "xxpermdi %x0,%x1,%x2,0" +{ + if (BYTES_BIG_ENDIAN) + return "xxpermdi %x0,%x1,%x2,0"; + else + return "xxpermdi %x0,%x2,%x1,0"; +} [(set_attr "type" "vecperm")]) ;; Special purpose concat using xxpermdi to glue two single precision values @@ -1207,7 +1212,12 @@ (match_operand:SF 2 "vsx_register_operand" "f,f")] UNSPEC_VSX_CONCAT))] "VECTOR_MEM_VSX_P (V2DFmode)" - "xxpermdi %x0,%x1,%x2,0" +{ + if (BYTES_BIG_ENDIAN) + return "xxpermdi %x0,%x1,%x2,0"; + else + return "xxpermdi %x0,%x2,%x1,0"; +} [(set_attr "type" "vecperm")]) ;; xxpermdi for little endian loads and stores. We need several of -- 2.47.2