diff options
author | Elena Demikhovsky <elena.demikhovsky@intel.com> | 2013-12-17 08:33:15 +0000 |
---|---|---|
committer | Elena Demikhovsky <elena.demikhovsky@intel.com> | 2013-12-17 08:33:15 +0000 |
commit | c5f6726a24f7daaa863bcddb4a0fbf9ad3578c62 (patch) | |
tree | b4a9fdd27950b5e15b6f79c602c176bdfd3fb646 /llvm/lib/Target/X86/X86InstrAVX512.td | |
parent | b2d4274d3f35e30ab770a80ef779cb7d734cfb35 (diff) | |
download | bcm5719-llvm-c5f6726a24f7daaa863bcddb4a0fbf9ad3578c62.tar.gz bcm5719-llvm-c5f6726a24f7daaa863bcddb4a0fbf9ad3578c62.zip |
AVX-512: Added implementation of CONCAT_VECTORS for v8i1 vectors (by Alexey Bader).
Added implementation of "truncate" from integer type (i64/i32/i16/i8) to i1.
llvm-svn: 197482
Diffstat (limited to 'llvm/lib/Target/X86/X86InstrAVX512.td')
-rw-r--r-- | llvm/lib/Target/X86/X86InstrAVX512.td | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86InstrAVX512.td b/llvm/lib/Target/X86/X86InstrAVX512.td index 2a405332711..7bcbc454c9a 100644 --- a/llvm/lib/Target/X86/X86InstrAVX512.td +++ b/llvm/lib/Target/X86/X86InstrAVX512.td @@ -908,6 +908,9 @@ let Predicates = [HasAVX512] in { def : Pat<(v8i1 (load addr:$src)), (COPY_TO_REGCLASS (KMOVWkm addr:$src), VK8)>; + + def : Pat<(i1 (X86trunc (i32 GR32:$src))), + (COPY_TO_REGCLASS (KMOVWkr $src), VK1)>; } // With AVX-512 only, 8-bit mask is promoted to 16-bit mask. let Predicates = [HasAVX512] in { @@ -1051,6 +1054,10 @@ multiclass avx512_mask_unpck_bw<bits<8> opc, string OpcodeStr> { } defm KUNPCK : avx512_mask_unpck_bw<0x4b, "kunpck">; +def : Pat<(v16i1 (concat_vectors (v8i1 VK8:$src1), (v8i1 VK8:$src2))), + (KUNPCKBWrr (COPY_TO_REGCLASS VK8:$src2, VK16), + (COPY_TO_REGCLASS VK8:$src1, VK16))>; + multiclass avx512_mask_unpck_int<string IntName, string InstName> { let Predicates = [HasAVX512] in |