ONE - On-device Neural Engine
Loading...
Searching...
No Matches
gemm_helpers.h File Reference
#include "activation_float_helpers.h"
#include "helpers.h"

Go to the source code of this file.

Macros

#define COLUMN_VECTOR(K0, IDX_COL, BASENAME, B, TYPE)
 
#define COLUMN_VECTOR_SCALAR(K0, IDX_COL, BASENAME, B, TYPE)
 
#define TRANSPOSE_K0XN0(K0, N0, BASENAME, B, TYPE)
 
LOAD_ROW_n

Loads the rows from 0 to n-1 in the given variables (BASENAME0 to BASENAMEn-1).

Parameters
[in]N0The number of rows to load
[in]DATA_TYPEThe data type of variables
[in]BASENAMEThe basename of the destination variables for the loaded rows
[in]PTRThe base pointer
[in]OFFSETThe offset within a row
[in]STRIDE_YThe stride value in y-axis direction
[in]ZThe z-axis offset vector
#define LOAD_ROW_1(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)
 
#define LOAD_ROW_2(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)
 
#define LOAD_ROW_3(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)
 
#define LOAD_ROW_4(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)
 
#define LOAD_ROW_5(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)
 
#define LOAD_ROW_6(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)
 
#define LOAD_ROW_7(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)
 
#define LOAD_ROW_8(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)
 
#define LOAD_ROW_9(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)
 
#define LOAD_ROW_10(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)
 
#define LOAD_ROW_11(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)
 
#define LOAD_ROW_12(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)
 
#define LOAD_ROW_13(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)
 
#define LOAD_ROW_14(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)
 
#define LOAD_ROW_15(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)
 
#define LOAD_ROW_16(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)
 
LOAD_BLOCK

Load Blocks (consecutive rows and columns) with Z offset.

Supported cases are M0=1,2,3,...,16 and N0=1,2,3,4,8,16 The data to load is expected to have consecutive names for each row. E.g., for M0=3, and BASENAME=c, the expected data is c0, c1 and c2. The Z offset is expected to have consecutive names. E.g., for M0=3, and Z=zin, the expected Z offsets are zin0, zin1 and zin2.

Parameters
[in]M0The number of consecutive rows
[in]N0The number of consecutive columns
[in]DATA_TYPEThe data type of the target
[in]BASENAMEThe basename of the result variables
[in]PTRThe base pointer for the data
[in]OFFSETThe offset within a row
[in]STRIDE_YThe stride in y-axis direction
[in]ZThe z-axis offset vector
#define LOAD_BLOCK_STR(M0, N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)    LOAD_ROW_##M0(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)
 
#define LOAD_BLOCK(M0, N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)    LOAD_BLOCK_STR(M0, N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)
 
LOAD_ELEMENT_n

Loads the elements from 0 to n-1 in the given variables (BASENAME0 to BASENAMEn-1).

Parameters
[in]N0The number of rows to load
[in]DATA_TYPEThe data type of variables
[in]BASENAMEThe basename of the destination variables for the loaded rows
[in]PTRThe base pointer
[in]OFFSETThe offset within a row
[in]STRIDE_YThe stride value in y-axis direction
#define LOAD_ELEMENT_1(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)
 
#define LOAD_ELEMENT_2(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)
 
#define LOAD_ELEMENT_3(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)
 
#define LOAD_ELEMENT_4(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)
 
#define LOAD_ELEMENT_5(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)
 
#define LOAD_ELEMENT_6(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)
 
#define LOAD_ELEMENT_7(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)
 
#define LOAD_ELEMENT_8(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)
 
#define LOAD_ELEMENT_9(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)
 
#define LOAD_ELEMENT_10(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)
 
#define LOAD_ELEMENT_11(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)
 
#define LOAD_ELEMENT_12(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)
 
#define LOAD_ELEMENT_13(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)
 
#define LOAD_ELEMENT_14(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)
 
#define LOAD_ELEMENT_15(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)
 
#define LOAD_ELEMENT_16(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)
 
LOAD_SCALAR_AS_VECTOR

Load Scalar as Vector (consecutive elements).

Supported cases are M0=1,2,3,...,16 and N0=1,2,3,4,8,16 The data to load is expected to have consecutive names for each row. E.g., for M0=3, and BASENAME=c, the expected data is c0, c1 and c2.

Parameters
[in]M0The number of consecutive rows
[in]N0The number of consecutive columns
[in]DATA_TYPEThe data type of the target
[in]BASENAMEThe basename of the result variables
[in]PTRThe base pointer for the data
[in]OFFSETThe offset within a row
[in]STRIDE_YThe stride in y-axis direction
#define LOAD_SCALAR_AS_VECTOR_STR(M0, N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)    LOAD_ELEMENT_##M0(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)
 
#define LOAD_SCALAR_AS_VECTOR(M0, N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)    LOAD_SCALAR_AS_VECTOR_STR(M0, N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)
 
CALCULATE_Z_OFFSET_n

Basic macros to calculate Z offset values from Z0 to Zn-1

Parameters
[in]M0The number of offset values to calculate
[in]DATA_TYPEThe data type of the results
[in]ZThe basename of the result variables
[in]YThe work-itme ID of y-axis
[in]HEIGHT_GEMM3DThe height of GEMM3D
[in]DEPTH_GEMM3DThe depth of GEMM3D
[in]CROSS_PLANE_PADThe padding required for plane changes accross the z-dimension
[in]STRIDE_YThe stride value in y-axis direction
#define CALCULATE_Z_OFFSET_1(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, STRIDE_Y)
 
#define CALCULATE_Z_OFFSET_2(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, STRIDE_Y)
 
#define CALCULATE_Z_OFFSET_3(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, STRIDE_Y)
 
#define CALCULATE_Z_OFFSET_4(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, STRIDE_Y)
 
#define CALCULATE_Z_OFFSET_5(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, STRIDE_Y)
 
#define CALCULATE_Z_OFFSET_6(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, STRIDE_Y)
 
#define CALCULATE_Z_OFFSET_7(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, STRIDE_Y)
 
#define CALCULATE_Z_OFFSET_8(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, STRIDE_Y)
 
CALCULATE_Z_OFFSET

Calculate Z offset values from Z0 to Zn-1

The Z offsets are expected to have consecutive names. E.g., for M0=3 and Z=zin, the expected names of Z offsets are zin1, zin2, zin3. Note that, CROSS_PLANE_PAD (cross plain padding) is required to take into account the possible cross plane paddings in case of the plance changes across the z-dimension.

Parameters
[in]M0The number of offset values to calculate
[in]DATA_TYPEThe data type of the results
[in]ZThe basename of the result variables
[in]YThe work-itme ID of y-axis
[in]HEIGHT_GEMM3DThe height of GEMM3D
[in]DEPTH_GEMM3DThe depth of GEMM3D
[in]CROSS_PLANE_PADThe padding required for plane changes accross the z-dimension
[in]STRIDE_YThe stride value in y-axis direction
#define CALCULATE_Z_OFFSET_STR(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, STRIDE_Y)
 
#define CALCULATE_Z_OFFSET(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, STRIDE_Y)
 
STORE_ROW_n

Store the 0 to (n-1)th rows of the given variables

Parameters
[in]N0The size of the vectors
[in]DATA_TYPEThe data type of the vectors
[in]BASENAMEThe basename of the variables
[in]PTRThe base pointer
[in]STRIDE_YThe stride value in y-axis direction
[in]ZThe offset in z-axis direction
#define STORE_ROW_1(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define STORE_ROW_2(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define STORE_ROW_3(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define STORE_ROW_4(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define STORE_ROW_5(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define STORE_ROW_6(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define STORE_ROW_7(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define STORE_ROW_8(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define STORE_ROW_9(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define STORE_ROW_10(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define STORE_ROW_11(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define STORE_ROW_12(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define STORE_ROW_13(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define STORE_ROW_14(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define STORE_ROW_15(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define STORE_ROW_16(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
CONVERT_STORE_ROW_n

Convert and store the 0th to (n-1)th rows of the given variables

Parameters
[in]N0The size of the vectors
[in]DATA_TYPEThe data type of the vectors
[in]BASENAMEThe basename of the variables
[in]PTRThe base pointer
[in]STRIDE_YThe stride value in y-axis direction
[in]ZThe offset in z-axis direction
#define CONVERT_STORE_ROW_1(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define CONVERT_STORE_ROW_2(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define CONVERT_STORE_ROW_3(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define CONVERT_STORE_ROW_4(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define CONVERT_STORE_ROW_5(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define CONVERT_STORE_ROW_6(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define CONVERT_STORE_ROW_7(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define CONVERT_STORE_ROW_8(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define CONVERT_STORE_ROW_9(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define CONVERT_STORE_ROW_10(N0, DATA, BASENAME, PTR, STRIDE_Y, Z)
 
#define CONVERT_STORE_ROW_11(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define CONVERT_STORE_ROW_12(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define CONVERT_STORE_ROW_13(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define CONVERT_STORE_ROW_14(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define CONVERT_STORE_ROW_15(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define CONVERT_STORE_ROW_16(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
STORE_BLOCK

Store a block of the given size M0xN0

Supported cases are M0=1,2,3,...,16 and N0=2,3,4,8,16. The data to store is expected to have consecutive names for each row. E.g., for M0=3 and basename=c, the expected names are c0, c1 and c2. The Z offset is expected to have consecutive names. E.g., for M0=3 and Z=zin, the expected z offset names are zin0, zin1 and zin2.

Parameters
[in]M0The number of rows to store
[in]N0The size of each vector
[in]DATA_TYPEThe data type of the vectors
[in]BASENAMEThe basename of the variables
[in]PTRThe base pointer
[in]STRIDE_YThe stride value in y-axis direction
[in]ZThe offset in z-axis direction
#define STORE_BLOCK_STR(M0, N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)    STORE_ROW_##M0(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define STORE_BLOCK(M0, N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)    STORE_BLOCK_STR(M0, N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
CONVERT_STORE_BLOCK

Convert and store a block of the given size M0xN0

Supported cases are M0=1,2,3,...,16 and N0=2,3,4,8,16. The data to store is expected to have consecutive names for each row. E.g., for M0=3 and basename=c, the expected names are c0, c1 and c2. The Z offset is expected to have consecutive names. E.g., for M0=3 and Z=zin, the expected z offset names are zin0, zin1 and zin2.

Parameters
[in]M0The number of rows to store
[in]N0The size of each vector
[in]DATA_TYPEThe data type of the vectors
[in]BASENAMEThe basename of the variables
[in]PTRThe base pointer
[in]STRIDE_YThe stride value in y-axis direction
[in]ZThe offset in z-axis direction
#define CONVERT_STORE_BLOCK_STR(M0, N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)    CONVERT_STORE_ROW_##M0(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
#define CONVERT_STORE_BLOCK(M0, N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)    CONVERT_STORE_BLOCK_STR(M0, N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)
 
SCALE_ROW_n

Scale the rows in the given variables (BASENAME0 to BASENAMEn-1)

Parameters
[in]DATA_TYPEThe data type of the variables
[in]BASENAMEThe basename of the variables
[in]SCALEThe scale factor
#define SCALE_ROW_1(DATA_TYPE, BASENAME, SCALE)   BASENAME##0 *= (DATA_TYPE)SCALE;
 
#define SCALE_ROW_2(DATA_TYPE, BASENAME, SCALE)
 
#define SCALE_ROW_3(DATA_TYPE, BASENAME, SCALE)
 
#define SCALE_ROW_4(DATA_TYPE, BASENAME, SCALE)
 
#define SCALE_ROW_5(DATA_TYPE, BASENAME, SCALE)
 
#define SCALE_ROW_6(DATA_TYPE, BASENAME, SCALE)
 
#define SCALE_ROW_7(DATA_TYPE, BASENAME, SCALE)
 
#define SCALE_ROW_8(DATA_TYPE, BASENAME, SCALE)
 
#define SCALE_ROW_9(DATA_TYPE, BASENAME, SCALE)
 
#define SCALE_ROW_10(DATA_TYPE, BASENAME, SCALE)
 
#define SCALE_ROW_11(DATA_TYPE, BASENAME, SCALE)
 
#define SCALE_ROW_12(DATA_TYPE, BASENAME, SCALE)
 
#define SCALE_ROW_13(DATA_TYPE, BASENAME, SCALE)
 
#define SCALE_ROW_14(DATA_TYPE, BASENAME, SCALE)
 
#define SCALE_ROW_15(DATA_TYPE, BASENAME, SCALE)
 
#define SCALE_ROW_16(DATA_TYPE, BASENAME, SCALE)
 
SCALE_BLOCK

Scale elements stored in a block (BASENAME)

Supported cases are N=1,2,3,...,16

Parameters
[in]NThe number of rows in the block
[in]DATA_TYPEThe data type of the block
[in]BASENAMEThe basename of the block
[in]SCALEThe scale factor
#define SCALE_BLOCK_STR(N, DATA_TYPE, BASENAME, SCALE)   SCALE_ROW_##N(DATA_TYPE, BASENAME, SCALE)
 
