VBROADCAST Implementation Issues

Thank You. Still getting errors.I have modified my instructions as you said as follows:

def GATHER_256B : I<0x68, MRMSrcMem, (outs VR_2048:$dst, VK64WM:$mask_wb), (ins VR_2048:$src1, VK64WM:$mask, i2048mem:$src2),
“GATHER_256B\t{$src2, {$dst} {${mask}}|${dst} {${mask}}, $src2}”,
[(set VR_2048:$dst, VK64WM:$mask_wb, (v64i32
(masked_gather (VR_2048:$src1), VK64WM:$mask,
addr:$src2)))],
IIC_MOV_MEM>, TA;

def: Pat<(v64f32 (masked_gather (VR_2048:$src1), (VK64WM:$mask),(addr:$src2))), (GATHER_256B VR_2048:$src1, VK64WM:$mask, addr:$src2)>;

Now getting this error:

llvm-tblgen: /utils/TableGen/X86RecognizableInstr.cpp:687: void llvm::X86Disassembler::RecognizableInstr::emitInstructionSpecifier(): Assertion `numPhysicalOperands >= 2 + additionalOperands && numPhysicalOperands <= 4 + additionalOperands && “Unexpected number of operands for MRMSrcMemFrm”’ failed.

You need this line from AVX512 code to tell the register allocation system that $src1/$dst and $mask/$mask_wb to use the same register. And the early clobber tells it that $dst and $src2 cannot use the same register.

let Constraints = “@earlyclobber $dst, $src1 = $dst, $mask = $mask_wb”

Where to add this line?
Sorry I didnt understand it.

Now getting this error:
/lib/Target/X86/X86InstrInfo.td:3318:1: error: In GATHER_256B: Unrecognized node ‘VR_2048’!