@@ -114,12 +114,12 @@ def icmp_sgt: IRBuilder<"CreateICmpSGT">;
114114def icmp_sge: IRBuilder<"CreateICmpSGE">;
115115def icmp_slt: IRBuilder<"CreateICmpSLT">;
116116def icmp_sle: IRBuilder<"CreateICmpSLE">;
117- def fcmp_eq : IRBuilder<"CreateFCmpOEQ">;
118- def fcmp_ne : IRBuilder<"CreateFCmpUNE">; // not O: it must return true on NaNs
119- def fcmp_gt : IRBuilder<"CreateFCmpOGT">;
120- def fcmp_ge : IRBuilder<"CreateFCmpOGE">;
121- def fcmp_ult : IRBuilder<"CreateFCmpULT">;
122- def fcmp_ule : IRBuilder<"CreateFCmpULE">;
117+ def fcmp_eq_node : IRBuilder<"CreateFCmpOEQ">;
118+ def fcmp_ne_node : IRBuilder<"CreateFCmpUNE">; // not O: it must return true on NaNs
119+ def fcmp_gt_node : IRBuilder<"CreateFCmpOGT">;
120+ def fcmp_ge_node : IRBuilder<"CreateFCmpOGE">;
121+ def fcmp_ult_node : IRBuilder<"CreateFCmpULT">;
122+ def fcmp_ule_node : IRBuilder<"CreateFCmpULE">;
123123def splat: CGHelperFn<"ARMMVEVectorSplat">;
124124def select: IRBuilder<"CreateSelect">;
125125def fneg: IRBuilder<"CreateFNeg">;
@@ -589,6 +589,18 @@ def fsub: strictFPAlt<fsub_node,
589589 IRInt<"vsub", [Vector]>>;
590590def fmul: strictFPAlt<fmul_node,
591591 IRInt<"vmul", [Vector]>>;
592+ def fcmp_eq : strictFPAlt<fcmp_eq_node,
593+ IRInt<"cmp_eq", [Predicate, Vector]>>;
594+ def fcmp_ne : strictFPAlt<fcmp_ne_node,
595+ IRInt<"cmp_ne", [Predicate, Vector]>>;
596+ def fcmp_gt : strictFPAlt<fcmp_gt_node,
597+ IRInt<"cmp_gt", [Predicate, Vector]>>;
598+ def fcmp_ge : strictFPAlt<fcmp_ge_node,
599+ IRInt<"cmp_ge", [Predicate, Vector]>>;
600+ def fcmp_ult : strictFPAlt<fcmp_ult_node,
601+ IRInt<"cmp_lt", [Predicate, Vector]>>;
602+ def fcmp_ule : strictFPAlt<fcmp_ule_node,
603+ IRInt<"cmp_le", [Predicate, Vector]>>;
592604
593605// -----------------------------------------------------------------------------
594606// Convenience lists of parameter types. 'T' is just a container record, so you
0 commit comments