#define SCALE_BLOCK(N, DATA_TYPE, BASENAME, SCALE)   SCALE_BLOCK_STR(N, DATA_TYPE, BASENAME, SCALE)
 
COLUMN_VECTORn

Create a new vector containing the values at the given index for a set of given vectors

Parameters
[in]IDX_COLThe index value
[in]BASENAMEThe basename of the destination vectors
[in]XThe basename of the source vectors
[in]TYPEThe data type of the destination vectors
#define COLUMN_VECTOR1(IDX_COL, BASENAME, X, TYPE)    TYPE BASENAME##IDX_COL = (TYPE)((X##0).s##IDX_COL);
 
#define COLUMN_VECTOR2(IDX_COL, BASENAME, X, TYPE)
 
#define COLUMN_VECTOR3(IDX_COL, BASENAME, X, TYPE)
 
#define COLUMN_VECTOR4(IDX_COL, BASENAME, X, TYPE)
 
#define COLUMN_VECTOR8(IDX_COL, BASENAME, X, TYPE)
 
#define COLUMN_VECTOR16(IDX_COL, BASENAME, X, TYPE)
 
COLUMN_VECTOR_SCALARn

Create a new vector containing the values at the given index. Utility macros for transposing a colum-vector

Parameters
[in]IDX_COLThe index value
[in]BASENAMEThe basename of the destination vectors
[in]XThe basename of the source vectors
[in]TYPEThe data type of the destination vectors
#define COLUMN_VECTOR_SCALAR1(IDX_COL, BASENAME, X, TYPE)   TYPE BASENAME##IDX_COL = (TYPE)((X##0));
 
#define COLUMN_VECTOR_SCALAR2(IDX_COL, BASENAME, X, TYPE)
 
#define COLUMN_VECTOR_SCALAR3(IDX_COL, BASENAME, X, TYPE)
 
#define COLUMN_VECTOR_SCALAR4(IDX_COL, BASENAME, X, TYPE)
 
#define COLUMN_VECTOR_SCALAR8(IDX_COL, BASENAME, X, TYPE)
 
#define COLUMN_VECTOR_SCALAR16(IDX_COL, BASENAME, X, TYPE)
 
TRANSPOSE_K0Xn

Create transposed vectors of the given vectors

Parameters
[in]K0The size of the source vectors
[in]BASENAMEThe basename of transposed vectors
[in]BThe basename of source vectors for transposition
[in]TYPEThe data type of the transposed vectors
#define TRANSPOSE_K0X1(K0, BASENAME, B, TYPE)   COLUMN_VECTOR_SCALAR(K0, 0, BASENAME, B, TYPE);
 
#define TRANSPOSE_K0X2(K0, BASENAME, B, TYPE)
 
#define TRANSPOSE_K0X3(K0, BASENAME, B, TYPE)
 
#define TRANSPOSE_K0X4(K0, BASENAME, B, TYPE)
 
#define TRANSPOSE_K0X8(K0, BASENAME, B, TYPE)
 
#define TRANSPOSE_K0X16(K0, BASENAME, B, TYPE)
 
ADD_ROW_n

Add the variables (BIAS0 to BIASn-1) to the others (BASENAME0 to BASENAMEn-1)

Parameters
[in]BASENAMEThe basename of the destination variables
[in]BIASThe basename of the added variables
#define ADD_ROW_1(BASENAME, BIAS)   BASENAME##0 += BIAS##0;
 
#define ADD_ROW_2(BASENAME, BIAS)
 
#define ADD_ROW_3(BASENAME, BIAS)
 
#define ADD_ROW_4(BASENAME, BIAS)
 
#define ADD_ROW_5(BASENAME, BIAS)
 
#define ADD_ROW_6(BASENAME, BIAS)
 
#define ADD_ROW_7(BASENAME, BIAS)
 
#define ADD_ROW_8(BASENAME, BIAS)
 
#define ADD_ROW_9(BASENAME, BIAS)
 
#define ADD_ROW_10(BASENAME, BIAS)
 
#define ADD_ROW_11(BASENAME, BIAS)
 
#define ADD_ROW_12(BASENAME, BIAS)
 
#define ADD_ROW_13(BASENAME, BIAS)
 
#define ADD_ROW_14(BASENAME, BIAS)
 
#define ADD_ROW_15(BASENAME, BIAS)
 
#define ADD_ROW_16(BASENAME, BIAS)
 
ADD_BLOCK

Add the block (BIAS) to another block (BASENAME)

Supported cases are N=1,2,3,...,16

Parameters
[in]NThe number of vectors in the block
[in]BASENAMEThe basename of the destination variables
[in]BIASThe basename of the added variables
#define ADD_BLOCK_STR(N, BASENAME, BIAS)   ADD_ROW_##N(BASENAME, BIAS)
 
#define ADD_BLOCK(N, BASENAME, BIAS)   ADD_BLOCK_STR(N, BASENAME, BIAS)
 
ADD_ROW_BROADCAST_n

Broadcast (add single value) to the each element of the destination variables

Parameters
[in]BASENAMEThe basename of the destination variables
[in]BIASThe variable containing the value to add
#define ADD_ROW_BROADCAST_1(BASENAME, BIAS)   BASENAME##0 += BIAS;
 
#define ADD_ROW_BROADCAST_2(BASENAME, BIAS)
 
#define ADD_ROW_BROADCAST_3(BASENAME, BIAS)
 
#define ADD_ROW_BROADCAST_4(BASENAME, BIAS)
 
#define ADD_ROW_BROADCAST_5(BASENAME, BIAS)
 
#define ADD_ROW_BROADCAST_6(BASENAME, BIAS)
 
#define ADD_ROW_BROADCAST_7(BASENAME, BIAS)
 
#define ADD_ROW_BROADCAST_8(BASENAME, BIAS)
 
#define ADD_ROW_BROADCAST_9(BASENAME, BIAS)
 
#define ADD_ROW_BROADCAST_10(BASENAME, BIAS)
 
#define ADD_ROW_BROADCAST_11(BASENAME, BIAS)
 
#define ADD_ROW_BROADCAST_12(BASENAME, BIAS)
 
#define ADD_ROW_BROADCAST_13(BASENAME, BIAS)
 
#define ADD_ROW_BROADCAST_14(BASENAME, BIAS)
 
#define ADD_ROW_BROADCAST_15(BASENAME, BIAS)
 
#define ADD_ROW_BROADCAST_16(BASENAME, BIAS)
 
ADD_BLOCK_BROADCAST

Broadcast (add a value) to the each element of the destination block (BASENAME)

Supported cases are N=1,2,3,...,16.

Parameters
[in]NThe number of vectors in the block
[in]BASENAMEThe basename of the destination variables
[in]BIASThe variable containing the value to add
#define ADD_BLOCK_BROADCAST_STR(N, BASENAME, BIAS)   ADD_ROW_BROADCAST_##N(BASENAME, BIAS)
 
#define ADD_BLOCK_BROADCAST(N, BASENAME, BIAS)   ADD_BLOCK_BROADCAST_STR(N, BASENAME, BIAS)
 
ACTIVATION_ROW_n

Apply activation to the given variables

Parameters
[in]ACTIVATION_TYPEThe type of the activation
[in]DATA_TYPEThe data type of the vectors
[in]BASENAMEThe basename of the variables
[in]A_VALAdditional value required by the activation
[in]B_VALAdditional value required by the activation
#define ACTIVATION_ROW_1(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)    BASENAME##0 = ACTIVATION(ACTIVATION_TYPE, DATA_TYPE, BASENAME##0, A_VAL, B_VAL);
 
#define ACTIVATION_ROW_2(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)
 
#define ACTIVATION_ROW_3(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)
 
#define ACTIVATION_ROW_4(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)
 
#define ACTIVATION_ROW_5(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)
 
#define ACTIVATION_ROW_6(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)
 
#define ACTIVATION_ROW_7(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)
 
#define ACTIVATION_ROW_8(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)
 
#define ACTIVATION_ROW_9(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)
 
#define ACTIVATION_ROW_10(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)
 
#define ACTIVATION_ROW_11(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)
 
#define ACTIVATION_ROW_12(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)
 
#define ACTIVATION_ROW_13(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)
 
#define ACTIVATION_ROW_14(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)
 
#define ACTIVATION_ROW_15(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)
 
#define ACTIVATION_ROW_16(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)
 
ACTIVATION_BLOCK

Apply activation to a block (BASENAME)

Supported cases are N=1,2,3,...,16.

Parameters
[in]NThe number of vectors in the block
[in]ACTIVATION_TYPEThe type of the activation
[in]DATA_TYPEThe data type of the vectors
[in]BASENAMEThe basename of the variables
[in]A_VALAdditional value required by the activation
[in]B_VALAdditional value required by the activation
#define ACTIVATION_BLOCK_STR(N, ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)    ACTIVATION_ROW_##N(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)
 
#define ACTIVATION_BLOCK(N, ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)    ACTIVATION_BLOCK_STR(N, ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)
 
CONVERT_ROW_n

Apply convert_<data_type> to the given variables

Parameters
[in]NThe size of the vectors
[in]DATA_TYPEThe data type of the vectors
[in]BASENAME_SRCThe basename of the source variables
[in]BASENAME_DSTThe basename of the destination variables
#define CONVERT_ROW_1(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)
 
#define CONVERT_ROW_2(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)
 
#define CONVERT_ROW_3(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)
 
#define CONVERT_ROW_4(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)
 
#define CONVERT_ROW_5(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)
 
#define CONVERT_ROW_6(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)
 
#define CONVERT_ROW_7(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)
 
#define CONVERT_ROW_8(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)
 
#define CONVERT_ROW_9(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)
 
#define CONVERT_ROW_10(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)
 
#define CONVERT_ROW_11(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)
 
#define CONVERT_ROW_12(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)
 
#define CONVERT_ROW_13(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)
 
#define CONVERT_ROW_14(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)
 
#define CONVERT_ROW_15(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)
 
#define CONVERT_ROW_16(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)
 
CONVERT_BLOCK

Apply convert_<data_type> to a block (BASENAME_SRC) and save to another block (BASENAME_DST)

Supported cases N=1,2,3,...,16.

Parameters
[in]MThe number of vectors to convert
[in]NThe size of the vectors
[in]DATA_TYPEThe data type of the vectors
[in]BASENAME_SRCThe basename of the source variables
[in]BASENAME_DSTThe basename of the destination variables
#define CONVERT_BLOCK_STR(M, N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)    CONVERT_ROW_##M(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)
 
#define CONVERT_BLOCK(M, N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)    CONVERT_BLOCK_STR(M, N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)
 

Macro Definition Documentation

◆ ACTIVATION_BLOCK

#define ACTIVATION_BLOCK (   N,
  ACTIVATION_TYPE,
  DATA_TYPE,
  BASENAME,
  A_VAL,
  B_VAL 
)     ACTIVATION_BLOCK_STR(N, ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)

Definition at line 1128 of file gemm_helpers.h.

◆ ACTIVATION_BLOCK_STR

#define ACTIVATION_BLOCK_STR (   N,
  ACTIVATION_TYPE,
  DATA_TYPE,
  BASENAME,
  A_VAL,
  B_VAL 
)     ACTIVATION_ROW_##N(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)

Definition at line 1126 of file gemm_helpers.h.

◆ ACTIVATION_ROW_1

#define ACTIVATION_ROW_1 (   ACTIVATION_TYPE,
  DATA_TYPE,
  BASENAME,
  A_VAL,
  B_VAL 
)     BASENAME##0 = ACTIVATION(ACTIVATION_TYPE, DATA_TYPE, BASENAME##0, A_VAL, B_VAL);

Definition at line 1049 of file gemm_helpers.h.

◆ ACTIVATION_ROW_10

#define ACTIVATION_ROW_10 (   ACTIVATION_TYPE,
  DATA_TYPE,
  BASENAME,
  A_VAL,
  B_VAL 
)
Value:
ACTIVATION_ROW_9(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL) \
BASENAME##9 = ACTIVATION(ACTIVATION_TYPE, DATA_TYPE, BASENAME##9, A_VAL, B_VAL);
#define ACTIVATION(op, DATA_TYPE, x, A_VAL, B_VAL)
#define ACTIVATION_ROW_9(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)

Definition at line 1084 of file gemm_helpers.h.

◆ ACTIVATION_ROW_11

#define ACTIVATION_ROW_11 (   ACTIVATION_TYPE,
  DATA_TYPE,
  BASENAME,
  A_VAL,
  B_VAL 
)
Value:
ACTIVATION_ROW_10(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL) \
BASENAME##A = ACTIVATION(ACTIVATION_TYPE, DATA_TYPE, BASENAME##A, A_VAL, B_VAL);
#define ACTIVATION_ROW_10(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)

Definition at line 1088 of file gemm_helpers.h.

