mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
[InstrTypes] add frem and fneg with FMF creators
The more popular opcodes were added at r325730, but we should have everything here for symmetry. I think both of these can be used in InstCombine already, but I'll make those changes as separate clean-ups for InstCombine. llvm-svn: 325832
This commit is contained in:
parent
6f2ba4ab76
commit
63a3e71c12
@ -25,6 +25,7 @@
|
|||||||
#include "llvm/ADT/Twine.h"
|
#include "llvm/ADT/Twine.h"
|
||||||
#include "llvm/ADT/iterator_range.h"
|
#include "llvm/ADT/iterator_range.h"
|
||||||
#include "llvm/IR/Attributes.h"
|
#include "llvm/IR/Attributes.h"
|
||||||
|
#include "llvm/IR/Constants.h"
|
||||||
#include "llvm/IR/DerivedTypes.h"
|
#include "llvm/IR/DerivedTypes.h"
|
||||||
#include "llvm/IR/Instruction.h"
|
#include "llvm/IR/Instruction.h"
|
||||||
#include "llvm/IR/LLVMContext.h"
|
#include "llvm/IR/LLVMContext.h"
|
||||||
@ -411,6 +412,16 @@ public:
|
|||||||
const Twine &Name = "") {
|
const Twine &Name = "") {
|
||||||
return CreateWithCopiedFlags(Instruction::FDiv, V1, V2, FMFSource, Name);
|
return CreateWithCopiedFlags(Instruction::FDiv, V1, V2, FMFSource, Name);
|
||||||
}
|
}
|
||||||
|
static BinaryOperator *CreateFRemFMF(Value *V1, Value *V2,
|
||||||
|
BinaryOperator *FMFSource,
|
||||||
|
const Twine &Name = "") {
|
||||||
|
return CreateWithCopiedFlags(Instruction::FRem, V1, V2, FMFSource, Name);
|
||||||
|
}
|
||||||
|
static BinaryOperator *CreateFNegFMF(Value *Op, BinaryOperator *FMFSource,
|
||||||
|
const Twine &Name = "") {
|
||||||
|
Value *Zero = ConstantFP::getNegativeZero(Op->getType());
|
||||||
|
return CreateWithCopiedFlags(Instruction::FSub, Zero, Op, FMFSource);
|
||||||
|
}
|
||||||
|
|
||||||
static BinaryOperator *CreateNSW(BinaryOps Opc, Value *V1, Value *V2,
|
static BinaryOperator *CreateNSW(BinaryOps Opc, Value *V1, Value *V2,
|
||||||
const Twine &Name = "") {
|
const Twine &Name = "") {
|
||||||
|
Loading…
Reference in New Issue
Block a user