diff options
author | David Zarzycki <dave@znu.io> | 2019-10-17 12:38:15 +0300 |
---|---|---|
committer | David Zarzycki <dave@znu.io> | 2019-10-26 21:14:57 +0300 |
commit | 11c920207afa92ad13fdf72daba14c9af336293a (patch) | |
tree | 2b671d2e7bf21a89616cd8a78603d3b1fd46be53 /llvm/lib/Target/X86/X86Subtarget.h | |
parent | 0d0509384f054cb4f13260786ee48163ac94d123 (diff) | |
download | bcm5719-llvm-11c920207afa92ad13fdf72daba14c9af336293a.tar.gz bcm5719-llvm-11c920207afa92ad13fdf72daba14c9af336293a.zip |
[X86] Prefer KORTEST on Knights Landing or later for memcmp()
PTEST and especially the MOVMSK instructions are slow on Knights Landing
or later. As a bonus, this patch increases instruction parallelism by
emitting:
KORTEST(PCMPNEQ(a, b), PCMPNEQ(c, d)) == 0
Instead of:
KORTEST(AND(PCMPEQ(a, b), PCMPEQ(c, d))) == ~0
https://reviews.llvm.org/D69157
Diffstat (limited to 'llvm/lib/Target/X86/X86Subtarget.h')
-rw-r--r-- | llvm/lib/Target/X86/X86Subtarget.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86Subtarget.h b/llvm/lib/Target/X86/X86Subtarget.h index e8efe8f2afe..e77b64a743a 100644 --- a/llvm/lib/Target/X86/X86Subtarget.h +++ b/llvm/lib/Target/X86/X86Subtarget.h @@ -445,6 +445,9 @@ protected: /// Indicates target prefers 256 bit instructions. bool Prefer256Bit = false; + /// Indicates target prefers AVX512 mask registers. + bool PreferMaskRegisters = false; + /// Threeway branch is profitable in this subtarget. bool ThreewayBranchProfitable = false; @@ -706,6 +709,7 @@ public: return UseRetpolineIndirectBranches; } bool useRetpolineExternalThunk() const { return UseRetpolineExternalThunk; } + bool preferMaskRegisters() const { return PreferMaskRegisters; } unsigned getPreferVectorWidth() const { return PreferVectorWidth; } unsigned getRequiredVectorWidth() const { return RequiredVectorWidth; } |