◆ ACTIVATION_ROW_12

#define ACTIVATION_ROW_12 (   ACTIVATION_TYPE,
  DATA_TYPE,
  BASENAME,
  A_VAL,
  B_VAL 
)
Value:
ACTIVATION_ROW_11(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL) \
BASENAME##B = ACTIVATION(ACTIVATION_TYPE, DATA_TYPE, BASENAME##B, A_VAL, B_VAL);
#define ACTIVATION_ROW_11(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)

Definition at line 1092 of file gemm_helpers.h.

◆ ACTIVATION_ROW_13

#define ACTIVATION_ROW_13 (   ACTIVATION_TYPE,
  DATA_TYPE,
  BASENAME,
  A_VAL,
  B_VAL 
)
Value:
ACTIVATION_ROW_12(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL) \
BASENAME##C = ACTIVATION(ACTIVATION_TYPE, DATA_TYPE, BASENAME##C, A_VAL, B_VAL);
#define ACTIVATION_ROW_12(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)

Definition at line 1096 of file gemm_helpers.h.

◆ ACTIVATION_ROW_14

#define ACTIVATION_ROW_14 (   ACTIVATION_TYPE,
  DATA_TYPE,
  BASENAME,
  A_VAL,
  B_VAL 
)
Value:
ACTIVATION_ROW_13(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL) \
BASENAME##D = ACTIVATION(ACTIVATION_TYPE, DATA_TYPE, BASENAME##D, A_VAL, B_VAL);
#define ACTIVATION_ROW_13(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)

Definition at line 1100 of file gemm_helpers.h.

◆ ACTIVATION_ROW_15

#define ACTIVATION_ROW_15 (   ACTIVATION_TYPE,
  DATA_TYPE,
  BASENAME,
  A_VAL,
  B_VAL 
)
Value:
ACTIVATION_ROW_14(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL) \
BASENAME##E = ACTIVATION(ACTIVATION_TYPE, DATA_TYPE, BASENAME##E, A_VAL, B_VAL);
#define ACTIVATION_ROW_14(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)

Definition at line 1104 of file gemm_helpers.h.

◆ ACTIVATION_ROW_16

#define ACTIVATION_ROW_16 (   ACTIVATION_TYPE,
  DATA_TYPE,
  BASENAME,
  A_VAL,
  B_VAL 
)
Value:
ACTIVATION_ROW_15(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL) \
BASENAME##F = ACTIVATION(ACTIVATION_TYPE, DATA_TYPE, BASENAME##F, A_VAL, B_VAL);
#define ACTIVATION_ROW_15(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)

Definition at line 1108 of file gemm_helpers.h.

◆ ACTIVATION_ROW_2

#define ACTIVATION_ROW_2 (   ACTIVATION_TYPE,
  DATA_TYPE,
  BASENAME,
  A_VAL,
  B_VAL 
)
Value:
ACTIVATION_ROW_1(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL) \
BASENAME##1 = ACTIVATION(ACTIVATION_TYPE, DATA_TYPE, BASENAME##1, A_VAL, B_VAL);
#define ACTIVATION_ROW_1(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)

Definition at line 1052 of file gemm_helpers.h.

◆ ACTIVATION_ROW_3

#define ACTIVATION_ROW_3 (   ACTIVATION_TYPE,
  DATA_TYPE,
  BASENAME,
  A_VAL,
  B_VAL 
)
Value:
ACTIVATION_ROW_2(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL) \
BASENAME##2 = ACTIVATION(ACTIVATION_TYPE, DATA_TYPE, BASENAME##2, A_VAL, B_VAL);
#define ACTIVATION_ROW_2(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)

Definition at line 1056 of file gemm_helpers.h.

◆ ACTIVATION_ROW_4

#define ACTIVATION_ROW_4 (   ACTIVATION_TYPE,
  DATA_TYPE,
  BASENAME,
  A_VAL,
  B_VAL 
)
Value:
ACTIVATION_ROW_3(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL) \
BASENAME##3 = ACTIVATION(ACTIVATION_TYPE, DATA_TYPE, BASENAME##3, A_VAL, B_VAL);
#define ACTIVATION_ROW_3(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)

Definition at line 1060 of file gemm_helpers.h.

◆ ACTIVATION_ROW_5

#define ACTIVATION_ROW_5 (   ACTIVATION_TYPE,
  DATA_TYPE,
  BASENAME,
  A_VAL,
  B_VAL 
)
Value:
ACTIVATION_ROW_4(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL) \
BASENAME##4 = ACTIVATION(ACTIVATION_TYPE, DATA_TYPE, BASENAME##4, A_VAL, B_VAL);
#define ACTIVATION_ROW_4(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)

Definition at line 1064 of file gemm_helpers.h.

◆ ACTIVATION_ROW_6

#define ACTIVATION_ROW_6 (   ACTIVATION_TYPE,
  DATA_TYPE,
  BASENAME,
  A_VAL,
  B_VAL 
)
Value:
ACTIVATION_ROW_5(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL) \
BASENAME##5 = ACTIVATION(ACTIVATION_TYPE, DATA_TYPE, BASENAME##5, A_VAL, B_VAL);
#define ACTIVATION_ROW_5(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)

Definition at line 1068 of file gemm_helpers.h.

◆ ACTIVATION_ROW_7

#define ACTIVATION_ROW_7 (   ACTIVATION_TYPE,
  DATA_TYPE,
  BASENAME,
  A_VAL,
  B_VAL 
)
Value:
ACTIVATION_ROW_6(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL) \
BASENAME##6 = ACTIVATION(ACTIVATION_TYPE, DATA_TYPE, BASENAME##6, A_VAL, B_VAL);
#define ACTIVATION_ROW_6(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)

Definition at line 1072 of file gemm_helpers.h.

◆ ACTIVATION_ROW_8

#define ACTIVATION_ROW_8 (   ACTIVATION_TYPE,
  DATA_TYPE,
  BASENAME,
  A_VAL,
  B_VAL 
)
Value:
ACTIVATION_ROW_7(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL) \
BASENAME##7 = ACTIVATION(ACTIVATION_TYPE, DATA_TYPE, BASENAME##7, A_VAL, B_VAL);
#define ACTIVATION_ROW_7(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)

Definition at line 1076 of file gemm_helpers.h.

◆ ACTIVATION_ROW_9

#define ACTIVATION_ROW_9 (   ACTIVATION_TYPE,
  DATA_TYPE,
  BASENAME,
  A_VAL,
  B_VAL 
)
Value:
ACTIVATION_ROW_8(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL) \
BASENAME##8 = ACTIVATION(ACTIVATION_TYPE, DATA_TYPE, BASENAME##8, A_VAL, B_VAL);
#define ACTIVATION_ROW_8(ACTIVATION_TYPE, DATA_TYPE, BASENAME, A_VAL, B_VAL)

Definition at line 1080 of file gemm_helpers.h.

◆ ADD_BLOCK

#define ADD_BLOCK (   N,
  BASENAME,
  BIAS 
)    ADD_BLOCK_STR(N, BASENAME, BIAS)

Definition at line 953 of file gemm_helpers.h.

◆ ADD_BLOCK_BROADCAST

#define ADD_BLOCK_BROADCAST (   N,
  BASENAME,
  BIAS 
)    ADD_BLOCK_BROADCAST_STR(N, BASENAME, BIAS)

Definition at line 1036 of file gemm_helpers.h.

◆ ADD_BLOCK_BROADCAST_STR

#define ADD_BLOCK_BROADCAST_STR (   N,
  BASENAME,
  BIAS 
)    ADD_ROW_BROADCAST_##N(BASENAME, BIAS)

Definition at line 1035 of file gemm_helpers.h.

◆ ADD_BLOCK_STR

#define ADD_BLOCK_STR (   N,
  BASENAME,
  BIAS 
)    ADD_ROW_##N(BASENAME, BIAS)

Definition at line 952 of file gemm_helpers.h.

◆ ADD_ROW_1

#define ADD_ROW_1 (   BASENAME,
  BIAS 
)    BASENAME##0 += BIAS##0;

Definition at line 878 of file gemm_helpers.h.

◆ ADD_ROW_10

#define ADD_ROW_10 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_9(BASENAME, BIAS) \
BASENAME##9 += BIAS##9;
#define ADD_ROW_9(BASENAME, BIAS)

Definition at line 912 of file gemm_helpers.h.

◆ ADD_ROW_11

#define ADD_ROW_11 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_10(BASENAME, BIAS) \
BASENAME##A += BIAS##A;
#define ADD_ROW_10(BASENAME, BIAS)

Definition at line 916 of file gemm_helpers.h.

◆ ADD_ROW_12

#define ADD_ROW_12 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_11(BASENAME, BIAS) \
BASENAME##B += BIAS##B;
#define ADD_ROW_11(BASENAME, BIAS)

Definition at line 920 of file gemm_helpers.h.

◆ ADD_ROW_13

#define ADD_ROW_13 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_12(BASENAME, BIAS) \
BASENAME##C += BIAS##C;
#define ADD_ROW_12(BASENAME, BIAS)

Definition at line 924 of file gemm_helpers.h.

◆ ADD_ROW_14

#define ADD_ROW_14 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_13(BASENAME, BIAS) \
BASENAME##D += BIAS##D;
#define ADD_ROW_13(BASENAME, BIAS)

Definition at line 928 of file gemm_helpers.h.

◆ ADD_ROW_15

#define ADD_ROW_15 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_14(BASENAME, BIAS) \
BASENAME##E += BIAS##E;
#define ADD_ROW_14(BASENAME, BIAS)

Definition at line 932 of file gemm_helpers.h.

◆ ADD_ROW_16

#define ADD_ROW_16 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_15(BASENAME, BIAS) \
BASENAME##F += BIAS##F;
#define ADD_ROW_15(BASENAME, BIAS)

Definition at line 936 of file gemm_helpers.h.

◆ ADD_ROW_2

#define ADD_ROW_2 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_1(BASENAME, BIAS) \
BASENAME##1 += BIAS##1;
#define ADD_ROW_1(BASENAME, BIAS)

Definition at line 880 of file gemm_helpers.h.

◆ ADD_ROW_3

#define ADD_ROW_3 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_2(BASENAME, BIAS) \
BASENAME##2 += BIAS##2;
#define ADD_ROW_2(BASENAME, BIAS)

Definition at line 884 of file gemm_helpers.h.

◆ ADD_ROW_4

#define ADD_ROW_4 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_3(BASENAME, BIAS) \
BASENAME##3 += BIAS##3;
#define ADD_ROW_3(BASENAME, BIAS)

Definition at line 888 of file gemm_helpers.h.

◆ ADD_ROW_5

#define ADD_ROW_5 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_4(BASENAME, BIAS) \
BASENAME##4 += BIAS##4;
#define ADD_ROW_4(BASENAME, BIAS)

Definition at line 892 of file gemm_helpers.h.

◆ ADD_ROW_6

#define ADD_ROW_6 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_5(BASENAME, BIAS) \
BASENAME##5 += BIAS##5;
#define ADD_ROW_5(BASENAME, BIAS)

Definition at line 896 of file gemm_helpers.h.

◆ ADD_ROW_7

#define ADD_ROW_7 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_6(BASENAME, BIAS) \
BASENAME##6 += BIAS##6;
#define ADD_ROW_6(BASENAME, BIAS)

Definition at line 900 of file gemm_helpers.h.

◆ ADD_ROW_8

#define ADD_ROW_8 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_7(BASENAME, BIAS) \
BASENAME##7 += BIAS##7;
#define ADD_ROW_7(BASENAME, BIAS)

Definition at line 904 of file gemm_helpers.h.

◆ ADD_ROW_9

#define ADD_ROW_9 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_8(BASENAME, BIAS) \
BASENAME##8 += BIAS##8;
#define ADD_ROW_8(BASENAME, BIAS)

Definition at line 908 of file gemm_helpers.h.

◆ ADD_ROW_BROADCAST_1

#define ADD_ROW_BROADCAST_1 (   BASENAME,
  BIAS 
)    BASENAME##0 += BIAS;

Definition at line 963 of file gemm_helpers.h.

◆ ADD_ROW_BROADCAST_10

#define ADD_ROW_BROADCAST_10 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_BROADCAST_9(BASENAME, BIAS) \
BASENAME##9 += BIAS;
#define ADD_ROW_BROADCAST_9(BASENAME, BIAS)

Definition at line 997 of file gemm_helpers.h.

◆ ADD_ROW_BROADCAST_11

#define ADD_ROW_BROADCAST_11 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_BROADCAST_10(BASENAME, BIAS) \
BASENAME##A += BIAS;
#define ADD_ROW_BROADCAST_10(BASENAME, BIAS)

Definition at line 1001 of file gemm_helpers.h.

◆ ADD_ROW_BROADCAST_12

