On 4/20/05, Andrew Pinski <[EMAIL PROTECTED]> wrote:
> Yes this was intentional, you should not be using the builtin functions,
> instead use intrinsics from the header files.
Now that intrinsics are first class citizens it would be a real plus
if someone could convince gcc to not spit horrors like that, ever (but
perhaps for debugging?):

0000000000400840 <_mm_setzero_ps()>:
  400840:       xorps  %xmm0,%xmm0
  400843:       retq
...
0000000000400850 <_mm_min_ss(float __vector, float __vector)>:
  400850:       minss  %xmm1,%xmm0
  400854:       retq
...
0000000000400860 <_mm_max_ss(float __vector, float __vector)>:
  400860:       maxss  %xmm1,%xmm0
  400864:       retq
...
0000000000400870 <_mm_sub_ps(float __vector, float __vector)>:
  400870:       subps  %xmm1,%xmm0
  400873:       retq
...
0000000000400880 <_mm_mul_ps(float __vector, float __vector)>:
  400880:       mulps  %xmm1,%xmm0
  400883:       retq

... etc ad nauseam and then the final blow...
0000000000400980 <checkpointcharlie(aabb_t const&, ray_t const&, ray_t
const&, ray_t const&)>:
  400980:       push   %r15
  400982:       mov    %rcx,%r15
  400985:       push   %r14
  400987:       mov    %rdx,%r14
  40098a:       push   %r13
  40098c:       push   %r12
  40098e:       mov    %rdi,%r12
  400991:       mov    $0x5016b0,%edi
  400996:       lea    0x10(%r12),%r13
  40099b:       push   %rbx
  40099c:       mov    %rsi,%rbx
  40099f:       sub    $0x310,%rsp
  4009a6:       callq  4008d0 <_mm_load_ps(float const*)>
  4009ab:       movaps %xmm0,0x2d0(%rsp)
  4009b3:       mov    $0x5016c0,%edi
  4009b8:       callq  4008d0 <_mm_load_ps(float const*)>
  4009bd:       movaps %xmm0,0x2c0(%rsp)
  4009c5:       mov    %rbx,%rdi
  4009c8:       callq  4008d0 <_mm_load_ps(float const*)>
  4009cd:       movaps %xmm0,0x2b0(%rsp)
  4009d5:       lea    0x10(%rbx),%rdi
  4009d9:       lea    0x300(%rsp),%rbx
  4009e1:       callq  4008d0 <_mm_load_ps(float const*)>
  4009e6:       movaps %xmm0,0x2a0(%rsp)
  4009ee:       mov    %r12,%rdi
etc...

Excerpts from a x86-64 bin with gcc 4120050410 at -O3, but i've seen
it happen under various conditions & compile flags or compiler
versions on straight x86 too.
The only way i know to fix it is to tinker with params. Eek.

Reply via email to