This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

(something of an absence of) SSE2 documentation


Hi.

In what section of which manual ought the asm() constraints for SSE
registers to be documented? They somehow fall between the cracks;
I was expecting to find the documentation in a "machine-specific"
section under "extended assembly" in info gcc. It wouldn't make
sense to document them in info as, they're very much gcc constructs.

I ended up guessing that the information might be in gcc/config/i386.h,
which told me the letters

x  SSE registers
y  MMX registers
Y  'SSE2' registers

but I don't see what the distinction between SSE and SSE2 _registers_ is
supposed to be; the SSE and SSE2 operations all act on the same
set of eight registers.

Looking through i386.md, "Y" constraints are associated with DF and
V2DF-mode instructions, and there seems to be really very little handling at
all of the SSE2 extended-MMX instructions, which use operands of type V16QI,
V8HI, V4SI and V2DI.

Even some SSE2 operations are missing entirely -- SQRTPD and MAXPD, for
instance; to make them used, would I have to do anything beyond copying the
define_insn for the PS variants, checking TARGET_SSE2 rather than
TARGET_SSE, and changing "xm" to "Ym" and "v4sf" to "v2df"?

Tom


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]