#define ADD_ROW_BROADCAST_12 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_BROADCAST_11(BASENAME, BIAS) \
BASENAME##B += BIAS;
#define ADD_ROW_BROADCAST_11(BASENAME, BIAS)

Definition at line 1005 of file gemm_helpers.h.

◆ ADD_ROW_BROADCAST_13

#define ADD_ROW_BROADCAST_13 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_BROADCAST_12(BASENAME, BIAS) \
BASENAME##C += BIAS;
#define ADD_ROW_BROADCAST_12(BASENAME, BIAS)

Definition at line 1009 of file gemm_helpers.h.

◆ ADD_ROW_BROADCAST_14

#define ADD_ROW_BROADCAST_14 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_BROADCAST_13(BASENAME, BIAS) \
BASENAME##D += BIAS;
#define ADD_ROW_BROADCAST_13(BASENAME, BIAS)

Definition at line 1013 of file gemm_helpers.h.

◆ ADD_ROW_BROADCAST_15

#define ADD_ROW_BROADCAST_15 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_BROADCAST_14(BASENAME, BIAS) \
BASENAME##E += BIAS;
#define ADD_ROW_BROADCAST_14(BASENAME, BIAS)

Definition at line 1017 of file gemm_helpers.h.

◆ ADD_ROW_BROADCAST_16

#define ADD_ROW_BROADCAST_16 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_BROADCAST_15(BASENAME, BIAS) \
BASENAME##F += BIAS;
#define ADD_ROW_BROADCAST_15(BASENAME, BIAS)

Definition at line 1021 of file gemm_helpers.h.

◆ ADD_ROW_BROADCAST_2

#define ADD_ROW_BROADCAST_2 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_BROADCAST_1(BASENAME, BIAS) \
BASENAME##1 += BIAS;
#define ADD_ROW_BROADCAST_1(BASENAME, BIAS)

Definition at line 965 of file gemm_helpers.h.

◆ ADD_ROW_BROADCAST_3

#define ADD_ROW_BROADCAST_3 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_BROADCAST_2(BASENAME, BIAS) \
BASENAME##2 += BIAS;
#define ADD_ROW_BROADCAST_2(BASENAME, BIAS)

Definition at line 969 of file gemm_helpers.h.

◆ ADD_ROW_BROADCAST_4

#define ADD_ROW_BROADCAST_4 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_BROADCAST_3(BASENAME, BIAS) \
BASENAME##3 += BIAS;
#define ADD_ROW_BROADCAST_3(BASENAME, BIAS)

Definition at line 973 of file gemm_helpers.h.

◆ ADD_ROW_BROADCAST_5

#define ADD_ROW_BROADCAST_5 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_BROADCAST_4(BASENAME, BIAS) \
BASENAME##4 += BIAS;
#define ADD_ROW_BROADCAST_4(BASENAME, BIAS)

Definition at line 977 of file gemm_helpers.h.

◆ ADD_ROW_BROADCAST_6

#define ADD_ROW_BROADCAST_6 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_BROADCAST_5(BASENAME, BIAS) \
BASENAME##5 += BIAS;
#define ADD_ROW_BROADCAST_5(BASENAME, BIAS)

Definition at line 981 of file gemm_helpers.h.

◆ ADD_ROW_BROADCAST_7

#define ADD_ROW_BROADCAST_7 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_BROADCAST_6(BASENAME, BIAS) \
BASENAME##6 += BIAS;
#define ADD_ROW_BROADCAST_6(BASENAME, BIAS)

Definition at line 985 of file gemm_helpers.h.

◆ ADD_ROW_BROADCAST_8

#define ADD_ROW_BROADCAST_8 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_BROADCAST_7(BASENAME, BIAS) \
BASENAME##7 += BIAS;
#define ADD_ROW_BROADCAST_7(BASENAME, BIAS)

Definition at line 989 of file gemm_helpers.h.

◆ ADD_ROW_BROADCAST_9

#define ADD_ROW_BROADCAST_9 (   BASENAME,
  BIAS 
)
Value:
ADD_ROW_BROADCAST_8(BASENAME, BIAS) \
BASENAME##8 += BIAS;
#define ADD_ROW_BROADCAST_8(BASENAME, BIAS)

Definition at line 993 of file gemm_helpers.h.

◆ CALCULATE_Z_OFFSET

#define CALCULATE_Z_OFFSET (   M0,
  DATA_TYPE,
  Z,
  Y,
  HEIGHT_GEMM3D,
  DEPTH_GEMM3D,
  CROSS_PLANE_PAD,
  STRIDE_Y 
)
Value:
CALCULATE_Z_OFFSET_STR(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, \
STRIDE_Y)
#define CALCULATE_Z_OFFSET_STR(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, STRIDE_Y)

Definition at line 389 of file gemm_helpers.h.

◆ CALCULATE_Z_OFFSET_1

#define CALCULATE_Z_OFFSET_1 (   M0,
  DATA_TYPE,
  Z,
  Y,
  HEIGHT_GEMM3D,
  DEPTH_GEMM3D,
  CROSS_PLANE_PAD,
  STRIDE_Y 
)
Value:
Z##0 = (0 + (DATA_TYPE)(Y * (DATA_TYPE)M0)) / (DATA_TYPE)HEIGHT_GEMM3D; \
Z##0 = min((DATA_TYPE)(DEPTH_GEMM3D - 1), Z##0); \
Z##0 *= (CROSS_PLANE_PAD * STRIDE_Y);

Definition at line 289 of file gemm_helpers.h.

◆ CALCULATE_Z_OFFSET_2

#define CALCULATE_Z_OFFSET_2 (   M0,
  DATA_TYPE,
  Z,
  Y,
  HEIGHT_GEMM3D,
  DEPTH_GEMM3D,
  CROSS_PLANE_PAD,
  STRIDE_Y 
)
Value:
CALCULATE_Z_OFFSET_1(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, \
STRIDE_Y) \
Z##1 = (1 + (DATA_TYPE)(Y * (DATA_TYPE)M0)) / (DATA_TYPE)HEIGHT_GEMM3D; \
Z##1 = min((DATA_TYPE)(DEPTH_GEMM3D - 1), Z##1); \
Z##1 *= (CROSS_PLANE_PAD * STRIDE_Y);
#define CALCULATE_Z_OFFSET_1(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, STRIDE_Y)

Definition at line 295 of file gemm_helpers.h.

◆ CALCULATE_Z_OFFSET_3

#define CALCULATE_Z_OFFSET_3 (   M0,
  DATA_TYPE,
  Z,
  Y,
  HEIGHT_GEMM3D,
  DEPTH_GEMM3D,
  CROSS_PLANE_PAD,
  STRIDE_Y 
)
Value:
CALCULATE_Z_OFFSET_2(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, \
STRIDE_Y) \
Z##2 = (2 + (DATA_TYPE)(Y * (DATA_TYPE)M0)) / (DATA_TYPE)HEIGHT_GEMM3D; \
Z##2 = min((DATA_TYPE)(DEPTH_GEMM3D - 1), Z##2); \
Z##2 *= (CROSS_PLANE_PAD * STRIDE_Y);
#define CALCULATE_Z_OFFSET_2(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, STRIDE_Y)

Definition at line 303 of file gemm_helpers.h.

◆ CALCULATE_Z_OFFSET_4

#define CALCULATE_Z_OFFSET_4 (   M0,
  DATA_TYPE,
  Z,
  Y,
  HEIGHT_GEMM3D,
  DEPTH_GEMM3D,
  CROSS_PLANE_PAD,
  STRIDE_Y 
)
Value:
CALCULATE_Z_OFFSET_3(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, \
STRIDE_Y) \
Z##3 = (3 + (DATA_TYPE)(Y * (DATA_TYPE)M0)) / (DATA_TYPE)HEIGHT_GEMM3D; \
Z##3 = min((DATA_TYPE)(DEPTH_GEMM3D - 1), Z##3); \
Z##3 *= (CROSS_PLANE_PAD * STRIDE_Y);
#define CALCULATE_Z_OFFSET_3(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, STRIDE_Y)

Definition at line 311 of file gemm_helpers.h.

◆ CALCULATE_Z_OFFSET_5

#define CALCULATE_Z_OFFSET_5 (   M0,
  DATA_TYPE,
  Z,
  Y,
  HEIGHT_GEMM3D,
  DEPTH_GEMM3D,
  CROSS_PLANE_PAD,
  STRIDE_Y 
)
Value:
CALCULATE_Z_OFFSET_4(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, \
STRIDE_Y) \
Z##4 = (4 + (DATA_TYPE)(Y * (DATA_TYPE)M0)) / (DATA_TYPE)HEIGHT_GEMM3D; \
Z##4 = min((DATA_TYPE)(DEPTH_GEMM3D - 1), Z##4); \
Z##4 *= (CROSS_PLANE_PAD * STRIDE_Y);
#define CALCULATE_Z_OFFSET_4(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, STRIDE_Y)

Definition at line 319 of file gemm_helpers.h.

◆ CALCULATE_Z_OFFSET_6

#define CALCULATE_Z_OFFSET_6 (   M0,
  DATA_TYPE,
  Z,
  Y,
  HEIGHT_GEMM3D,
  DEPTH_GEMM3D,
  CROSS_PLANE_PAD,
  STRIDE_Y 
)
Value:
CALCULATE_Z_OFFSET_5(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, \
STRIDE_Y) \
Z##5 = (5 + (DATA_TYPE)(Y * (DATA_TYPE)M0)) / (DATA_TYPE)HEIGHT_GEMM3D; \
Z##5 = min((DATA_TYPE)(DEPTH_GEMM3D - 1), Z##5); \
Z##5 *= (CROSS_PLANE_PAD * STRIDE_Y);
#define CALCULATE_Z_OFFSET_5(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, STRIDE_Y)

Definition at line 327 of file gemm_helpers.h.

◆ CALCULATE_Z_OFFSET_7

#define CALCULATE_Z_OFFSET_7 (   M0,
  DATA_TYPE,
  Z,
  Y,
  HEIGHT_GEMM3D,
  DEPTH_GEMM3D,
  CROSS_PLANE_PAD,
  STRIDE_Y 
)
Value:
CALCULATE_Z_OFFSET_6(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, \
STRIDE_Y) \
Z##6 = (6 + (DATA_TYPE)(Y * (DATA_TYPE)M0)) / (DATA_TYPE)HEIGHT_GEMM3D; \
Z##6 = min((DATA_TYPE)(DEPTH_GEMM3D - 1), Z##6); \
Z##6 *= (CROSS_PLANE_PAD * STRIDE_Y);
#define CALCULATE_Z_OFFSET_6(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, STRIDE_Y)

Definition at line 335 of file gemm_helpers.h.

◆ CALCULATE_Z_OFFSET_8

#define CALCULATE_Z_OFFSET_8 (   M0,
  DATA_TYPE,
  Z,
  Y,
  HEIGHT_GEMM3D,
  DEPTH_GEMM3D,
  CROSS_PLANE_PAD,
  STRIDE_Y 
)
Value:
CALCULATE_Z_OFFSET_7(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, \
STRIDE_Y) \
Z##7 = (7 + (DATA_TYPE)(Y * (DATA_TYPE)M0)) / (DATA_TYPE)HEIGHT_GEMM3D; \
Z##7 = min((DATA_TYPE)(DEPTH_GEMM3D - 1), Z##7); \
Z##7 *= (CROSS_PLANE_PAD * STRIDE_Y);
#define CALCULATE_Z_OFFSET_7(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, STRIDE_Y)

Definition at line 343 of file gemm_helpers.h.

◆ CALCULATE_Z_OFFSET_STR

#define CALCULATE_Z_OFFSET_STR (   M0,
  DATA_TYPE,
  Z,
  Y,
  HEIGHT_GEMM3D,
  DEPTH_GEMM3D,
  CROSS_PLANE_PAD,
  STRIDE_Y 
)
Value:
CALCULATE_Z_OFFSET_##M0(M0, DATA_TYPE, Z, Y, HEIGHT_GEMM3D, DEPTH_GEMM3D, CROSS_PLANE_PAD, \
STRIDE_Y)

Definition at line 385 of file gemm_helpers.h.

◆ COLUMN_VECTOR

#define COLUMN_VECTOR (   K0,
  IDX_COL,
  BASENAME,
  B,
  TYPE 
)
Value:
(IDX_COL, BASENAME, B, TYPE);
#define COLUMN_VECTOR(K0, IDX_COL, BASENAME, B, TYPE)
#define CONCAT(a, b)
Definition helpers.h:71

Create column vectors to contain the values at the given index for a set of given vectors

Parameters
[in]K0The number of source vectors
[in]IDX_COLThe index value
[in]BASENAMEThe basename of the destination vectors
[in]BThe basename of the source vectors
[in]TYPEThe data type of the destination vectors

Definition at line 841 of file gemm_helpers.h.

◆ COLUMN_VECTOR1

#define COLUMN_VECTOR1 (   IDX_COL,
  BASENAME,
  X,
  TYPE 
)     TYPE BASENAME##IDX_COL = (TYPE)((X##0).s##IDX_COL);

