1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-01-31 12:41:49 +01:00

AVX-512: store <4 x i1> and <2 x i1> values in memory

Enabled DAG pattern lowering for SKX with DQI predicate.

Differential Revision: http://reviews.llvm.org/D12550

llvm-svn: 246625
This commit is contained in:
Elena Demikhovsky 2015-09-02 09:20:58 +00:00
parent fa55e93070
commit c3d9501be6
2 changed files with 19 additions and 0 deletions

View File

@ -1786,6 +1786,11 @@ let Predicates = [HasDQI] in {
(KMOVBmk addr:$dst, VK8:$src)>;
def : Pat<(v8i1 (bitconvert (i8 (load addr:$src)))),
(KMOVBkm addr:$src)>;
def : Pat<(store VK4:$src, addr:$dst),
(KMOVBmk addr:$dst, (COPY_TO_REGCLASS VK4:$src, VK8))>;
def : Pat<(store VK2:$src, addr:$dst),
(KMOVBmk addr:$dst, (COPY_TO_REGCLASS VK2:$src, VK8))>;
}
let Predicates = [HasAVX512, NoDQI] in {
def : Pat<(store (i8 (bitconvert (v8i1 VK8:$src))), addr:$dst),

View File

@ -407,3 +407,17 @@ define <32 x i16> @test21(<32 x i16> %x , <32 x i1> %mask) nounwind readnone {
%ret = select <32 x i1> %mask, <32 x i16> %x, <32 x i16> zeroinitializer
ret <32 x i16> %ret
}
; SKX-LABEL: test22
; SKX: kmovb
define void @test22(<4 x i1> %a, <4 x i1>* %addr) {
store <4 x i1> %a, <4 x i1>* %addr
ret void
}
; SKX-LABEL: test23
; SKX: kmovb
define void @test23(<2 x i1> %a, <2 x i1>* %addr) {
store <2 x i1> %a, <2 x i1>* %addr
ret void
}