From 6e7879c5e6e26c2c6d00618f12af20012eecff41 Mon Sep 17 00:00:00 2001 From: Nemanja Ivanovic Date: Thu, 22 Sep 2016 09:52:19 +0000 Subject: [Power9] Add exploitation of non-permuting memory ops This patch corresponds to review: https://reviews.llvm.org/D19825 The new lxvx/stxvx instructions do not require the swaps to line the elements up correctly. In order to select them over the lxvd2x/lxvw4x instructions which require swaps, the patterns for the old instruction have a predicate that ensures they won't be selected on Power9 and newer CPUs. llvm-svn: 282143 --- llvm/lib/Target/PowerPC/PPCSubtarget.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'llvm/lib/Target/PowerPC/PPCSubtarget.h') diff --git a/llvm/lib/Target/PowerPC/PPCSubtarget.h b/llvm/lib/Target/PowerPC/PPCSubtarget.h index f58c7c10c8b..d80a9ad8d34 100644 --- a/llvm/lib/Target/PowerPC/PPCSubtarget.h +++ b/llvm/lib/Target/PowerPC/PPCSubtarget.h @@ -277,6 +277,9 @@ public: bool hasFloat128() const { return HasFloat128; } bool isISA3_0() const { return IsISA3_0; } bool useLongCalls() const { return UseLongCalls; } + bool needsSwapsForVSXMemOps() const { + return hasVSX() && isLittleEndian() && !hasP9Vector(); + } POPCNTDKind hasPOPCNTD() const { return HasPOPCNTD; } -- cgit v1.2.3