Similar to D127536, if any of the operands for FCmpOp is a vector, returns a vector<Nxi1> rather than an i1 type result.
I just checked LLVM IR and LLVM Dialect's semantic and surprisingly found that neither llvm.icmp nor llvm.fcmp (and their LLVM IR counterparts) do implicit broadcasting: LLVM IR simply says that operands under comparison should have identical types. Let me cleanup the code here.
What I'm more curious is why did the original ICmpOp::build do implicit broadcasting at the first place?
Do not broadcast when the operand types are different
nvm, it was me that first did implicit broadcasting for ICmpOp::build in D127536 for reason I cannot remember now.