LLVM
4.0.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
llvm.src
include
llvm
Transforms
Utils
BypassSlowDivision.h
Go to the documentation of this file.
1
//===- llvm/Transforms/Utils/BypassSlowDivision.h --------------*- C++ -*-===//
2
//
3
// The LLVM Compiler Infrastructure
4
//
5
// This file is distributed under the University of Illinois Open Source
6
// License. See LICENSE.TXT for details.
7
//
8
//===----------------------------------------------------------------------===//
9
//
10
// This file contains an optimization for div and rem on architectures that
11
// execute short instructions significantly faster than longer instructions.
12
// For example, on Intel Atom 32-bit divides are slow enough that during
13
// runtime it is profitable to check the value of the operands, and if they are
14
// positive and less than 256 use an unsigned 8-bit divide.
15
//
16
//===----------------------------------------------------------------------===//
17
18
#ifndef LLVM_TRANSFORMS_UTILS_BYPASSSLOWDIVISION_H
19
#define LLVM_TRANSFORMS_UTILS_BYPASSSLOWDIVISION_H
20
21
#include "
llvm/ADT/DenseMap.h
"
22
#include "
llvm/IR/Function.h
"
23
24
namespace
llvm {
25
26
/// This optimization identifies DIV instructions in a BB that can be
27
/// profitably bypassed and carried out with a shorter, faster divide.
28
///
29
/// This optimization may add basic blocks immediately after BB; for obvious
30
/// reasons, you shouldn't pass those blocks to bypassSlowDivision.
31
bool
bypassSlowDivision
(
32
BasicBlock
*BB,
const
DenseMap<unsigned int, unsigned int> &BypassWidth);
33
34
}
// End llvm namespace
35
36
#endif
llvm::ISD::BasicBlock
Various leaf nodes.
Definition:
ISDOpcodes.h:60
llvm::bypassSlowDivision
bool bypassSlowDivision(BasicBlock *BB, const DenseMap< unsigned int, unsigned int > &BypassWidth)
This optimization identifies DIV instructions in a BB that can be profitably bypassed and carried out...
Definition:
BypassSlowDivision.cpp:222
DenseMap.h
Function.h
Generated on Wed Mar 8 2017 17:06:50 for LLVM by
1.8.6