jfalcou / eve

Expressive Vector Engine - SIMD in C++ Goes Brrrr
https://jfalcou.github.io/eve/
Boost Software License 1.0
961 stars 58 forks source link

Add RISC-V support for simd_cast #1966

Closed ita-sc closed 3 weeks ago

ita-sc commented 1 month ago

Hi

This patches add extends support for simd_cast for RISC-V. Also I'm fixing combine and to_logical functions for RISC-V and turn on wide api test, to be sure that combine and slice works fine.

Cast from logical to wide still prohibited.

DenisYaroshevskiy commented 1 month ago

Here is what I suggest with tests.

Globally

The rest is left untested.

ita-sc commented 1 month ago

Here is what I suggest with tests

Yep, I will try. By the way, what memory consumption for test will be ok for EVE CI?

DenisYaroshevskiy commented 1 month ago

No idea. We run eve ci on boxes we own, it should be not too bad as far as the limits go.

jfalcou commented 1 month ago

FYI, my if_else merge was incorrect and I pushed a correction, it should fix the fails.

ita-sc commented 1 month ago

Gentle ping

DenisYaroshevskiy commented 1 month ago

In case the comment get's lost - we shouldn't filter the types for this simple test. Because if in this simple test it's a problem, it's going to be a problem for every test. More details in the big coment.

ita-sc commented 4 weeks ago

Updated review. Now I reduce globally types in eve::test::simd::all_types and similar for these rules:

Note: you requested to check all types with size bellow 256 bytes, but for vlen=128 all wide will be smaller: max size for "physical" register will be 128*8 / 8 = 128 bytes, so we have nothing for filtering.

DenisYaroshevskiy commented 3 weeks ago

Aggregation! We have aggregation! It's important to check support for emulation of 2 registers togerther

DenisYaroshevskiy commented 3 weeks ago

Eve emulates bigger than native registers if you ask for it.

DenisYaroshevskiy commented 3 weeks ago

will merge after ci