pengfei added inline comments.

================
Comment at: llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp:3902
+  case X86::VFCMADDCSHZr:
+  case X86::VFCMADDCSHZrb:
+  case X86::VFCMADDCSHZrbk:
----------------
LuoYuanke wrote:
> "b" means rounding. Right?
broadcasting


================
Comment at: llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp:3948
+    for (unsigned i = 2; i < Inst.getNumOperands(); i++)
+      if (Inst.getOperand(i).isReg() && Dest == Inst.getOperand(i).getReg())
+        return Warning(Ops[0]->getStartLoc(), "Destination register should be "
----------------
LuoYuanke wrote:
> Sorry, I didn't find the constrain in the spec.
#UD if (dest_reg == src1_reg) or ( dest_reg == src2_reg)


================
Comment at: llvm/lib/Target/X86/X86InstrAVX512.td:13640
+                        (v4f32 (OpNode VR128X:$src1, VR128X:$src2)),
+                        0, 0, 0, X86selects, "@earlyclobber $dst">, 
Sched<[sched.XMM]>;
+    defm rm : AVX512_maskable<opc, MRMSrcMem, f32x_info, (outs VR128X:$dst),
----------------
LuoYuanke wrote:
> I didn't see this flag for other scalar instructions, why we need it for 
> complex instruction?
Because all complex instructions have constrains "dst != src1 && dst != src2". 
We use earlyclobber to avoid the dst been assigned to src1 or src2.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D105269/new/

https://reviews.llvm.org/D105269

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to