diff options
author | Craig Topper <craig.topper@gmail.com> | 2016-06-21 07:37:32 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2016-06-21 07:37:32 +0000 |
commit | 283418fbb6fe716460c7d514573de65cc8873e7c (patch) | |
tree | 99aa104b5f2b5dd22bce2d17956319d2b75fa106 /llvm/lib | |
parent | 9038aa3001d41a797acc494ca43a3c004f5fe8e3 (diff) | |
download | bcm5719-llvm-283418fbb6fe716460c7d514573de65cc8873e7c.tar.gz bcm5719-llvm-283418fbb6fe716460c7d514573de65cc8873e7c.zip |
[AVX512] Add patterns for any-extending a mask that use the def of KMOVW/KMOVB without going through an EXTRACT_SUBREG and a MOVZX.
llvm-svn: 273253
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/X86InstrAVX512.td | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86InstrAVX512.td b/llvm/lib/Target/X86/X86InstrAVX512.td index 01208a06741..859f5837df7 100644 --- a/llvm/lib/Target/X86/X86InstrAVX512.td +++ b/llvm/lib/Target/X86/X86InstrAVX512.td @@ -1997,6 +1997,8 @@ let Predicates = [HasDQI] in { (EXTRACT_SUBREG (KMOVBrk VK8:$src), sub_8bit)>; def : Pat<(i32 (zext (i8 (bitconvert (v8i1 VK8:$src))))), (KMOVBrk VK8:$src)>; + def : Pat<(i32 (anyext (i8 (bitconvert (v8i1 VK8:$src))))), + (KMOVBrk VK8:$src)>; } let Predicates = [HasAVX512] in { def : Pat<(v16i1 (bitconvert (i16 GR16:$src))), @@ -2005,6 +2007,8 @@ let Predicates = [HasAVX512] in { (EXTRACT_SUBREG (KMOVWrk VK16:$src), sub_16bit)>; def : Pat<(i32 (zext (i16 (bitconvert (v16i1 VK16:$src))))), (KMOVWrk VK16:$src)>; + def : Pat<(i32 (anyext (i16 (bitconvert (v16i1 VK16:$src))))), + (KMOVWrk VK16:$src)>; } let Predicates = [HasBWI] in { def : Pat<(v32i1 (bitconvert (i32 GR32:$src))), (KMOVDkr GR32:$src)>; @@ -2154,6 +2158,8 @@ let Predicates = [HasAVX512, NoDQI] in { sub_8bit)>; def : Pat<(i32 (zext (i8 (bitconvert (v8i1 VK8:$src))))), (KMOVWrk (COPY_TO_REGCLASS VK8:$src, VK16))>; + def : Pat<(i32 (anyext (i8 (bitconvert (v8i1 VK8:$src))))), + (KMOVWrk (COPY_TO_REGCLASS VK8:$src, VK16))>; } let Predicates = [HasAVX512] in { |