Definition at line 737 of file gemm_helpers.h.

◆ COLUMN_VECTOR16

#define COLUMN_VECTOR16 (   IDX_COL,
  BASENAME,
  X,
  TYPE 
)
Value:
VEC_DATA_TYPE(TYPE, 16) \
BASENAME##IDX_COL = (VEC_DATA_TYPE(TYPE, 16))( \
(X##0).s##IDX_COL, (X##1).s##IDX_COL, (X##2).s##IDX_COL, (X##3).s##IDX_COL, (X##4).s##IDX_COL, \
(X##5).s##IDX_COL, (X##6).s##IDX_COL, (X##7).s##IDX_COL, (X##8).s##IDX_COL, (X##9).s##IDX_COL, \
(X##A).s##IDX_COL, (X##B).s##IDX_COL, (X##C).s##IDX_COL, (X##D).s##IDX_COL, (X##E).s##IDX_COL, \
(X##F).s##IDX_COL);
#define VEC_DATA_TYPE(type, size)
Definition helpers.h:275

Definition at line 755 of file gemm_helpers.h.

◆ COLUMN_VECTOR2

#define COLUMN_VECTOR2 (   IDX_COL,
  BASENAME,
  X,
  TYPE 
)
Value:
VEC_DATA_TYPE(TYPE, 2) \
BASENAME##IDX_COL = (VEC_DATA_TYPE(TYPE, 2))((X##0).s##IDX_COL, (X##1).s##IDX_COL);

Definition at line 739 of file gemm_helpers.h.

◆ COLUMN_VECTOR3

#define COLUMN_VECTOR3 (   IDX_COL,
  BASENAME,
  X,
  TYPE 
)
Value:
VEC_DATA_TYPE(TYPE, 3) \
BASENAME##IDX_COL = \
(VEC_DATA_TYPE(TYPE, 3))((X##0).s##IDX_COL, (X##1).s##IDX_COL, (X##2).s##IDX_COL);

Definition at line 742 of file gemm_helpers.h.

◆ COLUMN_VECTOR4

#define COLUMN_VECTOR4 (   IDX_COL,
  BASENAME,
  X,
  TYPE 
)
Value:
VEC_DATA_TYPE(TYPE, 4) \
BASENAME##IDX_COL = (VEC_DATA_TYPE(TYPE, 4))((X##0).s##IDX_COL, (X##1).s##IDX_COL, \
(X##2).s##IDX_COL, (X##3).s##IDX_COL);

Definition at line 746 of file gemm_helpers.h.

◆ COLUMN_VECTOR8

#define COLUMN_VECTOR8 (   IDX_COL,
  BASENAME,
  X,
  TYPE 
)
Value:
VEC_DATA_TYPE(TYPE, 8) \
BASENAME##IDX_COL = (VEC_DATA_TYPE(TYPE, 8))( \
(X##0).s##IDX_COL, (X##1).s##IDX_COL, (X##2).s##IDX_COL, (X##3).s##IDX_COL, (X##4).s##IDX_COL, \
(X##5).s##IDX_COL, (X##6).s##IDX_COL, (X##7).s##IDX_COL);

Definition at line 750 of file gemm_helpers.h.

◆ COLUMN_VECTOR_SCALAR

#define COLUMN_VECTOR_SCALAR (   K0,
  IDX_COL,
  BASENAME,
  B,
  TYPE 
)
Value:
(IDX_COL, BASENAME, B, TYPE);
#define COLUMN_VECTOR_SCALAR(K0, IDX_COL, BASENAME, B, TYPE)

Create column vectors to contain the values at the given index. Utility macro for transposing a column-vector

Parameters
[in]K0The number of source vectors
[in]IDX_COLThe index value
[in]BASENAMEThe basename of the destination vectors
[in]BThe basename of the source vectors
[in]TYPEThe data type of the destination vectors

Definition at line 854 of file gemm_helpers.h.

◆ COLUMN_VECTOR_SCALAR1

#define COLUMN_VECTOR_SCALAR1 (   IDX_COL,
  BASENAME,
  X,
  TYPE 
)    TYPE BASENAME##IDX_COL = (TYPE)((X##0));

Definition at line 774 of file gemm_helpers.h.

◆ COLUMN_VECTOR_SCALAR16

#define COLUMN_VECTOR_SCALAR16 (   IDX_COL,
  BASENAME,
  X,
  TYPE 
)
Value:
VEC_DATA_TYPE(TYPE, 16) \
BASENAME##IDX_COL = \
(VEC_DATA_TYPE(TYPE, 16))((X##0), (X##1), (X##2), (X##3), (X##4), (X##5), (X##6), (X##7), \
(X##8), (X##9), (X##A), (X##B), (X##C), (X##D), (X##E), (X##F));

Definition at line 788 of file gemm_helpers.h.

◆ COLUMN_VECTOR_SCALAR2

#define COLUMN_VECTOR_SCALAR2 (   IDX_COL,
  BASENAME,
  X,
  TYPE 
)
Value:
VEC_DATA_TYPE(TYPE, 2) \
BASENAME##IDX_COL = (VEC_DATA_TYPE(TYPE, 2))((X##0), (X##1));

Definition at line 775 of file gemm_helpers.h.

◆ COLUMN_VECTOR_SCALAR3

#define COLUMN_VECTOR_SCALAR3 (   IDX_COL,
  BASENAME,
  X,
  TYPE 
)
Value:
VEC_DATA_TYPE(TYPE, 3) \
BASENAME##IDX_COL = (VEC_DATA_TYPE(TYPE, 3))((X##0), (X##1), (X##2));

Definition at line 778 of file gemm_helpers.h.

◆ COLUMN_VECTOR_SCALAR4

#define COLUMN_VECTOR_SCALAR4 (   IDX_COL,
  BASENAME,
  X,
  TYPE 
)
Value:
VEC_DATA_TYPE(TYPE, 4) \
BASENAME##IDX_COL = (VEC_DATA_TYPE(TYPE, 4))((X##0), (X##1), (X##2), (X##3));

Definition at line 781 of file gemm_helpers.h.

◆ COLUMN_VECTOR_SCALAR8

#define COLUMN_VECTOR_SCALAR8 (   IDX_COL,
  BASENAME,
  X,
  TYPE 
)
Value:
VEC_DATA_TYPE(TYPE, 8) \
BASENAME##IDX_COL = \
(VEC_DATA_TYPE(TYPE, 8))((X##0), (X##1), (X##2), (X##3), (X##4), (X##5), (X##6), (X##7));

Definition at line 784 of file gemm_helpers.h.

◆ CONVERT_BLOCK

#define CONVERT_BLOCK (   M,
  N,
  DATA_TYPE,
  BASENAME_SRC,
  BASENAME_DST 
)     CONVERT_BLOCK_STR(M, N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)

Definition at line 1233 of file gemm_helpers.h.

◆ CONVERT_BLOCK_STR

#define CONVERT_BLOCK_STR (   M,
  N,
  DATA_TYPE,
  BASENAME_SRC,
  BASENAME_DST 
)     CONVERT_ROW_##M(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)

Definition at line 1231 of file gemm_helpers.h.

◆ CONVERT_ROW_1

#define CONVERT_ROW_1 (   N,
  DATA_TYPE,
  BASENAME_SRC,
  BASENAME_DST 
)
Value:
VEC_DATA_TYPE(DATA_TYPE, N) \
BASENAME_DST##0 = CONVERT(BASENAME_SRC##0, VEC_DATA_TYPE(DATA_TYPE, N));
#define CONVERT(x, type)
Definition helpers.h:281

Definition at line 1140 of file gemm_helpers.h.

◆ CONVERT_ROW_10

#define CONVERT_ROW_10 (   N,
  DATA_TYPE,
  BASENAME_SRC,
  BASENAME_DST 
)
Value:
CONVERT_ROW_9(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST) \
VEC_DATA_TYPE(DATA_TYPE, N) \
BASENAME_DST##9 = CONVERT(BASENAME_SRC##9, VEC_DATA_TYPE(DATA_TYPE, N));
#define CONVERT_ROW_9(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)

Definition at line 1184 of file gemm_helpers.h.

◆ CONVERT_ROW_11

#define CONVERT_ROW_11 (   N,
  DATA_TYPE,
  BASENAME_SRC,
  BASENAME_DST 
)
Value:
CONVERT_ROW_10(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST) \
VEC_DATA_TYPE(DATA_TYPE, N) \
BASENAME_DST##A = CONVERT(BASENAME_SRC##A, VEC_DATA_TYPE(DATA_TYPE, N));
#define CONVERT_ROW_10(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)

Definition at line 1189 of file gemm_helpers.h.

◆ CONVERT_ROW_12

#define CONVERT_ROW_12 (   N,
  DATA_TYPE,
  BASENAME_SRC,
  BASENAME_DST 
)
Value:
CONVERT_ROW_11(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST) \
VEC_DATA_TYPE(DATA_TYPE, N) \
BASENAME_DST##B = CONVERT(BASENAME_SRC##B, VEC_DATA_TYPE(DATA_TYPE, N));
#define CONVERT_ROW_11(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)

Definition at line 1194 of file gemm_helpers.h.

◆ CONVERT_ROW_13

#define CONVERT_ROW_13 (   N,
  DATA_TYPE,
  BASENAME_SRC,
  BASENAME_DST 
)
Value:
CONVERT_ROW_12(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST) \
VEC_DATA_TYPE(DATA_TYPE, N) \
BASENAME_DST##C = CONVERT(BASENAME_SRC##C, VEC_DATA_TYPE(DATA_TYPE, N));
#define CONVERT_ROW_12(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)

Definition at line 1199 of file gemm_helpers.h.

◆ CONVERT_ROW_14

#define CONVERT_ROW_14 (   N,
  DATA_TYPE,
  BASENAME_SRC,
  BASENAME_DST 
)
Value:
CONVERT_ROW_13(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST) \
VEC_DATA_TYPE(DATA_TYPE, N) \
BASENAME_DST##D = CONVERT(BASENAME_SRC##D, VEC_DATA_TYPE(DATA_TYPE, N));
#define CONVERT_ROW_13(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)

Definition at line 1204 of file gemm_helpers.h.

◆ CONVERT_ROW_15

#define CONVERT_ROW_15 (   N,
  DATA_TYPE,
  BASENAME_SRC,
  BASENAME_DST 
)
Value:
CONVERT_ROW_14(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST) \
VEC_DATA_TYPE(DATA_TYPE, N) \
BASENAME_DST##E = CONVERT(BASENAME_SRC##E, VEC_DATA_TYPE(DATA_TYPE, N));
#define CONVERT_ROW_14(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)

Definition at line 1209 of file gemm_helpers.h.

◆ CONVERT_ROW_16

#define CONVERT_ROW_16 (   N,
  DATA_TYPE,
  BASENAME_SRC,
  BASENAME_DST 
)
Value:
CONVERT_ROW_15(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST) \
VEC_DATA_TYPE(DATA_TYPE, N) \
BASENAME_DST##F = CONVERT(BASENAME_SRC##F, VEC_DATA_TYPE(DATA_TYPE, N));
#define CONVERT_ROW_15(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)

Definition at line 1214 of file gemm_helpers.h.

◆ CONVERT_ROW_2

#define CONVERT_ROW_2 (   N,
  DATA_TYPE,
  BASENAME_SRC,
  BASENAME_DST 
)
Value:
CONVERT_ROW_1(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST) \
VEC_DATA_TYPE(DATA_TYPE, N) \
BASENAME_DST##1 = CONVERT(BASENAME_SRC##1, VEC_DATA_TYPE(DATA_TYPE, N));
#define CONVERT_ROW_1(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)

Definition at line 1144 of file gemm_helpers.h.

◆ CONVERT_ROW_3

#define CONVERT_ROW_3 (   N,
  DATA_TYPE,
  BASENAME_SRC,
  BASENAME_DST 
)
Value:
CONVERT_ROW_2(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST) \
VEC_DATA_TYPE(DATA_TYPE, N) \
BASENAME_DST##2 = CONVERT(BASENAME_SRC##2, VEC_DATA_TYPE(DATA_TYPE, N));
#define CONVERT_ROW_2(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)

Definition at line 1149 of file gemm_helpers.h.

◆ CONVERT_ROW_4

#define CONVERT_ROW_4 (   N,
  DATA_TYPE,
  BASENAME_SRC,
  BASENAME_DST 
)
Value:
CONVERT_ROW_3(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST) \
VEC_DATA_TYPE(DATA_TYPE, N) \
BASENAME_DST##3 = CONVERT(BASENAME_SRC##3, VEC_DATA_TYPE(DATA_TYPE, N));
#define CONVERT_ROW_3(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)

Definition at line 1154 of file gemm_helpers.h.

◆ CONVERT_ROW_5

