This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VM: Failed to use C7x Streaming Engine with "__SE0ADV(float)" via sdk8.6-cgt3.1.0-C7100

Part Number: TDA4VM

I get wrong value with codes below when using "__SE0ADV(float)" in C7100. I've tried to change the type from "float" to "int", and it will output right value. Therefore, it might be something wrong with the "float" type, but I am not able to figure it out. Could you please offer some instructions?

static inline __SE_TEMPLATE_v1 get_1D_se(__SE_ELETYPE ele_type, __SE_VECLEN vec_len, int size)
{
    __SE_TEMPLATE_v1 se = __gen_SE_TEMPLATE_v1();
    se.DIMFMT = __SE_DIMFMT_1D;
    se.ELETYPE = ele_type;
    se.VECLEN = vec_len;
    se.ICNT0 = size;
    return se;
}
void Getrow_i32f_o32f_kernel(const float *input, float *output, int32_t rowNum, int size)
{
    __SE_TEMPLATE_v1 se0_param = get_1D_se(__SE_ELETYPE_32BIT, __SE_VECLEN_1ELEM, size);
    const float *cur = input + rowNum * size;
    int i = 0;
    (void)__SE0_OPEN(cur, se0_param);
    for (; i < size; i++) {
        *(output + i) = __SE0ADV(float);
    }
    (void)__SE0_CLOSE();
}

Is this "float" mistake caused by the SE flags? The below show flags of an old version, which the 11th bit is reserverd. However, in recent ti-cgt-c7000_3.1.0.LTS version that bit is used as SE_FLOAT. I've tried to set this bit to be 1 rather than 0, but still failed.

Could you please show a demo on how to use "__SE0ADV(float)"? Really appreciate your help!