mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-13 17:00:01 +00:00
[AVX512] Use AND32ri8 instead of AND32ri when anding with 1 to create single bit masks. This results in a smaller encoding.
llvm-svn: 272627
This commit is contained in:
parent
2559048431
commit
35e204f828
@ -2061,7 +2061,7 @@ 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 (AND32ri (MOVZX32rm8 addr:$src), (i32 1)), VK1)>;
|
||||
(COPY_TO_REGCLASS (AND32ri8 (MOVZX32rm8 addr:$src), (i32 1)), VK1)>;
|
||||
def : Pat<(v16i1 (bitconvert (i16 (load addr:$src)))),
|
||||
(KMOVWkm addr:$src)>;
|
||||
}
|
||||
@ -2078,30 +2078,30 @@ let Predicates = [HasBWI] in {
|
||||
|
||||
let Predicates = [HasAVX512] in {
|
||||
def : Pat<(i1 (trunc (i64 GR64:$src))),
|
||||
(COPY_TO_REGCLASS (KMOVWkr (AND32ri (EXTRACT_SUBREG $src, sub_32bit),
|
||||
(COPY_TO_REGCLASS (KMOVWkr (AND32ri8 (EXTRACT_SUBREG $src, sub_32bit),
|
||||
(i32 1))), VK1)>;
|
||||
|
||||
def : Pat<(i1 (trunc (i32 GR32:$src))),
|
||||
(COPY_TO_REGCLASS (KMOVWkr (AND32ri $src, (i32 1))), VK1)>;
|
||||
(COPY_TO_REGCLASS (KMOVWkr (AND32ri8 $src, (i32 1))), VK1)>;
|
||||
|
||||
def : Pat<(i1 (trunc (i8 GR8:$src))),
|
||||
(COPY_TO_REGCLASS
|
||||
(KMOVWkr (AND32ri (SUBREG_TO_REG (i32 0), GR8:$src, sub_8bit), (i32 1))),
|
||||
(KMOVWkr (AND32ri8 (SUBREG_TO_REG (i32 0), GR8:$src, sub_8bit), (i32 1))),
|
||||
VK1)>;
|
||||
def : Pat<(i1 (trunc (i16 GR16:$src))),
|
||||
(COPY_TO_REGCLASS
|
||||
(KMOVWkr (AND32ri (SUBREG_TO_REG (i32 0), $src, sub_16bit), (i32 1))),
|
||||
(KMOVWkr (AND32ri8 (SUBREG_TO_REG (i32 0), $src, sub_16bit), (i32 1))),
|
||||
VK1)>;
|
||||
|
||||
def : Pat<(i32 (zext VK1:$src)),
|
||||
(AND32ri (KMOVWrk (COPY_TO_REGCLASS VK1:$src, VK16)), (i32 1))>;
|
||||
(AND32ri8 (KMOVWrk (COPY_TO_REGCLASS VK1:$src, VK16)), (i32 1))>;
|
||||
def : Pat<(i32 (anyext VK1:$src)),
|
||||
(KMOVWrk (COPY_TO_REGCLASS VK1:$src, VK16))>;
|
||||
|
||||
def : Pat<(i8 (zext VK1:$src)),
|
||||
(EXTRACT_SUBREG
|
||||
(AND32ri (KMOVWrk
|
||||
(COPY_TO_REGCLASS VK1:$src, VK16)), (i32 1)), sub_8bit)>;
|
||||
(AND32ri8 (KMOVWrk
|
||||
(COPY_TO_REGCLASS VK1:$src, VK16)), (i32 1)), sub_8bit)>;
|
||||
def : Pat<(i8 (anyext VK1:$src)),
|
||||
(EXTRACT_SUBREG
|
||||
(KMOVWrk (COPY_TO_REGCLASS VK1:$src, VK16)), sub_8bit)>;
|
||||
@ -2111,7 +2111,7 @@ let Predicates = [HasAVX512] in {
|
||||
(KMOVWrk (COPY_TO_REGCLASS VK1:$src, VK16)), sub_32bit), (i64 1))>;
|
||||
def : Pat<(i16 (zext VK1:$src)),
|
||||
(EXTRACT_SUBREG
|
||||
(AND32ri (KMOVWrk (COPY_TO_REGCLASS VK1:$src, VK16)), (i32 1)),
|
||||
(AND32ri8 (KMOVWrk (COPY_TO_REGCLASS VK1:$src, VK16)), (i32 1)),
|
||||
sub_16bit)>;
|
||||
}
|
||||
def : Pat<(v16i1 (scalar_to_vector VK1:$src)),
|
||||
|
Loading…
x
Reference in New Issue
Block a user