#define CONVERT_ROW_5 (   N,
  DATA_TYPE,
  BASENAME_SRC,
  BASENAME_DST 
)
Value:
CONVERT_ROW_4(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST) \
VEC_DATA_TYPE(DATA_TYPE, N) \
BASENAME_DST##4 = CONVERT(BASENAME_SRC##4, VEC_DATA_TYPE(DATA_TYPE, N));
#define CONVERT_ROW_4(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)

Definition at line 1159 of file gemm_helpers.h.

◆ CONVERT_ROW_6

#define CONVERT_ROW_6 (   N,
  DATA_TYPE,
  BASENAME_SRC,
  BASENAME_DST 
)
Value:
CONVERT_ROW_5(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST) \
VEC_DATA_TYPE(DATA_TYPE, N) \
BASENAME_DST##5 = CONVERT(BASENAME_SRC##5, VEC_DATA_TYPE(DATA_TYPE, N));
#define CONVERT_ROW_5(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)

Definition at line 1164 of file gemm_helpers.h.

◆ CONVERT_ROW_7

#define CONVERT_ROW_7 (   N,
  DATA_TYPE,
  BASENAME_SRC,
  BASENAME_DST 
)
Value:
CONVERT_ROW_6(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST) \
VEC_DATA_TYPE(DATA_TYPE, N) \
BASENAME_DST##6 = CONVERT(BASENAME_SRC##6, VEC_DATA_TYPE(DATA_TYPE, N));
#define CONVERT_ROW_6(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)

Definition at line 1169 of file gemm_helpers.h.

◆ CONVERT_ROW_8

#define CONVERT_ROW_8 (   N,
  DATA_TYPE,
  BASENAME_SRC,
  BASENAME_DST 
)
Value:
CONVERT_ROW_7(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST) \
VEC_DATA_TYPE(DATA_TYPE, N) \
BASENAME_DST##7 = CONVERT(BASENAME_SRC##7, VEC_DATA_TYPE(DATA_TYPE, N));
#define CONVERT_ROW_7(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)

Definition at line 1174 of file gemm_helpers.h.

◆ CONVERT_ROW_9

#define CONVERT_ROW_9 (   N,
  DATA_TYPE,
  BASENAME_SRC,
  BASENAME_DST 
)
Value:
CONVERT_ROW_8(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST) \
VEC_DATA_TYPE(DATA_TYPE, N) \
BASENAME_DST##8 = CONVERT(BASENAME_SRC##8, VEC_DATA_TYPE(DATA_TYPE, N));
#define CONVERT_ROW_8(N, DATA_TYPE, BASENAME_SRC, BASENAME_DST)

Definition at line 1179 of file gemm_helpers.h.

◆ CONVERT_STORE_BLOCK

#define CONVERT_STORE_BLOCK (   M0,
  N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)     CONVERT_STORE_BLOCK_STR(M0, N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 638 of file gemm_helpers.h.

◆ CONVERT_STORE_BLOCK_STR

#define CONVERT_STORE_BLOCK_STR (   M0,
  N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)     CONVERT_STORE_ROW_##M0(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 636 of file gemm_helpers.h.

◆ CONVERT_STORE_ROW_1

