i-evi / sse2msa

A C/C++ header file that converts Intel SSE intrinsics to MIPS/MIPS64 MSA intrinsics.
MIT License
10 stars 1 forks source link

How to solve can't convert vector values between diferrent type #2

Open doublekang2018 opened 10 months ago

doublekang2018 commented 10 months ago

I'm trying to use your header file to run a SSE SIMD code on MIIPS CPU(Loongson 3A3000),it turns out with some errors. error: can’t convert between vector values of different size return vreinterpret_m128(__builtin_msa_fadd_w(vreinterpret_v4f32(a), vreinterpret_v4f32(b)));

error:can’t convert between vector values of different size extension(({union {int32_t i; typeof(x) v;} $ = {.v = x}; $.i;}))

I don't know how to solve these problems, can you help me? thank you so much.

i-evi commented 10 months ago

@doublekang2018 This header file converts intel SSE intrinsic to MIPS MSA implementation. It requires your compiler to support MIPS MSA builtin functions (gcc 7.1+), and a cpu that supports MIPS MSA ASE, such as loongson 3A4000 or Ingenic x2000. As I know, the loongson 3A3000 dose not support MIPS MSA, if you just want to run SSE code on the loongson 3A3000 platform, you can try the SIMDe project.

doublekang2018 commented 9 months ago

Yes,it works perfectly on loongson 3A4000 cpu,thank you so much ! It helps me to convert my sse code to mips without any change.