[X86] Fix some VCVTPS2PH isel patterns where 'i32' was used instead of 'timm'

This seems to have completed omitted any check for the opcode
of the operand in the isel table.

llvm-svn: 372526
This commit is contained in:
Craig Topper 2019-09-22 20:08:57 +00:00
parent 80fda375b2
commit c4802de31b
2 changed files with 14 additions and 14 deletions

View File

@ -8667,17 +8667,17 @@ let Predicates = [HasAVX512] in {
}
def : Pat<(store (f64 (extractelt
(bc_v2f64 (v8i16 (X86cvtps2ph VR128X:$src1, i32:$src2))),
(bc_v2f64 (v8i16 (X86cvtps2ph VR128X:$src1, timm:$src2))),
(iPTR 0))), addr:$dst),
(VCVTPS2PHZ128mr addr:$dst, VR128X:$src1, imm:$src2)>;
(VCVTPS2PHZ128mr addr:$dst, VR128X:$src1, timm:$src2)>;
def : Pat<(store (i64 (extractelt
(bc_v2i64 (v8i16 (X86cvtps2ph VR128X:$src1, i32:$src2))),
(bc_v2i64 (v8i16 (X86cvtps2ph VR128X:$src1, timm:$src2))),
(iPTR 0))), addr:$dst),
(VCVTPS2PHZ128mr addr:$dst, VR128X:$src1, imm:$src2)>;
def : Pat<(store (v8i16 (X86cvtps2ph VR256X:$src1, i32:$src2)), addr:$dst),
(VCVTPS2PHZ256mr addr:$dst, VR256X:$src1, imm:$src2)>;
def : Pat<(store (v16i16 (X86cvtps2ph VR512:$src1, i32:$src2)), addr:$dst),
(VCVTPS2PHZmr addr:$dst, VR512:$src1, imm:$src2)>;
(VCVTPS2PHZ128mr addr:$dst, VR128X:$src1, timm:$src2)>;
def : Pat<(store (v8i16 (X86cvtps2ph VR256X:$src1, timm:$src2)), addr:$dst),
(VCVTPS2PHZ256mr addr:$dst, VR256X:$src1, timm:$src2)>;
def : Pat<(store (v16i16 (X86cvtps2ph VR512:$src1, timm:$src2)), addr:$dst),
(VCVTPS2PHZmr addr:$dst, VR512:$src1, timm:$src2)>;
}
// Patterns for matching conversions from float to half-float and vice versa.

View File

@ -7281,15 +7281,15 @@ let Predicates = [HasF16C, NoVLX] in {
(VCVTPH2PSrm addr:$src)>;
def : Pat<(store (f64 (extractelt
(bc_v2f64 (v8i16 (X86cvtps2ph VR128:$src1, i32:$src2))),
(bc_v2f64 (v8i16 (X86cvtps2ph VR128:$src1, timm:$src2))),
(iPTR 0))), addr:$dst),
(VCVTPS2PHmr addr:$dst, VR128:$src1, imm:$src2)>;
(VCVTPS2PHmr addr:$dst, VR128:$src1, timm:$src2)>;
def : Pat<(store (i64 (extractelt
(bc_v2i64 (v8i16 (X86cvtps2ph VR128:$src1, i32:$src2))),
(bc_v2i64 (v8i16 (X86cvtps2ph VR128:$src1, timm:$src2))),
(iPTR 0))), addr:$dst),
(VCVTPS2PHmr addr:$dst, VR128:$src1, imm:$src2)>;
def : Pat<(store (v8i16 (X86cvtps2ph VR256:$src1, i32:$src2)), addr:$dst),
(VCVTPS2PHYmr addr:$dst, VR256:$src1, imm:$src2)>;
(VCVTPS2PHmr addr:$dst, VR128:$src1, timm:$src2)>;
def : Pat<(store (v8i16 (X86cvtps2ph VR256:$src1, timm:$src2)), addr:$dst),
(VCVTPS2PHYmr addr:$dst, VR256:$src1, timm:$src2)>;
}
// Patterns for matching conversions from float to half-float and vice versa.