https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79544
Bug ID: 79544 Summary: vec_sra (unsigned long long,foo) generating vsrd instead of vsrad Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: willschm at gcc dot gnu.org Target Milestone: --- Created attachment 40756 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40756&action=edit sample test Noticed that vec_sra is generating a vsrd instruction rather than the expected vsrad instruction when using "unsigned long long" parameter. > #include <altivec.h> > vector unsigned long long > test6_sra (vector unsigned long long x, vector unsigned long long y) > { > return vec_sra (x, y); > } > #> gcc -c testme_sra.c -S -mvsx -O3 > #> grep -A 3 test6_sra: testme_sra.s > test6_sra: > vsrd 2,2,3 > blr > .long 0 vec_sra() against char,short,int appear OK. Seeing this on trunk (20170208) as well as older distro supplied compilers. test attached.