This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[AArch64] Fix output template for Scalar Neon->Neon register move.


Hi,

To move a scalar char/short/int around in the vector registers there
is no such instruction as:
  dup v0, v0.h[0]
But there is:
  dup h0, v0.h[0]
(Alternately there is dup v0.4h, v0.h[0], but I don't think that
is what we are aiming for).

Fix the output template we are using to reflect this.

aarch64.exp came back clean and the correct instruction form is
now generated.

OK?

Thanks,
James

---
2013-10-14  James Greenhalgh  <james.greenhalgh@arm.com>

	* config/aarch64/aarch64.md
	(*mov<mode>_aarch64): Fix output template for DUP (element) Scalar.
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
index 01664665e7d309f2cf2076bdc3ca6e0825612cea..758be47420e95fad74c57c1a9dcb7934b87c141e 100644
--- a/gcc/config/aarch64/aarch64.md
+++ b/gcc/config/aarch64/aarch64.md
@@ -789,7 +789,7 @@ (define_insn "*mov<mode>_aarch64"
      case 8:
        return "dup\t%0.<Vallxd>, %w1";
      case 9:
-       return "dup\t%0, %1.<v>[0]";
+       return "dup\t%<Vetype>0, %1.<v>[0]";
      default:
        gcc_unreachable ();
      }

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]