https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111645
--- Comment #6 from Steven Munroe <munroesj at gcc dot gnu.org> --- (In reply to Carl Love from comment #5) > There are a couple of issues with the test case in the attachment. For > example one of the tests is: > > > static inline vui64_t > vec_vsldbi_64 (vui64_t vra, vui64_t vrb, const unsigned int shb) > { > return vec_sldb (vra, vrb, shb); > } > > When I tried to compile it, it seemed to compile. However if I take off the > static inline, then I get an error about in compatible arguments. The > built-in requires an explicit integer be based in the third argument. The > following worked for me: > > > static inline vui64_t > vec_vsldbi_64 (vui64_t vra, vui64_t vrb, const unsigned int shb) > { > return vec_sldb (vra, vrb, 1); > } > > The compiler/assembler needs an explicit value for the third argument as it > has to generate the instruction with the immediate shift value as part of > the instruction. Hence a variable for the third argument will not work. > > Agreed that the __int128 arguments can and should be supported. Patch to > add that support is in progress but will require getting the LLVM/OpenXL > team to agree to adding the __128int variants as well. Yes I know. in the PVECLIB case these functions will always be static inline. So this is not issue for me.