[Bug target/102868] New: Missed optimization with __builtin_shuffle and zero vector on ppc
luoxhu at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Oct 21 06:08:29 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102868
Bug ID: 102868
Summary: Missed optimization with __builtin_shuffle and zero
vector on ppc
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: luoxhu at gcc dot gnu.org
Target Milestone: ---
Similar to PR94680 and PR100165, PPC currently generates inefficient
instructions for below case:
typedef float V __attribute__((vector_size(16)));
typedef int VI __attribute__((vector_size(16)));
V foo (V x)
{
return __builtin_shuffle (x, (V) { 0, 0, 0, 0 }, (VI) {0, 1, 4, 5});
}
foo:
.LFB0:
.cfi_startproc
.LCF0:
0: addis 2,12,.TOC.-.LCF0@ha
addi 2,2,.TOC.-.LCF0@l
.localentry foo,.-foo
addis %r9,%r2,.LC0@toc@ha
xxspltib %vs32,0
addi %r9,%r9,.LC0@toc@l
lxv %vs33,0(%r9)
xxperm %vs34,%vs32,%vs33
blr
It will be better to produce:
foo:
.LFB0:
.cfi_startproc
vspltisw %v0,0
xxpermdi %vs34,%vs32,%vs34,3
More information about the Gcc-bugs
mailing list