Poplar and PopLibs
ipu_intrinsics File Reference

Functions that target single IPU instructions. More...

#include <ipudef.h>
#include <ipu_builtins.h>

Namespaces

namespace  ipu
 IPU intrinsic functions.
 

Functions

int ipu::andc (int src0, int src1)
 Targets the andc instruction. More...
 
unsigned ipu::andc (unsigned src0, unsigned src1)
 Targets the andc instruction. More...
 
float ipu::andc (float src0, float src1)
 Targets the andc instruction. More...
 
float2 ipu::andc (float2 src0, float2 src1)
 Targets the andc64 instruction. More...
 
int ipu::bitrev8 (int src)
 Targets the bitrev8 instruction. More...
 
unsigned ipu::cms (int src)
 Targets the cms instruction. More...
 
float2 ipu::roll32 (float2 src0, float2 src1)
 Targets the roll32 instruction. More...
 
int ipu::roll8l (int src0, int src1)
 Targets the roll8l instruction. More...
 
int ipu::roll8r (int src0, int src1)
 Targets the roll8r instruction. More...
 
int ipu::shuf8x8hi (int src0, int src1)
 Targets the shuf8x8hi instruction. More...
 
int ipu::shuf8x8lo (int src0, int src1)
 Targets the shuf8x8lo instruction. More...
 
float2 ipu::sort4x32hi (float2 src0, float2 src1)
 Targets the sort4x32hi instruction. More...
 
float2 ipu::sort4x32lo (float2 src0, float2 src1)
 Targets the sort4x32lo instruction. More...
 
int ipu::sort8 (int src)
 Targets the sort8 instruction. More...
 
int ipu::sort8x8hi (int src0, int src1)
 Targets the sort8x8hi instruction. More...
 
int ipu::sort8x8lo (int src0, int src1)
 Targets the sort8x8lo instruction. More...
 
int ipu::swap8 (int src)
 Targets the sort8 instruction. More...
 
half2 ipu::absadd (half2 src0, half2 src1)
 Targets the f16v2absadd instruction. More...
 
half4 ipu::absadd (half4 src0, half4 src1)
 Targets the f16v4absadd instruction. More...
 
float2 ipu::absadd (float2 src0, float2 src1)
 Targets the f32v2absadd instruction. More...
 
float ipu::absadd (float src0, float src1)
 Targets the f32absadd instruction. More...
 
half2 ipu::absmax (half2 src0, half2 src1)
 Targets the f16v2absmax instruction. More...
 
half4 ipu::absmax (half4 src0, half4 src1)
 Targets the f16v4absmax instruction. More...
 
float2 ipu::absmax (float2 src0, float2 src1)
 Targets the f32v2absmax instruction. More...
 
float ipu::absmax (float src0, float src1)
 Targets the f32absmax instruction. More...
 
half2 ipu::max (half2 src0, half2 src1)
 Targets the f16v2max instruction. More...
 
half4 ipu::max (half4 src0, half4 src1)
 Targets the f16v4max instruction. More...
 
float2 ipu::max (float2 src0, float2 src1)
 Targets the f32v2max instruction. More...
 
float ipu::max (float src0, float src1)
 Targets the f32max instruction. More...
 
half2 ipu::maxc (half4 src)
 Targets the f16v4maxc instruction. More...
 
half2 ipu::min (half2 src0, half2 src1)
 Targets the f16v2min instruction. More...
 
half4 ipu::min (half4 src0, half4 src1)
 Targets the f16v4min instruction. More...
 
float2 ipu::min (float2 src0, float2 src1)
 Targets the f32v2min instruction. More...
 
float ipu::min (float src0, float src1)
 Targets the f32min instruction. More...
 
half2 ipu::clamp (half2 src0, half2 src1)
 Targets the f16v2clamp instruction. More...
 
half4 ipu::clamp (half4 src0, half2 src1)
 Targets the f16v4clamp instruction. More...
 
float2 ipu::clamp (float2 src0, float2 src1)
 Targets the f32v2clamp instruction. More...
 
float ipu::clamp (float src0, float2 src1)
 Targets the f32clamp instruction. More...
 
void ipu::cmac (half2 src0, half2 src1)
 Targets the f16v2cmac instruction. More...
 
void ipu::cmac (half4 src0, half4 src1)
 Targets the f16v4cmac instruction. More...
 
half2 ipu::exp (half2 src)
 Targets the f16v2exp instruction. More...
 
float ipu::exp (float src)
 Targets the f32exp instruction. More...
 
half2 ipu::exp2 (half2 src)
 Targets the f16v2exp instruction. More...
 
float ipu::exp2 (float src)
 Targets the f32exp instruction. More...
 
half2 ipu::log2 (half2 src)
 Targets the f16v2log2 instruction. More...
 
float ipu::log2 (float src)
 Targets the f32ln instruction. More...
 
half2 ipu::tanh (half2 src)
 Targets the f16v2tanh instruction. More...
 
float ipu::tanh (float src)
 Targets the f32tanh instruction. More...
 
half2 ipu::ln (half2 src)
 Targets the f16v2ln instruction. More...
 
float ipu::ln (float src)
 Targets the f32ln instruction. More...
 
