UnaryRepeatParams
=================

UnaryRepeatParams为用于控制操作数地址步长的数据结构。结构体内包含操作数相邻迭代间相同datablock的地址步长，操作数同一迭代内不同datablock的地址步长等参数。

结构体具体定义为：

const int32\_t DEFAULT\_BLK\_NUM = 8;
const int32\_t DEFAULT\_BLK\_STRIDE = 1;
const uint8\_t DEFAULT\_REPEAT\_STRIDE = 8;
 
struct UnaryRepeatParams {
    \_\_aicore\_\_ UnaryRepeatParams()
    {
        blockNumber = DEFAULT\_BLK\_NUM;
        dstBlkStride = DEFAULT\_BLK\_STRIDE;
        srcBlkStride = DEFAULT\_BLK\_STRIDE;
        dstRepStride = DEFAULT\_REPEAT\_STRIDE;
        srcRepStride = DEFAULT\_REPEAT\_STRIDE;
        halfBlock = false;
    }
    \_\_aicore\_\_ UnaryRepeatParams(const uint16\_t dstBlkStrideIn, const uint16\_t srcBlkStrideIn,
        const uint8\_t dstRepStrideIn, const uint8\_t srcRepStrideIn)
    {
        dstBlkStride = dstBlkStrideIn;
        srcBlkStride = srcBlkStrideIn;
        dstRepStride = dstRepStrideIn;
        srcRepStride = srcRepStrideIn;
    }
    \_\_aicore\_\_ UnaryRepeatParams(const uint16\_t dstBlkStrideIn, const uint16\_t srcBlkStrideIn,
        const uint8\_t dstRepStrideIn, const uint8\_t srcRepStrideIn, const bool halfBlockIn)
    {
        dstBlkStride = dstBlkStrideIn;
        srcBlkStride = srcBlkStrideIn;
        dstRepStride = dstRepStrideIn;
        srcRepStride = srcRepStrideIn;
        halfBlock = halfBlockIn;
    }
    uint32\_t blockNumber = 0;
    uint16\_t dstBlkStride = 0;
    uint16\_t srcBlkStride = 0;
    uint8\_t dstRepStride = 0;
    uint8\_t srcRepStride = 0;
    bool repeatStrideMode = false;
    bool strideSizeMode = false;
    bool halfBlock = false;
};

其中，blockNumber，repeatStrideMode，strideSizeMode为保留参数，开发者无需关心，使用默认值即可。halfBlock表示CastDeq指令的结果写入对应UB的上半（halfBlock = true）还是下半（halfBlock = false）部分。开发者需要自行定义dataBlockStride参数，包含dstBlkStride，srcBlkStride，以及repeatStride参数，包含dstRepStride，srcRepStride。