#define CONVERT_STORE_ROW_1 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
VSTORE(N0) \
(CONVERT_SAT((BASENAME##0), VEC_DATA_TYPE(DATA_TYPE, N0)), 0, \
(__global DATA_TYPE *)(PTR + 0 * STRIDE_Y + Z##0));
#define CONVERT_SAT(x, type)
Definition helpers.h:284
#define VSTORE(size)
Definition helpers.h:217

Definition at line 497 of file gemm_helpers.h.

◆ CONVERT_STORE_ROW_10

#define CONVERT_STORE_ROW_10 (   N0,
  DATA,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
CONVERT_STORE_ROW_9(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(CONVERT_SAT((BASENAME##9), VEC_DATA_TYPE(DATA_TYPE, N0)), 0, \
(__global DATA_TYPE *)(PTR + 9 * STRIDE_Y + Z##9));
#define CONVERT_STORE_ROW_9(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 550 of file gemm_helpers.h.

◆ CONVERT_STORE_ROW_11

#define CONVERT_STORE_ROW_11 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
CONVERT_STORE_ROW_10(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(CONVERT_SAT((BASENAME##A), VEC_DATA_TYPE(DATA_TYPE, N0)), 0, \
(__global DATA_TYPE *)(PTR + 10 * STRIDE_Y + Z##A));
#define CONVERT_STORE_ROW_10(N0, DATA, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 556 of file gemm_helpers.h.

◆ CONVERT_STORE_ROW_12

#define CONVERT_STORE_ROW_12 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
CONVERT_STORE_ROW_11(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(CONVERT_SAT((BASENAME##B), VEC_DATA_TYPE(DATA_TYPE, N0)), 0, \
(__global DATA_TYPE *)(PTR + 11 * STRIDE_Y + Z##B));
#define CONVERT_STORE_ROW_11(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 562 of file gemm_helpers.h.

◆ CONVERT_STORE_ROW_13

#define CONVERT_STORE_ROW_13 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
CONVERT_STORE_ROW_12(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(CONVERT_SAT((BASENAME##C), VEC_DATA_TYPE(DATA_TYPE, N0)), 0, \
(__global DATA_TYPE *)(PTR + 12 * STRIDE_Y + Z##C));
#define CONVERT_STORE_ROW_12(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 568 of file gemm_helpers.h.

◆ CONVERT_STORE_ROW_14

#define CONVERT_STORE_ROW_14 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
CONVERT_STORE_ROW_13(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(CONVERT_SAT((BASENAME##D), VEC_DATA_TYPE(DATA_TYPE, N0)), 0, \
(__global DATA_TYPE *)(PTR + 13 * STRIDE_Y + Z##D));
#define CONVERT_STORE_ROW_13(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 574 of file gemm_helpers.h.

◆ CONVERT_STORE_ROW_15

#define CONVERT_STORE_ROW_15 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
CONVERT_STORE_ROW_14(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(CONVERT_SAT((BASENAME##E), VEC_DATA_TYPE(DATA_TYPE, N0)), 0, \
(__global DATA_TYPE *)(PTR + 14 * STRIDE_Y + Z##E));
#define CONVERT_STORE_ROW_14(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 580 of file gemm_helpers.h.

◆ CONVERT_STORE_ROW_16

#define CONVERT_STORE_ROW_16 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
CONVERT_STORE_ROW_15(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(CONVERT_SAT((BASENAME##F), VEC_DATA_TYPE(DATA_TYPE, N0)), 0, \
(__global DATA_TYPE *)(PTR + 15 * STRIDE_Y + Z##F));
#define CONVERT_STORE_ROW_15(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 586 of file gemm_helpers.h.

◆ CONVERT_STORE_ROW_2

#define CONVERT_STORE_ROW_2 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
CONVERT_STORE_ROW_1(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(CONVERT_SAT((BASENAME##1), VEC_DATA_TYPE(DATA_TYPE, N0)), 0, \
(__global DATA_TYPE *)(PTR + 1 * STRIDE_Y + Z##1));
#define CONVERT_STORE_ROW_1(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 502 of file gemm_helpers.h.

◆ CONVERT_STORE_ROW_3

#define CONVERT_STORE_ROW_3 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
CONVERT_STORE_ROW_2(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(CONVERT_SAT((BASENAME##2), VEC_DATA_TYPE(DATA_TYPE, N0)), 0, \
(__global DATA_TYPE *)(PTR + 2 * STRIDE_Y + Z##2));
#define CONVERT_STORE_ROW_2(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 508 of file gemm_helpers.h.

◆ CONVERT_STORE_ROW_4

#define CONVERT_STORE_ROW_4 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
CONVERT_STORE_ROW_3(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(CONVERT_SAT((BASENAME##3), VEC_DATA_TYPE(DATA_TYPE, N0)), 0, \
(__global DATA_TYPE *)(PTR + 3 * STRIDE_Y + Z##3));
#define CONVERT_STORE_ROW_3(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 514 of file gemm_helpers.h.

◆ CONVERT_STORE_ROW_5

#define CONVERT_STORE_ROW_5 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
CONVERT_STORE_ROW_4(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(CONVERT_SAT((BASENAME##4), VEC_DATA_TYPE(DATA_TYPE, N0)), 0, \
(__global DATA_TYPE *)(PTR + 4 * STRIDE_Y + Z##4));
#define CONVERT_STORE_ROW_4(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 520 of file gemm_helpers.h.

◆ CONVERT_STORE_ROW_6

#define CONVERT_STORE_ROW_6 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
CONVERT_STORE_ROW_5(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(CONVERT_SAT((BASENAME##5), VEC_DATA_TYPE(DATA_TYPE, N0)), 0, \
(__global DATA_TYPE *)(PTR + 5 * STRIDE_Y + Z##5));
#define CONVERT_STORE_ROW_5(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 526 of file gemm_helpers.h.

◆ CONVERT_STORE_ROW_7

#define CONVERT_STORE_ROW_7 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
CONVERT_STORE_ROW_6(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(CONVERT_SAT((BASENAME##6), VEC_DATA_TYPE(DATA_TYPE, N0)), 0, \
(__global DATA_TYPE *)(PTR + 6 * STRIDE_Y + Z##6));
#define CONVERT_STORE_ROW_6(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 532 of file gemm_helpers.h.

◆ CONVERT_STORE_ROW_8

#define CONVERT_STORE_ROW_8 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
CONVERT_STORE_ROW_7(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(CONVERT_SAT((BASENAME##7), VEC_DATA_TYPE(DATA_TYPE, N0)), 0, \
(__global DATA_TYPE *)(PTR + 7 * STRIDE_Y + Z##7));
#define CONVERT_STORE_ROW_7(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 538 of file gemm_helpers.h.

◆ CONVERT_STORE_ROW_9

#define CONVERT_STORE_ROW_9 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
CONVERT_STORE_ROW_8(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(CONVERT_SAT((BASENAME##8), VEC_DATA_TYPE(DATA_TYPE, N0)), 0, \
(__global DATA_TYPE *)(PTR + 8 * STRIDE_Y + Z##8));
#define CONVERT_STORE_ROW_8(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 544 of file gemm_helpers.h.

◆ LOAD_BLOCK

#define LOAD_BLOCK (   M0,
  N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y,
 
)     LOAD_BLOCK_STR(M0, N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)

Definition at line 157 of file gemm_helpers.h.

◆ LOAD_BLOCK_STR

#define LOAD_BLOCK_STR (   M0,
  N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y,
 
)     LOAD_ROW_##M0(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)

Definition at line 155 of file gemm_helpers.h.

◆ LOAD_ELEMENT_1

#define LOAD_ELEMENT_1 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y 
)
Value:
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##0 = *((__global DATA_TYPE *)(PTR + OFFSET + 0 * STRIDE_Y));

Definition at line 172 of file gemm_helpers.h.

◆ LOAD_ELEMENT_10

#define LOAD_ELEMENT_10 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y 
)
Value:
LOAD_ELEMENT_9(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##9 = *((__global DATA_TYPE *)(PTR + OFFSET + 9 * STRIDE_Y));
#define LOAD_ELEMENT_9(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)

Definition at line 216 of file gemm_helpers.h.

◆ LOAD_ELEMENT_11

#define LOAD_ELEMENT_11 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y 
)
Value:
LOAD_ELEMENT_10(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##A = *((__global DATA_TYPE *)(PTR + OFFSET + 10 * STRIDE_Y));
#define LOAD_ELEMENT_10(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)

Definition at line 221 of file gemm_helpers.h.

◆ LOAD_ELEMENT_12

#define LOAD_ELEMENT_12 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y 
)
Value:
LOAD_ELEMENT_11(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##B = *((__global DATA_TYPE *)(PTR + OFFSET + 11 * STRIDE_Y));
#define LOAD_ELEMENT_11(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)

Definition at line 226 of file gemm_helpers.h.

◆ LOAD_ELEMENT_13

#define LOAD_ELEMENT_13 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y 
)
Value:
LOAD_ELEMENT_12(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##C = *((__global DATA_TYPE *)(PTR + OFFSET + 12 * STRIDE_Y));
#define LOAD_ELEMENT_12(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)

Definition at line 231 of file gemm_helpers.h.

◆ LOAD_ELEMENT_14

#define LOAD_ELEMENT_14 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y 
)
Value:
LOAD_ELEMENT_13(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##D = *((__global DATA_TYPE *)(PTR + OFFSET + 13 * STRIDE_Y));
#define LOAD_ELEMENT_13(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)

Definition at line 236 of file gemm_helpers.h.

◆ LOAD_ELEMENT_15

#define LOAD_ELEMENT_15 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y 
)
Value:
LOAD_ELEMENT_14(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##E = *((__global DATA_TYPE *)(PTR + OFFSET + 14 * STRIDE_Y));
#define LOAD_ELEMENT_14(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)

Definition at line 241 of file gemm_helpers.h.

◆ LOAD_ELEMENT_16

#define LOAD_ELEMENT_16 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y 
)
Value:
LOAD_ELEMENT_15(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##F = *((__global DATA_TYPE *)(PTR + OFFSET + 15 * STRIDE_Y));
#define LOAD_ELEMENT_15(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)

Definition at line 246 of file gemm_helpers.h.

◆ LOAD_ELEMENT_2

#define LOAD_ELEMENT_2 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y 
)
Value:
LOAD_ELEMENT_1(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##1 = *((__global DATA_TYPE *)(PTR + OFFSET + 1 * STRIDE_Y));
#define LOAD_ELEMENT_1(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)

Definition at line 176 of file gemm_helpers.h.

◆ LOAD_ELEMENT_3

#define LOAD_ELEMENT_3 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y 
)
Value:
LOAD_ELEMENT_2(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##2 = *((__global DATA_TYPE *)(PTR + OFFSET + 2 * STRIDE_Y));
#define LOAD_ELEMENT_2(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)

Definition at line 181 of file gemm_helpers.h.

◆ LOAD_ELEMENT_4

#define LOAD_ELEMENT_4 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y 
)
Value:
LOAD_ELEMENT_3(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##3 = *((__global DATA_TYPE *)(PTR + OFFSET + 3 * STRIDE_Y));
#define LOAD_ELEMENT_3(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)

Definition at line 186 of file gemm_helpers.h.

◆ LOAD_ELEMENT_5

#define LOAD_ELEMENT_5 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y 
)
Value:
LOAD_ELEMENT_4(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##4 = *((__global DATA_TYPE *)(PTR + OFFSET + 4 * STRIDE_Y));
#define LOAD_ELEMENT_4(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)

Definition at line 191 of file gemm_helpers.h.

◆ LOAD_ELEMENT_6

#define LOAD_ELEMENT_6 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y 
)
Value:
LOAD_ELEMENT_5(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##5 = *((__global DATA_TYPE *)(PTR + OFFSET + 5 * STRIDE_Y));
#define LOAD_ELEMENT_5(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)

Definition at line 196 of file gemm_helpers.h.

◆ LOAD_ELEMENT_7

#define LOAD_ELEMENT_7 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y 
)
Value:
LOAD_ELEMENT_6(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##6 = *((__global DATA_TYPE *)(PTR + OFFSET + 6 * STRIDE_Y));
#define LOAD_ELEMENT_6(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)

Definition at line 201 of file gemm_helpers.h.

◆ LOAD_ELEMENT_8

#define LOAD_ELEMENT_8 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y 
)
Value:
LOAD_ELEMENT_7(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##7 = *((__global DATA_TYPE *)(PTR + OFFSET + 7 * STRIDE_Y));
#define LOAD_ELEMENT_7(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)

Definition at line 206 of file gemm_helpers.h.

◆ LOAD_ELEMENT_9

#define LOAD_ELEMENT_9 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y 
)
Value:
LOAD_ELEMENT_8(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##8 = *((__global DATA_TYPE *)(PTR + OFFSET + 8 * STRIDE_Y));
#define LOAD_ELEMENT_8(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)

Definition at line 211 of file gemm_helpers.h.

◆ LOAD_ROW_1

#define LOAD_ROW_1 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y,
 
)
Value:
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##0 = VLOAD(N0)(0, (__global DATA_TYPE *)(PTR + OFFSET + 0 * STRIDE_Y + Z##0));
#define VLOAD(size)
Definition helpers.h:214

Definition at line 55 of file gemm_helpers.h.

◆ LOAD_ROW_10

#define LOAD_ROW_10 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y,
 
)
Value:
LOAD_ROW_9(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##9 = VLOAD(N0)(0, (__global DATA_TYPE *)(PTR + OFFSET + 9 * STRIDE_Y + Z##9));
#define LOAD_ROW_9(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)

Definition at line 99 of file gemm_helpers.h.

◆ LOAD_ROW_11

#define LOAD_ROW_11 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y,
 
)
Value:
LOAD_ROW_10(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##A = VLOAD(N0)(0, (__global DATA_TYPE *)(PTR + OFFSET + 10 * STRIDE_Y + Z##A));
#define LOAD_ROW_10(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)

Definition at line 104 of file gemm_helpers.h.

◆ LOAD_ROW_12

#define LOAD_ROW_12 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y,
 
)
Value:
LOAD_ROW_11(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##B = VLOAD(N0)(0, (__global DATA_TYPE *)(PTR + OFFSET + 11 * STRIDE_Y + Z##B));
#define LOAD_ROW_11(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)

Definition at line 109 of file gemm_helpers.h.

◆ LOAD_ROW_13

#define LOAD_ROW_13 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y,
 
)
Value:
LOAD_ROW_12(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##C = VLOAD(N0)(0, (__global DATA_TYPE *)(PTR + OFFSET + 12 * STRIDE_Y + Z##C));
#define LOAD_ROW_12(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)

Definition at line 114 of file gemm_helpers.h.

◆ LOAD_ROW_14

#define LOAD_ROW_14 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y,
 
)
Value:
LOAD_ROW_13(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##D = VLOAD(N0)(0, (__global DATA_TYPE *)(PTR + OFFSET + 13 * STRIDE_Y + Z##D));
#define LOAD_ROW_13(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)

Definition at line 119 of file gemm_helpers.h.

◆ LOAD_ROW_15

#define LOAD_ROW_15 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y,
 
)
Value:
LOAD_ROW_14(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##E = VLOAD(N0)(0, (__global DATA_TYPE *)(PTR + OFFSET + 14 * STRIDE_Y + Z##E));
#define LOAD_ROW_14(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)

Definition at line 124 of file gemm_helpers.h.

◆ LOAD_ROW_16

#define LOAD_ROW_16 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y,
 
)
Value:
LOAD_ROW_15(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##F = VLOAD(N0)(0, (__global DATA_TYPE *)(PTR + OFFSET + 15 * STRIDE_Y + Z##F));
#define LOAD_ROW_15(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)

Definition at line 129 of file gemm_helpers.h.

◆ LOAD_ROW_2

#define LOAD_ROW_2 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y,
 
)
Value:
LOAD_ROW_1(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##1 = VLOAD(N0)(0, (__global DATA_TYPE *)(PTR + OFFSET + 1 * STRIDE_Y + Z##1));
#define LOAD_ROW_1(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)

Definition at line 59 of file gemm_helpers.h.

◆ LOAD_ROW_3

#define LOAD_ROW_3 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y,
 
)
Value:
LOAD_ROW_2(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##2 = VLOAD(N0)(0, (__global DATA_TYPE *)(PTR + OFFSET + 2 * STRIDE_Y + Z##2));
#define LOAD_ROW_2(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)

Definition at line 64 of file gemm_helpers.h.

◆ LOAD_ROW_4

#define LOAD_ROW_4 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y,
 
)
Value:
LOAD_ROW_3(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##3 = VLOAD(N0)(0, (__global DATA_TYPE *)(PTR + OFFSET + 3 * STRIDE_Y + Z##3));
#define LOAD_ROW_3(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)

Definition at line 69 of file gemm_helpers.h.

◆ LOAD_ROW_5

#define LOAD_ROW_5 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y,
 
)
Value:
LOAD_ROW_4(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##4 = VLOAD(N0)(0, (__global DATA_TYPE *)(PTR + OFFSET + 4 * STRIDE_Y + Z##4));
#define LOAD_ROW_4(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)

Definition at line 74 of file gemm_helpers.h.

◆ LOAD_ROW_6

#define LOAD_ROW_6 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y,
 
)
Value:
LOAD_ROW_5(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##5 = VLOAD(N0)(0, (__global DATA_TYPE *)(PTR + OFFSET + 5 * STRIDE_Y + Z##5));
#define LOAD_ROW_5(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)

Definition at line 79 of file gemm_helpers.h.

◆ LOAD_ROW_7

#define LOAD_ROW_7 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y,
 
)
Value:
LOAD_ROW_6(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##6 = VLOAD(N0)(0, (__global DATA_TYPE *)(PTR + OFFSET + 6 * STRIDE_Y + Z##6));
#define LOAD_ROW_6(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)

Definition at line 84 of file gemm_helpers.h.

◆ LOAD_ROW_8

#define LOAD_ROW_8 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y,
 
)
Value:
LOAD_ROW_7(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##7 = VLOAD(N0)(0, (__global DATA_TYPE *)(PTR + OFFSET + 7 * STRIDE_Y + Z##7));
#define LOAD_ROW_7(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)

Definition at line 89 of file gemm_helpers.h.

◆ LOAD_ROW_9

#define LOAD_ROW_9 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y,
 
)
Value:
LOAD_ROW_8(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z) \
VEC_DATA_TYPE(DATA_TYPE, N0) \
BASENAME##8 = VLOAD(N0)(0, (__global DATA_TYPE *)(PTR + OFFSET + 8 * STRIDE_Y + Z##8));
#define LOAD_ROW_8(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y, Z)

Definition at line 94 of file gemm_helpers.h.

◆ LOAD_SCALAR_AS_VECTOR

#define LOAD_SCALAR_AS_VECTOR (   M0,
  N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y 
)     LOAD_SCALAR_AS_VECTOR_STR(M0, N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)

Definition at line 271 of file gemm_helpers.h.

◆ LOAD_SCALAR_AS_VECTOR_STR

#define LOAD_SCALAR_AS_VECTOR_STR (   M0,
  N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  OFFSET,
  STRIDE_Y 
)     LOAD_ELEMENT_##M0(N0, DATA_TYPE, BASENAME, PTR, OFFSET, STRIDE_Y)

Definition at line 269 of file gemm_helpers.h.

◆ SCALE_BLOCK

#define SCALE_BLOCK (   N,
  DATA_TYPE,
  BASENAME,
  SCALE 
)    SCALE_BLOCK_STR(N, DATA_TYPE, BASENAME, SCALE)

Definition at line 725 of file gemm_helpers.h.

◆ SCALE_BLOCK_STR

#define SCALE_BLOCK_STR (   N,
  DATA_TYPE,
  BASENAME,
  SCALE 
)    SCALE_ROW_##N(DATA_TYPE, BASENAME, SCALE)

Definition at line 724 of file gemm_helpers.h.

◆ SCALE_ROW_1

#define SCALE_ROW_1 (   DATA_TYPE,
  BASENAME,
  SCALE 
)    BASENAME##0 *= (DATA_TYPE)SCALE;

Definition at line 650 of file gemm_helpers.h.

◆ SCALE_ROW_10

#define SCALE_ROW_10 (   DATA_TYPE,
  BASENAME,
  SCALE 
)
Value:
SCALE_ROW_9(DATA_TYPE, BASENAME, SCALE) \
BASENAME##9 *= (DATA_TYPE)SCALE;
#define SCALE_ROW_9(DATA_TYPE, BASENAME, SCALE)

Definition at line 684 of file gemm_helpers.h.

◆ SCALE_ROW_11

#define SCALE_ROW_11 (   DATA_TYPE,
  BASENAME,
  SCALE 
)
Value:
SCALE_ROW_10(DATA_TYPE, BASENAME, SCALE) \
BASENAME##A *= (DATA_TYPE)SCALE;
#define SCALE_ROW_10(DATA_TYPE, BASENAME, SCALE)

Definition at line 688 of file gemm_helpers.h.

◆ SCALE_ROW_12

#define SCALE_ROW_12 (   DATA_TYPE,
  BASENAME,
  SCALE 
)
Value:
SCALE_ROW_11(DATA_TYPE, BASENAME, SCALE) \
BASENAME##B *= (DATA_TYPE)SCALE;
#define SCALE_ROW_11(DATA_TYPE, BASENAME, SCALE)

Definition at line 692 of file gemm_helpers.h.

◆ SCALE_ROW_13

#define SCALE_ROW_13 (   DATA_TYPE,
  BASENAME,
  SCALE 
)
Value:
SCALE_ROW_12(DATA_TYPE, BASENAME, SCALE) \
BASENAME##C *= (DATA_TYPE)SCALE;
#define SCALE_ROW_12(DATA_TYPE, BASENAME, SCALE)

Definition at line 696 of file gemm_helpers.h.

◆ SCALE_ROW_14

#define SCALE_ROW_14 (   DATA_TYPE,
  BASENAME,
  SCALE 
)
Value:
SCALE_ROW_13(DATA_TYPE, BASENAME, SCALE) \
BASENAME##D *= (DATA_TYPE)SCALE;
#define SCALE_ROW_13(DATA_TYPE, BASENAME, SCALE)

Definition at line 700 of file gemm_helpers.h.

◆ SCALE_ROW_15

#define SCALE_ROW_15 (   DATA_TYPE,
  BASENAME,
  SCALE 
)
Value:
SCALE_ROW_14(DATA_TYPE, BASENAME, SCALE) \
BASENAME##E *= (DATA_TYPE)SCALE;
#define SCALE_ROW_14(DATA_TYPE, BASENAME, SCALE)

Definition at line 704 of file gemm_helpers.h.

◆ SCALE_ROW_16

#define SCALE_ROW_16 (   DATA_TYPE,
  BASENAME,
  SCALE 
)
Value:
SCALE_ROW_15(DATA_TYPE, BASENAME, SCALE) \
BASENAME##F *= (DATA_TYPE)SCALE;
#define SCALE_ROW_15(DATA_TYPE, BASENAME, SCALE)

Definition at line 708 of file gemm_helpers.h.

◆ SCALE_ROW_2

#define SCALE_ROW_2 (   DATA_TYPE,
  BASENAME,
  SCALE 
)
Value:
SCALE_ROW_1(DATA_TYPE, BASENAME, SCALE) \
BASENAME##1 *= (DATA_TYPE)SCALE;
#define SCALE_ROW_1(DATA_TYPE, BASENAME, SCALE)

Definition at line 652 of file gemm_helpers.h.

◆ SCALE_ROW_3

#define SCALE_ROW_3 (   DATA_TYPE,
  BASENAME,
  SCALE 
)
Value:
SCALE_ROW_2(DATA_TYPE, BASENAME, SCALE) \
BASENAME##2 *= (DATA_TYPE)SCALE;
#define SCALE_ROW_2(DATA_TYPE, BASENAME, SCALE)

Definition at line 656 of file gemm_helpers.h.

◆ SCALE_ROW_4

#define SCALE_ROW_4 (   DATA_TYPE,
  BASENAME,
  SCALE 
)
Value:
SCALE_ROW_3(DATA_TYPE, BASENAME, SCALE) \
BASENAME##3 *= (DATA_TYPE)SCALE;
#define SCALE_ROW_3(DATA_TYPE, BASENAME, SCALE)

Definition at line 660 of file gemm_helpers.h.

◆ SCALE_ROW_5

#define SCALE_ROW_5 (   DATA_TYPE,
  BASENAME,
  SCALE 
)
Value:
SCALE_ROW_4(DATA_TYPE, BASENAME, SCALE) \
BASENAME##4 *= (DATA_TYPE)SCALE;
#define SCALE_ROW_4(DATA_TYPE, BASENAME, SCALE)

Definition at line 664 of file gemm_helpers.h.

◆ SCALE_ROW_6

#define SCALE_ROW_6 (   DATA_TYPE,
  BASENAME,
  SCALE 
)
Value:
SCALE_ROW_5(DATA_TYPE, BASENAME, SCALE) \
BASENAME##5 *= (DATA_TYPE)SCALE;
#define SCALE_ROW_5(DATA_TYPE, BASENAME, SCALE)

Definition at line 668 of file gemm_helpers.h.

◆ SCALE_ROW_7

#define SCALE_ROW_7 (   DATA_TYPE,
  BASENAME,
  SCALE 
)
Value:
SCALE_ROW_6(DATA_TYPE, BASENAME, SCALE) \
BASENAME##6 *= (DATA_TYPE)SCALE;
#define SCALE_ROW_6(DATA_TYPE, BASENAME, SCALE)

Definition at line 672 of file gemm_helpers.h.

◆ SCALE_ROW_8

#define SCALE_ROW_8 (   DATA_TYPE,
  BASENAME,
  SCALE 
)
Value:
SCALE_ROW_7(DATA_TYPE, BASENAME, SCALE) \
BASENAME##7 *= (DATA_TYPE)SCALE;
#define SCALE_ROW_7(DATA_TYPE, BASENAME, SCALE)

Definition at line 676 of file gemm_helpers.h.

◆ SCALE_ROW_9

#define SCALE_ROW_9 (   DATA_TYPE,
  BASENAME,
  SCALE 
)
Value:
SCALE_ROW_8(DATA_TYPE, BASENAME, SCALE) \
BASENAME##8 *= (DATA_TYPE)SCALE;
#define SCALE_ROW_8(DATA_TYPE, BASENAME, SCALE)

Definition at line 680 of file gemm_helpers.h.

◆ STORE_BLOCK

#define STORE_BLOCK (   M0,
  N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)     STORE_BLOCK_STR(M0, N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 614 of file gemm_helpers.h.

◆ STORE_BLOCK_STR

#define STORE_BLOCK_STR (   M0,
  N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)     STORE_ROW_##M0(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 612 of file gemm_helpers.h.

◆ STORE_ROW_1

#define STORE_ROW_1 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
VSTORE(N0) \
(BASENAME##0, 0, (__global DATA_TYPE *)(PTR + 0 * STRIDE_Y + Z##0));

Definition at line 406 of file gemm_helpers.h.

◆ STORE_ROW_10

#define STORE_ROW_10 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
STORE_ROW_9(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(BASENAME##9, 0, (__global DATA_TYPE *)(PTR + 9 * STRIDE_Y + Z##9));
#define STORE_ROW_9(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 450 of file gemm_helpers.h.

◆ STORE_ROW_11

#define STORE_ROW_11 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
STORE_ROW_10(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(BASENAME##A, 0, (__global DATA_TYPE *)(PTR + 10 * STRIDE_Y + Z##A));
#define STORE_ROW_10(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 455 of file gemm_helpers.h.

◆ STORE_ROW_12

#define STORE_ROW_12 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
STORE_ROW_11(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(BASENAME##B, 0, (__global DATA_TYPE *)(PTR + 11 * STRIDE_Y + Z##B));
#define STORE_ROW_11(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 460 of file gemm_helpers.h.

◆ STORE_ROW_13

#define STORE_ROW_13 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
STORE_ROW_12(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(BASENAME##C, 0, (__global DATA_TYPE *)(PTR + 12 * STRIDE_Y + Z##C));
#define STORE_ROW_12(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 465 of file gemm_helpers.h.

◆ STORE_ROW_14

#define STORE_ROW_14 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
STORE_ROW_13(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(BASENAME##D, 0, (__global DATA_TYPE *)(PTR + 13 * STRIDE_Y + Z##D));
#define STORE_ROW_13(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 470 of file gemm_helpers.h.

◆ STORE_ROW_15

#define STORE_ROW_15 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
STORE_ROW_14(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(BASENAME##E, 0, (__global DATA_TYPE *)(PTR + 14 * STRIDE_Y + Z##E));
#define STORE_ROW_14(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 475 of file gemm_helpers.h.

◆ STORE_ROW_16

#define STORE_ROW_16 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
STORE_ROW_15(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(BASENAME##F, 0, (__global DATA_TYPE *)(PTR + 15 * STRIDE_Y + Z##F));
#define STORE_ROW_15(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 480 of file gemm_helpers.h.

◆ STORE_ROW_2

#define STORE_ROW_2 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
STORE_ROW_1(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(BASENAME##1, 0, (__global DATA_TYPE *)(PTR + 1 * STRIDE_Y + Z##1));
#define STORE_ROW_1(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 410 of file gemm_helpers.h.

◆ STORE_ROW_3

#define STORE_ROW_3 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
STORE_ROW_2(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(BASENAME##2, 0, (__global DATA_TYPE *)(PTR + 2 * STRIDE_Y + Z##2));
#define STORE_ROW_2(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 415 of file gemm_helpers.h.

◆ STORE_ROW_4

#define STORE_ROW_4 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
STORE_ROW_3(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(BASENAME##3, 0, (__global DATA_TYPE *)(PTR + 3 * STRIDE_Y + Z##3));
#define STORE_ROW_3(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 420 of file gemm_helpers.h.

◆ STORE_ROW_5

#define STORE_ROW_5 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
STORE_ROW_4(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(BASENAME##4, 0, (__global DATA_TYPE *)(PTR + 4 * STRIDE_Y + Z##4));
#define STORE_ROW_4(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 425 of file gemm_helpers.h.

◆ STORE_ROW_6

#define STORE_ROW_6 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
STORE_ROW_5(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(BASENAME##5, 0, (__global DATA_TYPE *)(PTR + 5 * STRIDE_Y + Z##5));
#define STORE_ROW_5(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 430 of file gemm_helpers.h.

◆ STORE_ROW_7

#define STORE_ROW_7 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
STORE_ROW_6(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(BASENAME##6, 0, (__global DATA_TYPE *)(PTR + 6 * STRIDE_Y + Z##6));
#define STORE_ROW_6(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 435 of file gemm_helpers.h.

◆ STORE_ROW_8

#define STORE_ROW_8 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
STORE_ROW_7(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(BASENAME##7, 0, (__global DATA_TYPE *)(PTR + 7 * STRIDE_Y + Z##7));
#define STORE_ROW_7(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 440 of file gemm_helpers.h.

◆ STORE_ROW_9

#define STORE_ROW_9 (   N0,
  DATA_TYPE,
  BASENAME,
  PTR,
  STRIDE_Y,
 
)
Value:
STORE_ROW_8(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z) \
VSTORE(N0) \
(BASENAME##8, 0, (__global DATA_TYPE *)(PTR + 8 * STRIDE_Y + Z##8));
#define STORE_ROW_8(N0, DATA_TYPE, BASENAME, PTR, STRIDE_Y, Z)

Definition at line 445 of file gemm_helpers.h.

◆ TRANSPOSE_K0X1

#define TRANSPOSE_K0X1 (   K0,
  BASENAME,
  B,
  TYPE 
)    COLUMN_VECTOR_SCALAR(K0, 0, BASENAME, B, TYPE);

Definition at line 804 of file gemm_helpers.h.

◆ TRANSPOSE_K0X16

#define TRANSPOSE_K0X16 (   K0,
  BASENAME,
  B,
  TYPE 
)
Value:
TRANSPOSE_K0X8(K0, BASENAME, B, TYPE); \
COLUMN_VECTOR(K0, 8, BASENAME, B, TYPE); \
COLUMN_VECTOR(K0, 9, BASENAME, B, TYPE); \
COLUMN_VECTOR(K0, A, BASENAME, B, TYPE); \
COLUMN_VECTOR(K0, B, BASENAME, B, TYPE); \
COLUMN_VECTOR(K0, C, BASENAME, B, TYPE); \
COLUMN_VECTOR(K0, D, BASENAME, B, TYPE); \
COLUMN_VECTOR(K0, E, BASENAME, B, TYPE); \
COLUMN_VECTOR(K0, F, BASENAME, B, TYPE);
#define TRANSPOSE_K0X8(K0, BASENAME, B, TYPE)

Definition at line 820 of file gemm_helpers.h.

◆ TRANSPOSE_K0X2

#define TRANSPOSE_K0X2 (   K0,
  BASENAME,
  B,
  TYPE 
)
Value:
COLUMN_VECTOR(K0, 0, BASENAME, B, TYPE); \
COLUMN_VECTOR(K0, 1, BASENAME, B, TYPE);

Definition at line 805 of file gemm_helpers.h.

◆ TRANSPOSE_K0X3

#define TRANSPOSE_K0X3 (   K0,
  BASENAME,
  B,
  TYPE 
)
Value:
TRANSPOSE_K0X2(K0, BASENAME, B, TYPE); \
COLUMN_VECTOR(K0, 2, BASENAME, B, TYPE);
#define TRANSPOSE_K0X2(K0, BASENAME, B, TYPE)

Definition at line 808 of file gemm_helpers.h.

◆ TRANSPOSE_K0X4

#define TRANSPOSE_K0X4 (   K0,
  BASENAME,
  B,
  TYPE 
)
Value:
TRANSPOSE_K0X3(K0, BASENAME, B, TYPE); \
COLUMN_VECTOR(K0, 3, BASENAME, B, TYPE);
#define TRANSPOSE_K0X3(K0, BASENAME, B, TYPE)

Definition at line 811 of file gemm_helpers.h.

◆ TRANSPOSE_K0X8

#define TRANSPOSE_K0X8 (   K0,
  BASENAME,
  B,
  TYPE 
)
Value:
TRANSPOSE_K0X4(K0, BASENAME, B, TYPE); \
COLUMN_VECTOR(K0, 4, BASENAME, B, TYPE); \
COLUMN_VECTOR(K0, 5, BASENAME, B, TYPE); \
COLUMN_VECTOR(K0, 6, BASENAME, B, TYPE); \
COLUMN_VECTOR(K0, 7, BASENAME, B, TYPE);
#define TRANSPOSE_K0X4(K0, BASENAME, B, TYPE)

Definition at line 814 of file gemm_helpers.h.

◆ TRANSPOSE_K0XN0

#define TRANSPOSE_K0XN0 (   K0,
  N0,
  BASENAME,
  B,
  TYPE 
)
Value:
CONCAT(TRANSPOSE_K0X, N0) \
(K0, BASENAME, B, TYPE);

Create transposed vectors form the given source vectors

Parameters
[in]K0The size of source vectors
[in]N0The number of source vectors
[in]BASENAMEThe basename of transposed vectors
[in]BThe basename of source vectors for transposition
[in]TYPEThe data type of the transposed vectors

Definition at line 867 of file gemm_helpers.h.