Index: llvm/trunk/lib/Target/X86/X86InstrAVX512.td =================================================================== --- llvm/trunk/lib/Target/X86/X86InstrAVX512.td +++ llvm/trunk/lib/Target/X86/X86InstrAVX512.td @@ -1414,7 +1414,7 @@ let mayLoad = 1 in defm rm_Int : AVX512_maskable_cmp<0xC2, MRMSrcMem, _, (outs _.KRC:$dst), - (ins _.RC:$src1, _.MemOp:$src2, AVXCC:$cc), + (ins _.RC:$src1, _.ScalarMemOp:$src2, AVXCC:$cc), "vcmp${cc}"#_.Suffix, "$src2, $src1", "$src1, $src2", (OpNode (_.VT _.RC:$src1), @@ -1439,7 +1439,7 @@ "$cc, $src2, $src1", "$src1, $src2, $cc">, EVEX_4V; defm rmi_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcMem, _, (outs _.KRC:$dst), - (ins _.RC:$src1, _.MemOp:$src2, u8imm:$cc), + (ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$cc), "vcmp"#_.Suffix, "$cc, $src2, $src1", "$src1, $src2, $cc">, EVEX_4V, EVEX_CD8<_.EltSize, CD8VT1>; @@ -3616,7 +3616,7 @@ itins.rr, IsCommutable>; defm rm_Int : AVX512_maskable_scalar; let mayLoad = 1 in { defm rm: AVX512_maskable_scalar; + (OpNode _.RC:$src1, + (_.VT (scalar_to_vector (_.ScalarLdFrag addr:$src2))), + (i32 FROUND_CURRENT))>; }//let mayLoad = 1 } @@ -4691,7 +4693,7 @@ let mayLoad = 1 in defm m_Int: AVX512_maskable_3src_scalar, AVX512FMA3Base; defm rb_Int: AVX512_maskable_3src_scalar, EVEX, EVEX_B; - def rm : SI, EVEX; @@ -5109,7 +5111,7 @@ (_Src.VT _Src.RC:$src2)))>, EVEX_4V, VEX_LIG, Sched<[WriteCvtF2F]>; defm rm : AVX512_maskable_scalar, EVEX; defm rmb : AVX512_maskable, EVEX_4V; let mayLoad = 1 in { defm rm : AVX512_maskable_scalar, EVEX_4V; @@ -5819,7 +5821,7 @@ (i32 FROUND_NO_EXC))>, EVEX_B; defm m : AVX512_maskable_scalar; defm mb : AVX512_maskable; let mayLoad = 1 in defm m_Int : AVX512_maskable_scalar