https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106770
--- Comment #12 from Surya Kumari Jangala ---
(In reply to Jens Seifert from comment #6)
> The left part of VSX registers overlaps with floating point registers, that
> is why no register xxpermdi is required and mfvsrd can access all (left)
>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106770
--- Comment #11 from Segher Boessenkool ---
(In reply to Jens Seifert from comment #6)
> The left part of VSX registers overlaps with floating point registers, that
> is why no register xxpermdi is required and mfvsrd can access all (left)
>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106770
--- Comment #10 from Surya Kumari Jangala ---
The swap pass analyzes vector computations and removes unnecessary doubleword
swaps (xxswapdi instructions). The swap pass first constructs webs and removes
swap instructions if possible. If the web
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106770
--- Comment #9 from Surya Kumari Jangala ---
RTL after dfinit pass for the vec_sub() and the vec_extract():
(insn 13 12 14 2 (set (reg:V2DI 132 [ vrD.3952 ])
(minus:V2DI (subreg:V2DI (reg:V2DF 117 [ _1 ]) 0)
(subreg:V2DI
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106770
--- Comment #8 from Surya Kumari Jangala ---
While the first two xxpermdi's are fine, the 3rd one is a bug. It is incorrect.
Here is the C code inlined into assembly:
_Z4cmp2dd:
.LFB1:
.cfi_startproc
// vector double va =