float2 ipu::axpy (float2 src0, float2 src1)
 Targets the f32v2axpy instruction. More...
 
half2 ipu::f16v2grand ()
 Targets the f16v2grand instruction. More...
 
float2 ipu::f32v2grand ()
 Targets the f32v2grand instruction. More...
 
half4 ipu::rmask (half4 src0, float src1)
 Targets the f16v4rmask instruction. More...
 
float2 ipu::rmask (float2 src0, float src1)
 Targets the f32v2rmask instruction. More...
 
half2 ipu::sigm (half2 src)
 Targets the f16v2sigm instruction. More...
 
float ipu::sigm (float src)
 Targets the f32sigm instruction. More...
 
float ipu::sum (half2 src)
 Targets the f16v2sum instruction. More...
 
float2 ipu::sum (half4 src)
 Targets the f16v4sum instruction. More...
 
half2 ipu::cmpeq (half2 src0, half2 src1)
 Targets the f16v2cmpeq instruction. More...
 
half4 ipu::cmpeq (half4 src0, half4 src1)
 Targets the f16v4cmpeq instruction. More...
 
float2 ipu::cmpeq (float2 src0, float2 src1)
 Targets the f32v2cmpeq instruction. More...
 
float ipu::cmpeq (float src0, float src1)
 Targets the f32cmpeq instruction. More...
 
half2 ipu::cmpge (half2 src0, half2 src1)
 Targets the f16v2cmpge instruction. More...
 
half4 ipu::cmpge (half4 src0, half4 src1)
 Targets the f16v4cmpge instruction. More...
 
float2 ipu::cmpge (float2 src0, float2 src1)
 Targets the f32v2cmpge instruction. More...
 
float ipu::cmpge (float src0, float src1)
 Targets the f32cmpge instruction. More...
 
half2 ipu::cmpgt (half2 src0, half2 src1)
 Targets the f16v2cmpgt instruction. More...
 
half4 ipu::cmpgt (half4 src0, half4 src1)
 Targets the f16v4cmpgt instruction. More...
 
float2 ipu::cmpgt (float2 src0, float2 src1)
 Targets the f32v2cmpgt instruction. More...
 
float ipu::cmpgt (float src0, float src1)
 Targets the f32cmpgt instruction. More...
 
half2 ipu::cmple (half2 src0, half2 src1)
 Targets the f16v2cmple instruction. More...
 
half4 ipu::cmple (half4 src0, half4 src1)
 Targets the f16v4cmple instruction. More...
 
float2 ipu::cmple (float2 src0, float2 src1)
 Targets the f32v2cmple instruction. More...
 
float ipu::cmple (float src0, float src1)
 Targets the f32cmple instruction. More...
 
half2 ipu::cmplt (half2 src0, half2 src1)
 Targets the f16v2cmplt instruction. More...
 
half4 ipu::cmplt (half4 src0, half4 src1)
 Targets the f16v4cmplt instruction. More...
 
float2 ipu::cmplt (float2 src0, float2 src1)
 Targets the f32v2cmplt instruction. More...
 
float ipu::cmplt (float src0, float src1)
 Targets the f32cmplt instruction. More...
 
half2 ipu::cmpne (half2 src0, half2 src1)
 Targets the f16v2cmpne instruction. More...
 
half4 ipu::cmpne (half4 src0, half4 src1)
 Targets the f16v4cmpne instruction. More...
 
float2 ipu::cmpne (float2 src0, float2 src1)
 Targets the f32v2cmpne instruction. More...
 
float ipu::cmpne (float src0, float src1)
 Targets the f32cmpne instruction. More...
 
unsigned ipu::clz (int src)
 Targets the clz instruction. More...
 
unsigned ipu::popc (int src)
 Targets the popc instruction. More...
 
short2 ipu::roll16 (short2 src0, short2 src1)
 Targets the roll16 instruction. More...
 
ushort2 ipu::roll16 (ushort2 src0, ushort2 src1)
 Targets the roll16 instruction. More...
 
half2 ipu::roll16 (half2 src0, half2 src1)
 Targets the roll16 instruction. More...
 
short2 ipu::sort4x16hi (short2 src0, short2 src1)
 Targets the sort4x16hi instruction. More...
 
ushort2 ipu::sort4x16hi (ushort2 src0, ushort2 src1)
 Targets the sort4x16hi instruction. More...
 
half2 ipu::sort4x16hi (half2 src0, half2 src1)
 Targets the sort4x16hi instruction. More...
 
short2 ipu::sort4x16lo (short2 src0, short2 src1)
 Targets the sort4x16lo instruction. More...
 
ushort2 ipu::sort4x16lo (ushort2 src0, ushort2 src1)
 Targets the sort4x16lo instruction. More...
 
half2 ipu::sort4x16lo (half2 src0, half2 src1)
 Targets the sort4x16lo instruction. More...
 

Detailed Description

Functions that target single IPU instructions.

These intrinsic functions target single IPU instructions and may be used in C++ IPU code. Each function is named after the instruction it targets. Float instructions that have a type (for example, f16v2) often omit this prefix in their function name. For example, use cmpeq() to target any of the cmpeq instructions, such as f16v2cmpeq.

Refer to the "Tile Worker ISA" for more detailed information on the instructions targeted by these intrinsics.