Hey! I've just discovered that by using the LLVM backend (latest-upstream, currently 1.38.40-upstream) SIMD emulation works out of the box (well, I just had to get rid of --closure 1) !
So Thomas was right when he said: > As for the error you are seeing, it is telling you that Fastcomp does not > support 2 x i64 vectors. Unfortunately Fastcomp does not know how to lower > unsupported vector types into supported vector types, although the LLVM > backend does. > I've very happy that the time I spent making nudge work with simde (see https://github.com/nemequ/simde/issues/37) was not useless and now I can use nudge in the browser (... at least with SIMD emulated by simde)! As far as the proper SIMD version, I've seen that the SIMD headers have come back into emscripten, but I'm still experiencing compilation errors: > *em++ -O2 -msse2 -fno-rtti -fno-exceptions [...other stuff here...]* clang-10: warning: argument unused during compilation: '-msse2' [-Wunused- command-line-argument] In file included from main_no_ffp_with_shadows.cpp:53: In file included from /.../emsdk/upstream/lib/clang/10.0.0/include/immintrin .h:14: /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:33:5: error: use of undeclared identifier '__builtin_ia32_emms'; did you mean '__builtin_isless' ? __builtin_ia32_emms(); ^ /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:33:5: note: '__builtin_isless' declared here /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:33:25: error: too few arguments to function call, expected 2, have 0 __builtin_ia32_emms(); ^ /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:50:19: error: use of undeclared identifier '__builtin_ia32_vec_init_v2si' return (__m64)__builtin_ia32_vec_init_v2si(__i, 0); ^ /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:67:12: error: use of undeclared identifier '__builtin_ia32_vec_ext_v2si' return __builtin_ia32_vec_ext_v2si((__v2si)__m, 0); ^ /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:129:19: error: use of undeclared identifier '__builtin_ia32_packsswb' return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2); ^ /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:159:19: error: use of undeclared identifier '__builtin_ia32_packssdw' return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2); ^ /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:189:19: error: use of undeclared identifier '__builtin_ia32_packuswb' return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2); ^ /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:216:19: error: use of undeclared identifier '__builtin_ia32_punpckhbw' return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2); ^ /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:239:19: error: use of undeclared identifier '__builtin_ia32_punpckhwd' return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2); ^ /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:260:19: error: use of undeclared identifier '__builtin_ia32_punpckhdq' return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2); ^ /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:287:19: error: use of undeclared identifier '__builtin_ia32_punpcklbw' return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2); ^ /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:310:19: error: use of undeclared identifier '__builtin_ia32_punpcklwd' return (__m64)__builtin_ia32_punpcklwd((__v4hi)__m1, (__v4hi)__m2); ^ /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:331:19: error: use of undeclared identifier '__builtin_ia32_punpckldq' return (__m64)__builtin_ia32_punpckldq((__v2si)__m1, (__v2si)__m2); ^ /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:352:19: error: use of undeclared identifier '__builtin_ia32_paddb' return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2); ^ /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:373:19: error: use of undeclared identifier '__builtin_ia32_paddw' return (__m64)__builtin_ia32_paddw((__v4hi)__m1, (__v4hi)__m2); ^ /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:394:19: error: use of undeclared identifier '__builtin_ia32_paddd' return (__m64)__builtin_ia32_paddd((__v2si)__m1, (__v2si)__m2); ^ /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:416:19: error: use of undeclared identifier '__builtin_ia32_paddsb' return (__m64)__builtin_ia32_paddsb((__v8qi)__m1, (__v8qi)__m2); ^ /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:439:19: error: use of undeclared identifier '__builtin_ia32_paddsw' return (__m64)__builtin_ia32_paddsw((__v4hi)__m1, (__v4hi)__m2); ^ /.../emsdk/upstream/lib/clang/10.0.0/include/mmintrin.h:461:19: error: use of undeclared identifier '__builtin_ia32_paddusb' return (__m64)__builtin_ia32_paddusb((__v8qi)__m1, (__v8qi)__m2); ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. I'm not sure why clang-10 gives me '-msse2' [-Wunused-command-line-argument], but I suppose that the SIMD stuff is still WIP in emscripten (and maybe still unsupported by browsers in general), so I'm just happy with what I got now! Thanks again for your help. -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/ccdc49a3-dd67-43de-800c-d96dfba0faab%40googlegroups.com.
