diff options
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 { |