summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2016-06-14 03:13:00 +0000
committerCraig Topper <craig.topper@gmail.com>2016-06-14 03:13:00 +0000
commit99e30e6a6624109b6b8d06d5d1f95c87bb88ca92 (patch)
tree30fabbc67af6785e44a3037c8d3a1fc4980e30fd /llvm/lib/Target
parentddab3953977c572045fa143c369b2db442458037 (diff)
downloadbcm5719-llvm-99e30e6a6624109b6b8d06d5d1f95c87bb88ca92.tar.gz
bcm5719-llvm-99e30e6a6624109b6b8d06d5d1f95c87bb88ca92.zip
[AVX512] Use MOVZX32 instead of MOVZ16 for loading single v8/v4/v2/v1 masks when KMOVB is not available. This has better behavior with respect to partial register stalls since it won't need to preserve the upper 16-bits of the GPR.
llvm-svn: 272626
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/X86/X86InstrAVX512.td8
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/X86InstrAVX512.td b/llvm/lib/Target/X86/X86InstrAVX512.td
index 8419448bd90..bea6e622d27 100644
--- a/llvm/lib/Target/X86/X86InstrAVX512.td
+++ b/llvm/lib/Target/X86/X86InstrAVX512.td
@@ -2050,18 +2050,18 @@ let Predicates = [HasAVX512, NoDQI] in {
sub_8bit))>;
def : Pat<(v8i1 (load addr:$src)),
- (COPY_TO_REGCLASS (MOVZX16rm8 addr:$src), VK8)>;
+ (COPY_TO_REGCLASS (MOVZX32rm8 addr:$src), VK8)>;
def : Pat<(v2i1 (load addr:$src)),
- (COPY_TO_REGCLASS (MOVZX16rm8 addr:$src), VK2)>;
+ (COPY_TO_REGCLASS (MOVZX32rm8 addr:$src), VK2)>;
def : Pat<(v4i1 (load addr:$src)),
- (COPY_TO_REGCLASS (MOVZX16rm8 addr:$src), VK4)>;
+ (COPY_TO_REGCLASS (MOVZX32rm8 addr:$src), VK4)>;
}
let Predicates = [HasAVX512] in {
def : Pat<(store (i16 (bitconvert (v16i1 VK16:$src))), addr:$dst),
(KMOVWmk addr:$dst, VK16:$src)>;
def : Pat<(i1 (load addr:$src)),
- (COPY_TO_REGCLASS (AND16ri (MOVZX16rm8 addr:$src), (i16 1)), VK1)>;
+ (COPY_TO_REGCLASS (AND32ri (MOVZX32rm8 addr:$src), (i32 1)), VK1)>;
def : Pat<(v16i1 (bitconvert (i16 (load addr:$src)))),
(KMOVWkm addr:$src)>;
}
OpenPOWER on IntegriCloud