[(set VR128X:$dst, (v4f32 (X86Movhlps VR128X:$src1, VR128X:$src2)))],
IIC_SSE_MOV_LH>, EVEX_4V;
-let Predicates = [HasAVX512] in {
- // MOVLHPS patterns
- def : Pat<(v4i32 (X86Movlhps VR128X:$src1, VR128X:$src2)),
- (VMOVLHPSZrr VR128X:$src1, VR128X:$src2)>;
- def : Pat<(v2i64 (X86Movlhps VR128X:$src1, VR128X:$src2)),
- (VMOVLHPSZrr (v2i64 VR128X:$src1), VR128X:$src2)>;
-
- // MOVHLPS patterns
- def : Pat<(v4i32 (X86Movhlps VR128X:$src1, VR128X:$src2)),
- (VMOVHLPSZrr VR128X:$src1, VR128X:$src2)>;
-}
-
//===----------------------------------------------------------------------===//
// VMOVHPS/PD VMOVLPS Instructions
// All patterns was taken from SSS implementation.
IIC_SSE_MOV_LH>, Sched<[WriteFShuffle]>;
}
-let Predicates = [UseAVX] in {
- // MOVLHPS patterns
- def : Pat<(v4i32 (X86Movlhps VR128:$src1, VR128:$src2)),
- (VMOVLHPSrr VR128:$src1, VR128:$src2)>;
- def : Pat<(v2i64 (X86Movlhps VR128:$src1, VR128:$src2)),
- (VMOVLHPSrr (v2i64 VR128:$src1), VR128:$src2)>;
-
- // MOVHLPS patterns
- def : Pat<(v4i32 (X86Movhlps VR128:$src1, VR128:$src2)),
- (VMOVHLPSrr VR128:$src1, VR128:$src2)>;
-}
-
-let Predicates = [UseSSE1] in {
- // MOVLHPS patterns
- def : Pat<(v4i32 (X86Movlhps VR128:$src1, VR128:$src2)),
- (MOVLHPSrr VR128:$src1, VR128:$src2)>;
- def : Pat<(v2i64 (X86Movlhps VR128:$src1, VR128:$src2)),
- (MOVLHPSrr (v2i64 VR128:$src1), VR128:$src2)>;
-
- // MOVHLPS patterns
- def : Pat<(v4i32 (X86Movhlps VR128:$src1, VR128:$src2)),
- (MOVHLPSrr VR128:$src1, VR128:$src2)>;
-}
-
//===----------------------------------------------------------------------===//
// SSE 1 & 2 - Conversion Instructions
//===----------------------------------------------------------------------===//