v2f64x_info>, EVEX_CD8<64, CD8VT1>, PD, VEX_W;
defm VMOVLPSZ128 : avx512_mov_hilo_packed<0x12, "vmovlps", null_frag,
v4f32x_info>, EVEX_CD8<32, CD8VT2>, PS;
-defm VMOVLPDZ128 : avx512_mov_hilo_packed<0x12, "vmovlpd", null_frag,
+defm VMOVLPDZ128 : avx512_mov_hilo_packed<0x12, "vmovlpd", X86Movsd,
v2f64x_info>, EVEX_CD8<64, CD8VT1>, PD, VEX_W;
let Predicates = [HasAVX512] in {
def : Pat<(v2f64 (X86Unpckl VR128X:$src1,
(bc_v2f64 (v2i64 (scalar_to_vector (loadi64 addr:$src2)))))),
(VMOVHPDZ128rm VR128X:$src1, addr:$src2)>;
- // VMOVLPD patterns
- def : Pat<(v2f64 (X86Movsd VR128X:$src1,
- (v2f64 (scalar_to_vector (loadf64 addr:$src2))))),
- (VMOVLPDZ128rm VR128X:$src1, addr:$src2)>;
}
let SchedRW = [WriteFStore] in {
"\t{$src2, $dst|$dst, $src2}">;
}
-defm MOVL : sse12_mov_hilo_packed<0x12, null_frag, null_frag, "movlp">;
+defm MOVL : sse12_mov_hilo_packed<0x12, null_frag, X86Movsd, "movlp">;
let SchedRW = [WriteFStore] in {
let Predicates = [UseAVX] in {
(iPTR 0))), addr:$dst)]>;
} // SchedRW
-let Predicates = [UseAVX] in {
- // Shuffle with VMOVLPD
- def : Pat<(v2f64 (X86Movsd VR128:$src1,
- (v2f64 (scalar_to_vector (loadf64 addr:$src2))))),
- (VMOVLPDrm VR128:$src1, addr:$src2)>;
-}
-
let Predicates = [UseSSE1] in {
// (store (vector_shuffle (load addr), v2, <4, 5, 2, 3>), addr) using MOVLPS
def : Pat<(store (i64 (extractelt (bc_v2i64 (v4f32 VR128:$src2)),
(MOVLPSmr addr:$src1, VR128:$src2)>;
}
-let Predicates = [UseSSE2] in {
- // Shuffle with MOVLPD
- def : Pat<(v2f64 (X86Movsd VR128:$src1,
- (v2f64 (scalar_to_vector (loadf64 addr:$src2))))),
- (MOVLPDrm VR128:$src1, addr:$src2)>;
-}
-
//===----------------------------------------------------------------------===//
// SSE 1 & 2 - Move Hi packed FP Instructions
//===----------------------------------------------------------------------===//