Halide  17.0.2
Halide compiler and libraries
Halide::bfloat16_t Struct Reference

Class that provides a type that implements half precision floating point using the bfloat16 format. More...

#include <Float16.h>

Public Member Functions

 bfloat16_t ()=default
 Construct a bfloat16_t with the bits initialised to 0. More...
 
 operator float () const
 Cast to float. More...
 
 operator double () const
 Cast to double. More...
 
 operator int () const
 Cast to int. More...
 
bfloat16_t operator- () const
 Return a new bfloat16_t with a negated sign bit. More...
 
uint16_t to_bits () const
 Returns the bits that represent this bfloat16_t. More...
 
Constructors
 bfloat16_t (float value)
 Construct from a float, double, or int using round-to-nearest-ties-to-even. More...
 
 bfloat16_t (double value)
 Construct from a float, double, or int using round-to-nearest-ties-to-even. More...
 
 bfloat16_t (int value)
 Construct from a float, double, or int using round-to-nearest-ties-to-even. More...
 
bfloat16_t operator+ (bfloat16_t rhs) const
 Arithmetic operators. More...
 
bfloat16_t operator- (bfloat16_t rhs) const
 Arithmetic operators. More...
 
bfloat16_t operator* (bfloat16_t rhs) const
 Arithmetic operators. More...
 
bfloat16_t operator/ (bfloat16_t rhs) const
 Arithmetic operators. More...
 
bfloat16_t operator+= (bfloat16_t rhs)
 Arithmetic operators. More...
 
bfloat16_t operator-= (bfloat16_t rhs)
 Arithmetic operators. More...
 
bfloat16_t operator*= (bfloat16_t rhs)
 Arithmetic operators. More...
 
bfloat16_t operator/= (bfloat16_t rhs)
 Arithmetic operators. More...
 
bool operator== (bfloat16_t rhs) const
 Comparison operators. More...
 
bool operator!= (bfloat16_t rhs) const
 Comparison operators. More...
 
bool operator> (bfloat16_t rhs) const
 Comparison operators. More...
 
bool operator< (bfloat16_t rhs) const
 Comparison operators. More...
 
bool operator>= (bfloat16_t rhs) const
 Comparison operators. More...
 
bool operator<= (bfloat16_t rhs) const
 Comparison operators. More...
 
bool is_nan () const
 Properties. More...
 
bool is_infinity () const
 Properties. More...
 
bool is_negative () const
 Properties. More...
 
bool is_zero () const
 Properties. More...
 

Static Public Member Functions

static bfloat16_t make_from_bits (uint16_t bits)
 Get a new bfloat16_t with the given raw bits. More...
 
static bfloat16_t make_zero ()
 Get a new bfloat16_t that represents a special value. More...
 
static bfloat16_t make_negative_zero ()
 Get a new bfloat16_t that represents a special value. More...
 
static bfloat16_t make_infinity ()
 Get a new bfloat16_t that represents a special value. More...
 
static bfloat16_t make_negative_infinity ()
 Get a new bfloat16_t that represents a special value. More...
 
static bfloat16_t make_nan ()
 Get a new bfloat16_t that represents a special value. More...
 

Static Public Attributes

static const int mantissa_bits = 7
 
static const uint16_t sign_mask = 0x8000
 
static const uint16_t exponent_mask = 0x7f80
 
static const uint16_t mantissa_mask = 0x007f
 
static const bfloat16_t zero
 
static const bfloat16_t negative_zero
 
static const bfloat16_t infinity
 
static const bfloat16_t negative_infinity
 
static const bfloat16_t nan
 

Detailed Description

Class that provides a type that implements half precision floating point using the bfloat16 format.

This type is enforced to be 16-bits wide and maintains no state other than the raw bits so that it can passed to code that checks a type's size and used for halide_buffer_t allocation.

Definition at line 158 of file Float16.h.

Constructor & Destructor Documentation

◆ bfloat16_t() [1/4]

Halide::bfloat16_t::bfloat16_t ( float  value)
explicit

Construct from a float, double, or int using round-to-nearest-ties-to-even.

Out-of-range values become +/- infinity.

◆ bfloat16_t() [2/4]

Halide::bfloat16_t::bfloat16_t ( double  value)
explicit

Construct from a float, double, or int using round-to-nearest-ties-to-even.

Out-of-range values become +/- infinity.

◆ bfloat16_t() [3/4]

Halide::bfloat16_t::bfloat16_t ( int  value)
explicit

Construct from a float, double, or int using round-to-nearest-ties-to-even.

Out-of-range values become +/- infinity.

◆ bfloat16_t() [4/4]

Halide::bfloat16_t::bfloat16_t ( )
default

Construct a bfloat16_t with the bits initialised to 0.

This represents positive zero.

Member Function Documentation

◆ operator float()

Halide::bfloat16_t::operator float ( ) const
explicit

Cast to float.

◆ operator double()

Halide::bfloat16_t::operator double ( ) const
explicit

Cast to double.

◆ operator int()

Halide::bfloat16_t::operator int ( ) const
explicit

Cast to int.

◆ make_zero()

static bfloat16_t Halide::bfloat16_t::make_zero ( )
static

Get a new bfloat16_t that represents a special value.

◆ make_negative_zero()

static bfloat16_t Halide::bfloat16_t::make_negative_zero ( )
static

Get a new bfloat16_t that represents a special value.

◆ make_infinity()

static bfloat16_t Halide::bfloat16_t::make_infinity ( )
static

Get a new bfloat16_t that represents a special value.

◆ make_negative_infinity()

static bfloat16_t Halide::bfloat16_t::make_negative_infinity ( )
static

Get a new bfloat16_t that represents a special value.

◆ make_nan()

static bfloat16_t Halide::bfloat16_t::make_nan ( )
static

Get a new bfloat16_t that represents a special value.

◆ make_from_bits()

static bfloat16_t Halide::bfloat16_t::make_from_bits ( uint16_t  bits)
static

Get a new bfloat16_t with the given raw bits.

Parameters
bitsThe bits conformant to IEEE754 binary16

◆ operator-() [1/2]

bfloat16_t Halide::bfloat16_t::operator- ( ) const

Return a new bfloat16_t with a negated sign bit.

◆ operator+()

bfloat16_t Halide::bfloat16_t::operator+ ( bfloat16_t  rhs) const

Arithmetic operators.

◆ operator-() [2/2]

bfloat16_t Halide::bfloat16_t::operator- ( bfloat16_t  rhs) const

Arithmetic operators.

◆ operator*()

bfloat16_t Halide::bfloat16_t::operator* ( bfloat16_t  rhs) const

Arithmetic operators.

◆ operator/()

bfloat16_t Halide::bfloat16_t::operator/ ( bfloat16_t  rhs) const

Arithmetic operators.

◆ operator+=()

bfloat16_t Halide::bfloat16_t::operator+= ( bfloat16_t  rhs)
inline

Arithmetic operators.

Definition at line 218 of file Float16.h.

◆ operator-=()

bfloat16_t Halide::bfloat16_t::operator-= ( bfloat16_t  rhs)
inline

Arithmetic operators.

Definition at line 221 of file Float16.h.

◆ operator*=()

bfloat16_t Halide::bfloat16_t::operator*= ( bfloat16_t  rhs)
inline

Arithmetic operators.

Definition at line 224 of file Float16.h.

◆ operator/=()

bfloat16_t Halide::bfloat16_t::operator/= ( bfloat16_t  rhs)
inline

Arithmetic operators.

Definition at line 227 of file Float16.h.

◆ operator==()

bool Halide::bfloat16_t::operator== ( bfloat16_t  rhs) const

Comparison operators.

◆ operator!=()

bool Halide::bfloat16_t::operator!= ( bfloat16_t  rhs) const
inline

Comparison operators.

Definition at line 235 of file Float16.h.

◆ operator>()

bool Halide::bfloat16_t::operator> ( bfloat16_t  rhs) const

Comparison operators.

◆ operator<()

bool Halide::bfloat16_t::operator< ( bfloat16_t  rhs) const

Comparison operators.

◆ operator>=()

bool Halide::bfloat16_t::operator>= ( bfloat16_t  rhs) const
inline

Comparison operators.

Definition at line 240 of file Float16.h.

◆ operator<=()

bool Halide::bfloat16_t::operator<= ( bfloat16_t  rhs) const
inline

Comparison operators.

Definition at line 243 of file Float16.h.

◆ is_nan()

bool Halide::bfloat16_t::is_nan ( ) const

Properties.

◆ is_infinity()

bool Halide::bfloat16_t::is_infinity ( ) const

Properties.

◆ is_negative()

bool Halide::bfloat16_t::is_negative ( ) const

Properties.

◆ is_zero()

bool Halide::bfloat16_t::is_zero ( ) const

Properties.

◆ to_bits()

uint16_t Halide::bfloat16_t::to_bits ( ) const

Returns the bits that represent this bfloat16_t.

An alternative method to access the bits is to cast a pointer to this instance as a pointer to a uint16_t.

Member Data Documentation

◆ mantissa_bits

const int Halide::bfloat16_t::mantissa_bits = 7
static

Definition at line 160 of file Float16.h.

◆ sign_mask

const uint16_t Halide::bfloat16_t::sign_mask = 0x8000
static

Definition at line 161 of file Float16.h.

◆ exponent_mask

const uint16_t Halide::bfloat16_t::exponent_mask = 0x7f80
static

Definition at line 162 of file Float16.h.

◆ mantissa_mask

const uint16_t Halide::bfloat16_t::mantissa_mask = 0x007f
static

Definition at line 163 of file Float16.h.

◆ zero

const bfloat16_t Halide::bfloat16_t::zero
static

Definition at line 165 of file Float16.h.

◆ negative_zero

const bfloat16_t Halide::bfloat16_t::negative_zero
static

Definition at line 165 of file Float16.h.

◆ infinity

const bfloat16_t Halide::bfloat16_t::infinity
static

Definition at line 165 of file Float16.h.

◆ negative_infinity

const bfloat16_t Halide::bfloat16_t::negative_infinity
static

Definition at line 165 of file Float16.h.

◆ nan

const bfloat16_t Halide::bfloat16_t::nan
static

Definition at line 165 of file Float16.h.


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