[X86] Add more type qualifiers to INSERT_SUBREG operations in rotate patterns so they don't get created with a v64i8 type.
Not sure why tablegen didn't error on this. Fixes PR35158. llvm-svn: 317079
This commit is contained in:
parent
53fc7e1763
commit
688f0ca6a7
|
|
@ -5424,26 +5424,26 @@ let Predicates = [HasAVX512, NoVLX] in {
|
||||||
(EXTRACT_SUBREG (v8i64
|
(EXTRACT_SUBREG (v8i64
|
||||||
(VPROLVQZrr
|
(VPROLVQZrr
|
||||||
(v8i64 (INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src1, sub_xmm)),
|
(v8i64 (INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src1, sub_xmm)),
|
||||||
(INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src2, sub_xmm))),
|
(v8i64 (INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src2, sub_xmm)))),
|
||||||
sub_xmm)>;
|
sub_xmm)>;
|
||||||
def : Pat<(v4i64 (rotl (v4i64 VR256X:$src1), (v4i64 VR256X:$src2))),
|
def : Pat<(v4i64 (rotl (v4i64 VR256X:$src1), (v4i64 VR256X:$src2))),
|
||||||
(EXTRACT_SUBREG (v8i64
|
(EXTRACT_SUBREG (v8i64
|
||||||
(VPROLVQZrr
|
(VPROLVQZrr
|
||||||
(v8i64 (INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src1, sub_ymm)),
|
(v8i64 (INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src1, sub_ymm)),
|
||||||
(INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src2, sub_ymm))),
|
(v8i64 (INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src2, sub_ymm)))),
|
||||||
sub_ymm)>;
|
sub_ymm)>;
|
||||||
|
|
||||||
def : Pat<(v4i32 (rotl (v4i32 VR128X:$src1), (v4i32 VR128X:$src2))),
|
def : Pat<(v4i32 (rotl (v4i32 VR128X:$src1), (v4i32 VR128X:$src2))),
|
||||||
(EXTRACT_SUBREG (v16i32
|
(EXTRACT_SUBREG (v16i32
|
||||||
(VPROLVDZrr
|
(VPROLVDZrr
|
||||||
(v16i32 (INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src1, sub_xmm)),
|
(v16i32 (INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src1, sub_xmm)),
|
||||||
(INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src2, sub_xmm))),
|
(v16i32 (INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src2, sub_xmm)))),
|
||||||
sub_xmm)>;
|
sub_xmm)>;
|
||||||
def : Pat<(v8i32 (rotl (v8i32 VR256X:$src1), (v8i32 VR256X:$src2))),
|
def : Pat<(v8i32 (rotl (v8i32 VR256X:$src1), (v8i32 VR256X:$src2))),
|
||||||
(EXTRACT_SUBREG (v16i32
|
(EXTRACT_SUBREG (v16i32
|
||||||
(VPROLVDZrr
|
(VPROLVDZrr
|
||||||
(v16i32 (INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src1, sub_ymm)),
|
(v16i32 (INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src1, sub_ymm)),
|
||||||
(INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src2, sub_ymm))),
|
(v16i32 (INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src2, sub_ymm)))),
|
||||||
sub_ymm)>;
|
sub_ymm)>;
|
||||||
|
|
||||||
def : Pat<(v2i64 (X86vrotli (v2i64 VR128X:$src1), (i8 imm:$src2))),
|
def : Pat<(v2i64 (X86vrotli (v2i64 VR128X:$src1), (i8 imm:$src2))),
|
||||||
|
|
@ -5475,26 +5475,26 @@ let Predicates = [HasAVX512, NoVLX] in {
|
||||||
(EXTRACT_SUBREG (v8i64
|
(EXTRACT_SUBREG (v8i64
|
||||||
(VPRORVQZrr
|
(VPRORVQZrr
|
||||||
(v8i64 (INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src1, sub_xmm)),
|
(v8i64 (INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src1, sub_xmm)),
|
||||||
(INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src2, sub_xmm))),
|
(v8i64 (INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src2, sub_xmm)))),
|
||||||
sub_xmm)>;
|
sub_xmm)>;
|
||||||
def : Pat<(v4i64 (rotr (v4i64 VR256X:$src1), (v4i64 VR256X:$src2))),
|
def : Pat<(v4i64 (rotr (v4i64 VR256X:$src1), (v4i64 VR256X:$src2))),
|
||||||
(EXTRACT_SUBREG (v8i64
|
(EXTRACT_SUBREG (v8i64
|
||||||
(VPRORVQZrr
|
(VPRORVQZrr
|
||||||
(v8i64 (INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src1, sub_ymm)),
|
(v8i64 (INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src1, sub_ymm)),
|
||||||
(INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src2, sub_ymm))),
|
(v8i64 (INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src2, sub_ymm)))),
|
||||||
sub_ymm)>;
|
sub_ymm)>;
|
||||||
|
|
||||||
def : Pat<(v4i32 (rotr (v4i32 VR128X:$src1), (v4i32 VR128X:$src2))),
|
def : Pat<(v4i32 (rotr (v4i32 VR128X:$src1), (v4i32 VR128X:$src2))),
|
||||||
(EXTRACT_SUBREG (v16i32
|
(EXTRACT_SUBREG (v16i32
|
||||||
(VPRORVDZrr
|
(VPRORVDZrr
|
||||||
(v16i32 (INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src1, sub_xmm)),
|
(v16i32 (INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src1, sub_xmm)),
|
||||||
(INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src2, sub_xmm))),
|
(v16i32 (INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src2, sub_xmm)))),
|
||||||
sub_xmm)>;
|
sub_xmm)>;
|
||||||
def : Pat<(v8i32 (rotr (v8i32 VR256X:$src1), (v8i32 VR256X:$src2))),
|
def : Pat<(v8i32 (rotr (v8i32 VR256X:$src1), (v8i32 VR256X:$src2))),
|
||||||
(EXTRACT_SUBREG (v16i32
|
(EXTRACT_SUBREG (v16i32
|
||||||
(VPRORVDZrr
|
(VPRORVDZrr
|
||||||
(v16i32 (INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src1, sub_ymm)),
|
(v16i32 (INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src1, sub_ymm)),
|
||||||
(INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src2, sub_ymm))),
|
(v16i32 (INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src2, sub_ymm)))),
|
||||||
sub_ymm)>;
|
sub_ymm)>;
|
||||||
|
|
||||||
def : Pat<(v2i64 (X86vrotri (v2i64 VR128X:$src1), (i8 imm:$src2))),
|
def : Pat<(v2i64 (X86vrotri (v2i64 VR128X:$src1), (i8 imm:$src2))),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue