I'm trying to use llvm::IRBuilder Create Add/Sub/Mul/Div operations. But there're many apis in 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="");
Which one should I use when I want to generate Add/Sub/Mul/Div operations?
