https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108902

--- Comment #5 from g.peterh...@t-online.de ---
add test case (https://godbolt.org/z/q65cWKhWx)

void inc_builtin(array_t& arr)    noexcept
{
    auto load_cvt = [](const std::float16_t*const ptr) noexcept
    {
        return __builtin_convertvector(*((const __m128h*const)ptr), __m256);
    };

    auto save_cvt = [](std::float16_t* ptr, const __m256 arg)    noexcept
    {
        *((__m128h*)ptr) = __builtin_convertvector(arg, __m128h);
    };

    for (std::size_t i=0; i<arr.size(); i+=8)
    {
        __m256
            tmp = load_cvt(&arr[i]);

        ++tmp;
        save_cvt(&arr[i], tmp);
    }
}

Reply via email to