openMSX
Public Types | Static Public Attributes | List of all members
DivModByConstPrivate::Div128_helper< RH, RL, QH, QL, DH, DL, BITS > Struct Template Reference

#include <DivModByConst.hh>

Inheritance diagram for DivModByConstPrivate::Div128_helper< RH, RL, QH, QL, DH, DL, BITS >:
Inheritance graph
[legend]

Public Types

using Div = Div128_helper< RH3, RL3, QH3, QL3, DH, DL, BITS - 1 >
 

Static Public Attributes

static constexpr uint64_t QL2 = (QL << 1)
 
static constexpr uint64_t QH2 = (QH << 1) + (QL2 < QL)
 
static constexpr uint64_t RL2 = (RL << 1) + (QH2 < QH)
 
static constexpr uint64_t RH2 = (RH << 1) + (RL2 < RL)
 
static constexpr bool C = (RH2 != DH) ? (RH2 < DH) : (RL2 < DL)
 
static constexpr uint64_t RL3 = C ? RL2 : RL2 - DL
 
static constexpr uint64_t RH3 = C ? RH2 : RH2 - DH - (RL3 > RL2)
 
static constexpr uint64_t QL3 = C ? QL2 : QL2 + 1
 
static constexpr uint64_t QH3 = C ? QH2 : ((QL3 != 0) ? QH2 : QH2 + 1)
 
static constexpr uint64_t quotientLow = Div::quotientLow
 
static constexpr uint64_t quotientHigh = Div::quotientHigh
 
static constexpr uint64_t remainderLow = Div::remainderLow
 
static constexpr uint64_t remainderHigh = Div::remainderHigh
 

Detailed Description

template<uint64_t RH, uint64_t RL, uint64_t QH, uint64_t QL, uint64_t DH, uint64_t DL, uint32_t BITS>
struct DivModByConstPrivate::Div128_helper< RH, RL, QH, QL, DH, DL, BITS >

Definition at line 24 of file DivModByConst.hh.

Member Typedef Documentation

◆ Div

template<uint64_t RH, uint64_t RL, uint64_t QH, uint64_t QL, uint64_t DH, uint64_t DL, uint32_t BITS>
using DivModByConstPrivate::Div128_helper< RH, RL, QH, QL, DH, DL, BITS >::Div = Div128_helper<RH3, RL3, QH3, QL3, DH, DL, BITS - 1>

Definition at line 37 of file DivModByConst.hh.

Member Data Documentation

◆ C

template<uint64_t RH, uint64_t RL, uint64_t QH, uint64_t QL, uint64_t DH, uint64_t DL, uint32_t BITS>
constexpr bool DivModByConstPrivate::Div128_helper< RH, RL, QH, QL, DH, DL, BITS >::C = (RH2 != DH) ? (RH2 < DH) : (RL2 < DL)
static

Definition at line 31 of file DivModByConst.hh.

◆ QH2

template<uint64_t RH, uint64_t RL, uint64_t QH, uint64_t QL, uint64_t DH, uint64_t DL, uint32_t BITS>
constexpr uint64_t DivModByConstPrivate::Div128_helper< RH, RL, QH, QL, DH, DL, BITS >::QH2 = (QH << 1) + (QL2 < QL)
static

Definition at line 27 of file DivModByConst.hh.

◆ QH3

template<uint64_t RH, uint64_t RL, uint64_t QH, uint64_t QL, uint64_t DH, uint64_t DL, uint32_t BITS>
constexpr uint64_t DivModByConstPrivate::Div128_helper< RH, RL, QH, QL, DH, DL, BITS >::QH3 = C ? QH2 : ((QL3 != 0) ? QH2 : QH2 + 1)
static

Definition at line 35 of file DivModByConst.hh.

◆ QL2

