Я пытаюсь использовать llvm :: IRBuilder Create Add / Sub / Mul / Div. Но есть много apis в https://llvm.org/doxygen/classllvm_1_1IRBuilder.html#a4ef70bab263e38c5e0b8c1bf95a5d814:
Value * CreateAdd (Value *LHS, Value *RHS, const Twine &Name="", bool HasNUW=false, bool HasNSW=false);
Value * CreateNSWAdd (Value *LHS, Value *RHS, const Twine &Name="");
Value * CreateNUWAdd (Value *LHS, Value *RHS, const Twine &Name="");
Value * CreateSub (Value *LHS, Value *RHS, const Twine &Name="", bool HasNUW=false, bool HasNSW=false);
Value * CreateNSWSub (Value *LHS, Value *RHS, const Twine &Name="");
Value * CreateNUWSub (Value *LHS, Value *RHS, const Twine &Name="");
Value * CreateMul (Value *LHS, Value *RHS, const Twine &Name="", bool HasNUW=false, bool HasNSW=false);
Value * CreateNSWMul (Value *LHS, Value *RHS, const Twine &Name="");
Value * CreateNUWMul (Value *LHS, Value *RHS, const Twine &Name="");
Value * CreateUDiv (Value *LHS, Value *RHS, const Twine &Name="", bool isExact=false);
Value * CreateExactUDiv (Value *LHS, Value *RHS, const Twine &Name="");
Value * CreateSDiv (Value *LHS, Value *RHS, const Twine &Name="", bool isExact=false);
Value * CreateExactSDiv (Value *LHS, Value *RHS, const Twine &Name="");
Какой из них мне следует использовать, когда я хочу генерировать операции Add / Sub / Mul / Div?