This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/18503] _mm_move_ss SSE intrinsic causes erroneous
- From: "torgeihe at stud dot ntnu dot no" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 15 Nov 2004 16:26:25 -0000
- Subject: [Bug tree-optimization/18503] _mm_move_ss SSE intrinsic causes erroneous
- References: <20041115153855.18503.torgeihe@stud.ntnu.no>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From torgeihe at stud dot ntnu dot no 2004-11-15 16:26 -------
Subject: Re: _mm_move_ss SSE intrinsic causes
erroneous
pinskia at gcc dot gnu dot org wrote:
> ------- Additional Comments From pinskia at gcc dot gnu dot org 2004-11-15 15:47 -------
> No you are reading the asm backwards, the corresponding intel asm is:
> bug: subss %xmm0, %xmm1
> ret
>
> Which you can get with -masm=intel.
>
Yes, I know AT&T syntax is backwards compared to Intel, have I
misinterpreted the intrinsics or resulting code somehow? To be more
clear, I expected the C function to return the following vector:
v0 = a0
v1 = a1 - b1
v2 = a2 - b2
v3 = a3 - b3
Instead it seems to return:
v0 = a0 - b0
v1 = a1
v2 = a2
v3 = a3
_mm_move_ss should the three upper values from its first argument, and
the lower from its second, no?
Torgeir
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18503