7 #ifndef RETDEC_BIN2LLVMIR_OPTIMIZATIONS_IDIOMS_IDIOMS_MAGICDIVMOD_H
8 #define RETDEC_BIN2LLVMIR_OPTIMIZATIONS_IDIOMS_IDIOMS_MAGICDIVMOD_H
34 llvm::Instruction *
magicSignedDiv7(llvm::BasicBlock::iterator iter,
bool negative)
const;
35 llvm::Instruction *
magicSignedDiv8(llvm::BasicBlock::iterator iter,
bool negative)
const;
39 llvm::Instruction *
magicSignedDiv1(llvm::BasicBlock::iterator iter)
const;
40 llvm::Instruction *
magicSignedDiv2(llvm::BasicBlock::iterator iter)
const;
41 llvm::Instruction *
magicSignedDiv3(llvm::BasicBlock::iterator iter)
const;
42 llvm::Instruction *
magicSignedDiv4(llvm::BasicBlock::iterator iter)
const;
43 llvm::Instruction *
magicSignedDiv5(llvm::BasicBlock::iterator iter)
const;
44 llvm::Instruction *
magicSignedDiv6(llvm::BasicBlock::iterator iter)
const;
50 llvm::Instruction *
signedMod1(llvm::BasicBlock::iterator iter)
const;
51 llvm::Instruction *
signedMod2(llvm::BasicBlock::iterator iter)
const;
52 llvm::Instruction *
unsignedMod(llvm::BasicBlock::iterator iter)
const;
Instruction idiom analysis abstract class.
Definition: idioms_abstract.h:22
Definition: idioms_analysis.h:41
Division and modulo using magic number.
Definition: idioms_magicdivmod.h:23
static unsigned divisorByMagicNumberUnsigned(unsigned magic_number, unsigned sh_pre, unsigned sh_post)
Definition: idioms_magicdivmod.cpp:25
static unsigned divisorByMagicNumberSigned4(unsigned magic_number, unsigned shift)
Definition: idioms_magicdivmod.cpp:164
static unsigned divisorByMagicNumberUnsigned2(unsigned magic_number, unsigned sh_post)
Definition: idioms_magicdivmod.cpp:66
llvm::Instruction * magicSignedDiv3(llvm::BasicBlock::iterator iter) const
Definition: idioms_magicdivmod.cpp:595
llvm::Instruction * magicSignedDiv8pos(llvm::BasicBlock::iterator iter) const
Definition: idioms_magicdivmod.cpp:1440
llvm::Instruction * magicUnsignedDiv2(llvm::BasicBlock::iterator iter) const
Definition: idioms_magicdivmod.cpp:264
llvm::Instruction * signedMod2(llvm::BasicBlock::iterator iter) const
Definition: idioms_magicdivmod.cpp:1595
llvm::Instruction * magicSignedDiv2(llvm::BasicBlock::iterator iter) const
Definition: idioms_magicdivmod.cpp:493
llvm::Instruction * magicSignedDiv8neg(llvm::BasicBlock::iterator iter) const
Definition: idioms_magicdivmod.cpp:1456
static int divisorByMagicNumberSigned(int magic_number, unsigned sh_post)
Definition: idioms_magicdivmod.cpp:105
llvm::Instruction * magicUnsignedDiv1(llvm::BasicBlock::iterator iter) const
Definition: idioms_magicdivmod.cpp:187
llvm::Instruction * magicSignedDiv7pos(llvm::BasicBlock::iterator iter) const
Definition: idioms_magicdivmod.cpp:1284
static int divisorByMagicNumberSigned2(int magic_number, unsigned sh_post)
Definition: idioms_magicdivmod.cpp:123
llvm::Instruction * magicSignedDiv1(llvm::BasicBlock::iterator iter) const
Definition: idioms_magicdivmod.cpp:386
llvm::Instruction * magicSignedDiv5(llvm::BasicBlock::iterator iter) const
Definition: idioms_magicdivmod.cpp:810
llvm::Instruction * signedMod1(llvm::BasicBlock::iterator iter) const
Definition: idioms_magicdivmod.cpp:1474
llvm::Instruction * magicSignedDiv7(llvm::BasicBlock::iterator iter, bool negative) const
Definition: idioms_magicdivmod.cpp:994
llvm::Instruction * magicSignedDiv8(llvm::BasicBlock::iterator iter, bool negative) const
Definition: idioms_magicdivmod.cpp:1321
llvm::Instruction * magicSignedDiv4(llvm::BasicBlock::iterator iter) const
Definition: idioms_magicdivmod.cpp:700
static unsigned divisorByMagicNumberSigned3(unsigned magic_number, unsigned shift)
Definition: idioms_magicdivmod.cpp:142
llvm::Instruction * magicSignedDiv7neg(llvm::BasicBlock::iterator iter) const
Definition: idioms_magicdivmod.cpp:1300
llvm::Instruction * unsignedMod(llvm::BasicBlock::iterator iter) const
Definition: idioms_magicdivmod.cpp:1712
llvm::Instruction * magicSignedDiv6(llvm::BasicBlock::iterator iter) const
Definition: idioms_magicdivmod.cpp:903
Instruction idioms analysis abstract class.
The frontend-end part of the decompiler.
Definition: archive_wrapper.h:19