On Thu, Oct 6, 2011 at 11:38 AM, Kirill Yukhin <kirill.yuk...@gmail.com> wrote:
> Thanks for review. I did all but one > >> you have disabled all tests on ia32 - unconditionally use "-O2 -mfma >> -mfpmath=sse" for dg-options, and these instructions will magically >> appear on all targets. > > I am enabling these tests to run on ia32, they all fail to scan-assembler, > since assemler is completely different, here is instance: > test_neg_sub_neg_sub: > .LFB15: > .cfi_startproc > subl $12, %esp > .cfi_def_cfa_offset 16 > vmovsd 16(%esp), %xmm2 > vmovsd 24(%esp), %xmm1 > vmovapd %xmm2, %xmm0 > vfnmsub213sd 32(%esp), %xmm1, %xmm0 > vfnmsub132sd %xmm2, %xmm1, %xmm0 > vmovsd %xmm0, (%esp) > fldl (%esp) > addl $12, %esp > .cfi_def_cfa_offset 4 > ret > .cfi_endproc > > On ia32 params are passed completely different and therefore code differs. You can add __attribute__((sseregparm)) to function declaration. This will force arguments to/from function to SSE registers. The problem is, that it will result in "warning: 'sseregparm' attribute ignored", but this can be ignored using dg-prune-output dg directive. Please see many examples in the testsuite. Uros.