mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
foo
llvm-svn: 336950
This commit is contained in:
parent
6000ce8df0
commit
7b54eaa179
@ -11484,13 +11484,13 @@ multiclass AVX512_scalar_math_fp_patterns<SDNode Op, string OpcPrefix, SDNode Mo
|
||||
def : Pat<(_.VT (MoveNode (_.VT VR128X:$dst), (_.VT (scalar_to_vector
|
||||
(Op (_.EltVT (extractelt (_.VT VR128X:$dst), (iPTR 0))),
|
||||
_.FRC:$src))))),
|
||||
(!cast<I>("V"#OpcPrefix#Zrr_Int) _.VT:$dst,
|
||||
(!cast<Instruction>("V"#OpcPrefix#Zrr_Int) _.VT:$dst,
|
||||
(COPY_TO_REGCLASS _.FRC:$src, VR128X))>;
|
||||
|
||||
// vector math op with insert via movss
|
||||
def : Pat<(_.VT (MoveNode (_.VT VR128X:$dst),
|
||||
(Op (_.VT VR128X:$dst), (_.VT VR128X:$src)))),
|
||||
(!cast<I>("V"#OpcPrefix#Zrr_Int) _.VT:$dst, _.VT:$src)>;
|
||||
(!cast<Instruction>("V"#OpcPrefix#Zrr_Int) _.VT:$dst, _.VT:$src)>;
|
||||
|
||||
// extracted masked scalar math op with insert via movss
|
||||
def : Pat<(MoveNode (_.VT VR128X:$src1),
|
||||
@ -11499,17 +11499,17 @@ multiclass AVX512_scalar_math_fp_patterns<SDNode Op, string OpcPrefix, SDNode Mo
|
||||
(Op (_.EltVT (extractelt (_.VT VR128X:$src1), (iPTR 0))),
|
||||
_.FRC:$src2),
|
||||
_.FRC:$src0))),
|
||||
(!cast<I>("V"#OpcPrefix#Zrr_Intk) (COPY_TO_REGCLASS _.FRC:$src0, VR128X),
|
||||
(!cast<Instruction>("V"#OpcPrefix#Zrr_Intk) (COPY_TO_REGCLASS _.FRC:$src0, VR128X),
|
||||
VK1WM:$mask, _.VT:$src1,
|
||||
(COPY_TO_REGCLASS _.FRC:$src2, VR128X))>;
|
||||
|
||||
|
||||
// extracted masked scalar math op with insert via movss
|
||||
def : Pat<(MoveNode (_.VT VR128X:$src1),
|
||||
(scalar_to_vector
|
||||
(X86selects VK1WM:$mask,
|
||||
(Op (_.EltVT (extractelt (_.VT VR128X:$src1), (iPTR 0))),
|
||||
_.FRC:$src2), (_.EltVT ZeroFP)))),
|
||||
(!cast<I>("V"#OpcPrefix#Zrr_Intkz)
|
||||
(!cast<Instruction>("V"#OpcPrefix#Zrr_Intkz)
|
||||
VK1WM:$mask, _.VT:$src1,
|
||||
(COPY_TO_REGCLASS _.FRC:$src2, VR128X))>;
|
||||
}
|
||||
|
@ -2647,13 +2647,13 @@ multiclass scalar_math_patterns<SDNode Op, string OpcPrefix, SDNode Move,
|
||||
def : Pat<(VT (Move (VT VR128:$dst), (VT (scalar_to_vector
|
||||
(Op (EltTy (extractelt (VT VR128:$dst), (iPTR 0))),
|
||||
RC:$src))))),
|
||||
(!cast<I>(OpcPrefix#rr_Int) VT:$dst,
|
||||
(!cast<Instruction>(OpcPrefix#rr_Int) VT:$dst,
|
||||
(COPY_TO_REGCLASS RC:$src, VR128))>;
|
||||
|
||||
// vector math op with insert via movss/movsd
|
||||
def : Pat<(VT (Move (VT VR128:$dst),
|
||||
(Op (VT VR128:$dst), (VT VR128:$src)))),
|
||||
(!cast<I>(OpcPrefix#rr_Int) VT:$dst, VT:$src)>;
|
||||
(!cast<Instruction>(OpcPrefix#rr_Int) VT:$dst, VT:$src)>;
|
||||
}
|
||||
|
||||
// Repeat for AVX versions of the instructions.
|
||||
@ -2662,13 +2662,13 @@ multiclass scalar_math_patterns<SDNode Op, string OpcPrefix, SDNode Move,
|
||||
def : Pat<(VT (Move (VT VR128:$dst), (VT (scalar_to_vector
|
||||
(Op (EltTy (extractelt (VT VR128:$dst), (iPTR 0))),
|
||||
RC:$src))))),
|
||||
(!cast<I>("V"#OpcPrefix#rr_Int) VT:$dst,
|
||||
(!cast<Instruction>("V"#OpcPrefix#rr_Int) VT:$dst,
|
||||
(COPY_TO_REGCLASS RC:$src, VR128))>;
|
||||
|
||||
// vector math op with insert via movss/movsd
|
||||
def : Pat<(VT (Move (VT VR128:$dst),
|
||||
(Op (VT VR128:$dst), (VT VR128:$src)))),
|
||||
(!cast<I>("V"#OpcPrefix#rr_Int) VT:$dst, VT:$src)>;
|
||||
(!cast<Instruction>("V"#OpcPrefix#rr_Int) VT:$dst, VT:$src)>;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2927,14 +2927,14 @@ multiclass scalar_unary_math_patterns<SDNode OpNode, string OpcPrefix, SDNode Mo
|
||||
let Predicates = [BasePredicate] in {
|
||||
def : Pat<(VT (Move VT:$dst, (scalar_to_vector
|
||||
(OpNode (extractelt VT:$src, 0))))),
|
||||
(!cast<I>(OpcPrefix#r_Int) VT:$dst, VT:$src)>;
|
||||
(!cast<Instruction>(OpcPrefix#r_Int) VT:$dst, VT:$src)>;
|
||||
}
|
||||
|
||||
// Repeat for AVX versions of the instructions.
|
||||
let Predicates = [HasAVX] in {
|
||||
let Predicates = [UseAVX] in {
|
||||
def : Pat<(VT (Move VT:$dst, (scalar_to_vector
|
||||
(OpNode (extractelt VT:$src, 0))))),
|
||||
(!cast<I>("V"#OpcPrefix#r_Int) VT:$dst, VT:$src)>;
|
||||
(!cast<Instruction>("V"#OpcPrefix#r_Int) VT:$dst, VT:$src)>;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2944,14 +2944,14 @@ multiclass scalar_unary_math_imm_patterns<SDNode OpNode, string OpcPrefix, SDNod
|
||||
let Predicates = [BasePredicate] in {
|
||||
def : Pat<(VT (Move VT:$dst, (scalar_to_vector
|
||||
(OpNode (extractelt VT:$src, 0))))),
|
||||
(!cast<Ii8>(OpcPrefix#r_Int) VT:$dst, VT:$src, (i32 ImmV))>;
|
||||
(!cast<Instruction>(OpcPrefix#r_Int) VT:$dst, VT:$src, (i32 ImmV))>;
|
||||
}
|
||||
|
||||
// Repeat for AVX versions of the instructions.
|
||||
let Predicates = [HasAVX] in {
|
||||
let Predicates = [UseAVX] in {
|
||||
def : Pat<(VT (Move VT:$dst, (scalar_to_vector
|
||||
(OpNode (extractelt VT:$src, 0))))),
|
||||
(!cast<Ii8>("V"#OpcPrefix#r_Int) VT:$dst, VT:$src, (i32 ImmV))>;
|
||||
(!cast<Instruction>("V"#OpcPrefix#r_Int) VT:$dst, VT:$src, (i32 ImmV))>;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2963,13 +2963,13 @@ multiclass scalar_unary_math_intr_patterns<Intrinsic Intr, string OpcPrefix,
|
||||
Predicate BasePredicate> {
|
||||
let Predicates = [BasePredicate] in {
|
||||
def : Pat<(VT (Move VT:$dst, (Intr VT:$src))),
|
||||
(!cast<I>(OpcPrefix#r_Int) VT:$dst, VT:$src)>;
|
||||
(!cast<Instruction>(OpcPrefix#r_Int) VT:$dst, VT:$src)>;
|
||||
}
|
||||
|
||||
// Repeat for AVX versions of the instructions.
|
||||
let Predicates = [HasAVX] in {
|
||||
def : Pat<(VT (Move VT:$dst, (Intr VT:$src))),
|
||||
(!cast<I>("V"#OpcPrefix#r_Int) VT:$dst, VT:$src)>;
|
||||
(!cast<Instruction>("V"#OpcPrefix#r_Int) VT:$dst, VT:$src)>;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user