LLVM 22.0.0git
llvm::SignedDivisionByConstantInfo Struct Reference

Magic data for optimising signed division by a constant. More...

#include "llvm/Support/DivisionByConstantInfo.h"

Static Public Member Functions

static LLVM_ABI SignedDivisionByConstantInfo get (const APInt &D)
 Calculate the magic numbers required to implement a signed integer division by a constant as a sequence of multiplies, adds and shifts.

Public Attributes

APInt Magic
 magic number
unsigned ShiftAmount
 shift amount

Detailed Description

Magic data for optimising signed division by a constant.

Definition at line 22 of file DivisionByConstantInfo.h.

Member Function Documentation

◆ get()

SignedDivisionByConstantInfo SignedDivisionByConstantInfo::get ( const APInt & D)
static

Calculate the magic numbers required to implement a signed integer division by a constant as a sequence of multiplies, adds and shifts.

Requires that the divisor not be 0, 1, or -1. Taken from "Hacker's Delight", Henry S. Warren, Jr., Chapter 10.

Definition at line 21 of file DivisionByConstantInfo.cpp.

References assert(), D(), llvm::APInt::getSignedMinValue(), llvm::APInt::isZero(), Magic, llvm::APInt::negate(), P, R2, ShiftAmount, T, llvm::APInt::udivrem(), llvm::APInt::uge(), and llvm::APInt::ult().

Referenced by llvm::TargetLowering::BuildSDIV(), and llvm::CombinerHelper::buildSDivOrSRemUsingMul().

Member Data Documentation

◆ Magic

APInt llvm::SignedDivisionByConstantInfo::Magic

◆ ShiftAmount

unsigned llvm::SignedDivisionByConstantInfo::ShiftAmount

The documentation for this struct was generated from the following files: