Halide 22.0.0 Halide compiler and libraries

Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
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
| 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...
bfloat16_t | operator+ (bfloat16_t rhs) const
| Arithmetic operators. More...
bfloat16_t | operator- (bfloat16_t rhs) const
bfloat16_t | operator* (bfloat16_t rhs) const
bfloat16_t | operator/ (bfloat16_t rhs) const
bfloat16_t | operator+= (bfloat16_t rhs)
bfloat16_t | operator-= (bfloat16_t rhs)
bfloat16_t | operator*= (bfloat16_t rhs)
bfloat16_t | operator/= (bfloat16_t rhs)
bool | operator== (bfloat16_t rhs) const
| Comparison operators. More...
bool | operator!= (bfloat16_t rhs) const
bool | operator> (bfloat16_t rhs) const
bool | operator< (bfloat16_t rhs) const
bool | operator>= (bfloat16_t rhs) const
bool | operator<= (bfloat16_t rhs) const
bool | is_nan () const
| Properties. More...
bool | is_infinity () const
bool | is_negative () const
bool | is_zero () const
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 (int64_t value)
| Construct from a float, double, or int using round-to-nearest-ties-to-even. More...
| bfloat16_t (uint64_t value)
| Construct from a float, double, or int using round-to-nearest-ties-to-even. More...
| bfloat16_t ()=default
| Construct a bfloat16_t with the bits initialised to 0. More...

## Static Public Member Functions
static bfloat16_t | make_zero ()
| Get a new bfloat16_t that represents a special value. More...
static bfloat16_t | make_negative_zero ()
static bfloat16_t | make_infinity ()
static bfloat16_t | make_negative_infinity ()
static bfloat16_t | make_nan ()
static bfloat16_t | make_from_bits (uint16_t bits)
| Get a new bfloat16_t with the given raw bits. 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 160 of file Float16.h.

## Constructor & Destructor Documentation

## ◆ bfloat16_t() [1/6]

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/6]

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/6]

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/6]

Halide::bfloat16_t::bfloat16_t | ( | int64_t | value | ) |
| explicit

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

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

## ◆ bfloat16_t() [5/6]

Halide::bfloat16_t::bfloat16_t | ( | uint64_t | value | ) |
| explicit

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

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

## ◆ bfloat16_t() [6/6]

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

## ◆ make_infinity()

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

## ◆ make_negative_infinity()

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

## ◆ make_nan()

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

## ◆ 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

  bits | The 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

## ◆ operator*()

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

## ◆ operator/()

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

## ◆ operator+=()

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

Definition at line 222 of file Float16.h.

## ◆ operator-=()

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

Definition at line 225 of file Float16.h.

## ◆ operator*=()

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

Definition at line 228 of file Float16.h.

## ◆ operator/=()

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

Definition at line 231 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

Definition at line 239 of file Float16.h.

## ◆ operator>()

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

## ◆ operator<()

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

## ◆ operator>=()

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

Definition at line 244 of file Float16.h.

## ◆ operator<=()

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

Definition at line 247 of file Float16.h.

## ◆ is_nan()

bool Halide::bfloat16_t::is_nan | ( |  | ) | const

Properties.

## ◆ is_infinity()

bool Halide::bfloat16_t::is_infinity | ( |  | ) | const

## ◆ is_negative()

bool Halide::bfloat16_t::is_negative | ( |  | ) | const

## ◆ is_zero()

bool Halide::bfloat16_t::is_zero | ( |  | ) | const

## ◆ 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 162 of file Float16.h.

## ◆ sign_mask

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

Definition at line 163 of file Float16.h.

## ◆ exponent_mask

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

Definition at line 164 of file Float16.h.

## ◆ mantissa_mask

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

Definition at line 165 of file Float16.h.

## ◆ zero

const bfloat16_t Halide::bfloat16_t::zero
| static

Definition at line 167 of file Float16.h.

## ◆ negative_zero

const bfloat16_t Halide::bfloat16_t::negative_zero
| static

Definition at line 167 of file Float16.h.

## ◆ infinity

const bfloat16_t Halide::bfloat16_t::infinity
| static

Definition at line 167 of file Float16.h.

## ◆ negative_infinity

const bfloat16_t Halide::bfloat16_t::negative_infinity
| static

Definition at line 167 of file Float16.h.

## ◆ nan

const bfloat16_t Halide::bfloat16_t::nan
| static

Definition at line 167 of file Float16.h.

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

- src/Float16.h