template<uint64_t RH, uint64_t RL, uint64_t QH, uint64_t QL, uint64_t DH, uint64_t DL, uint32_t BITS>
constexpr uint64_t DivModByConstPrivate::Div128_helper< RH, RL, QH, QL, DH, DL, BITS >::QL2 = (QL << 1)
static

Definition at line 26 of file DivModByConst.hh.

◆ QL3

template<uint64_t RH, uint64_t RL, uint64_t QH, uint64_t QL, uint64_t DH, uint64_t DL, uint32_t BITS>
constexpr uint64_t DivModByConstPrivate::Div128_helper< RH, RL, QH, QL, DH, DL, BITS >::QL3 = C ? QL2 : QL2 + 1
static

Definition at line 34 of file DivModByConst.hh.

◆ quotientHigh

template<uint64_t RH, uint64_t RL, uint64_t QH, uint64_t QL, uint64_t DH, uint64_t DL, uint32_t BITS>
constexpr uint64_t DivModByConstPrivate::Div128_helper< RH, RL, QH, QL, DH, DL, BITS >::quotientHigh = Div::quotientHigh
static

Definition at line 39 of file DivModByConst.hh.

◆ quotientLow

template<uint64_t RH, uint64_t RL, uint64_t QH, uint64_t QL, uint64_t DH, uint64_t DL, uint32_t BITS>
constexpr uint64_t DivModByConstPrivate::Div128_helper< RH, RL, QH, QL, DH, DL, BITS >::quotientLow = Div::quotientLow
static

Definition at line 38 of file DivModByConst.hh.

◆ remainderHigh

template<uint64_t RH, uint64_t RL, uint64_t QH, uint64_t QL, uint64_t DH, uint64_t DL, uint32_t BITS>
constexpr uint64_t DivModByConstPrivate::Div128_helper< RH, RL, QH, QL, DH, DL, BITS >::remainderHigh = Div::remainderHigh
static

Definition at line 41 of file DivModByConst.hh.

◆ remainderLow

template<uint64_t RH, uint64_t RL, uint64_t QH, uint64_t QL, uint64_t DH, uint64_t DL, uint32_t BITS>
constexpr uint64_t DivModByConstPrivate::Div128_helper< RH, RL, QH, QL, DH, DL, BITS >::remainderLow = Div::remainderLow
static

Definition at line 40 of file DivModByConst.hh.

◆ RH2

template<uint64_t RH, uint64_t RL, uint64_t QH, uint64_t QL, uint64_t DH, uint64_t DL, uint32_t BITS>
constexpr uint64_t DivModByConstPrivate::Div128_helper< RH, RL, QH, QL, DH, DL, BITS >::RH2 = (RH << 1) + (RL2 < RL)
static

Definition at line 29 of file DivModByConst.hh.

◆ RH3

template<uint64_t RH, uint64_t RL, uint64_t QH, uint64_t QL, uint64_t DH, uint64_t DL, uint32_t BITS>
constexpr uint64_t DivModByConstPrivate::Div128_helper< RH, RL, QH, QL, DH, DL, BITS >::RH3 = C ? RH2 : RH2 - DH - (RL3 > RL2)
static

Definition at line 33 of file DivModByConst.hh.

◆ RL2

template<uint64_t RH, uint64_t RL, uint64_t QH, uint64_t QL, uint64_t DH, uint64_t DL, uint32_t BITS>
constexpr uint64_t DivModByConstPrivate::Div128_helper< RH, RL, QH, QL, DH, DL, BITS >::RL2 = (RL << 1) + (QH2 < QH)
static

Definition at line 28 of file DivModByConst.hh.

◆ RL3

template<uint64_t RH, uint64_t RL, uint64_t QH, uint64_t QL, uint64_t DH, uint64_t DL, uint32_t BITS>
constexpr uint64_t DivModByConstPrivate::Div128_helper< RH, RL, QH, QL, DH, DL, BITS >::RL3 = C ? RL2 : RL2 - DL
static

Definition at line 32 of file DivModByConst.hh.


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