This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc 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]

[Bug math/21955] New: Wrong .section .rodata.cst8 in sysdeps/x86_64/fpu/e_expf.S


https://sourceware.org/bugzilla/show_bug.cgi?id=21955

            Bug ID: 21955
           Summary: Wrong .section .rodata.cst8 in
                    sysdeps/x86_64/fpu/e_expf.S
           Product: glibc
           Version: 2.26
            Status: NEW
          Severity: normal
          Priority: P2
         Component: math
          Assignee: unassigned at sourceware dot org
          Reporter: hjl.tools at gmail dot com
  Target Milestone: ---
            Target: x86-64

sysdeps/x86_64/fpu/e_expf.S has

        /* Here if |x| is Inf */
        lea     L(SP_INF_0)(%rip), %rdx /* depending on sign of x: */
        movss   (%rdx,%rax,4), %xmm0    /* return zero or Inf */
        ret
...
         .section .rodata.cst8,"aM",@progbits,8
...
        .p2align 2
L(SP_INF_0):
        .long   0x7f800000      /* single precision Inf */
        .long   0               /* single precision zero */
        .type L(SP_INF_0), @object
        ASM_SIZE_DIRECTIVE(L(SP_INF_0))

Since L(SP_INF_0) is accessed as an array of 4-byte elements, it can't be
put in

.section .rodata.cst8,"aM",@progbits,8

--- Comment #1 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, hjl/expf/master has been created
        at  a13f5e6e34a6160607c8ce9448c618b9ae024364 (commit)

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a13f5e6e34a6160607c8ce9448c618b9ae024364

commit a13f5e6e34a6160607c8ce9448c618b9ae024364
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Tue Aug 15 08:45:34 2017 -0700

    x86-64: Optimize e_expf with FMA [BZ #21912]

        [BZ #21912]
        * sysdeps/x86_64/fpu/multiarch/e_expf-fma.S: New file.
        * sysdeps/x86_64/fpu/multiarch/e_expf-sse2.S: Likewise.
        * sysdeps/x86_64/fpu/multiarch/e_expf.c: Likewise.
        * sysdeps/x86_64/fpu/multiarch/ifunc-fma.h: Likewise.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5c18dfae535d8dd308a034280176c771b4065664

commit 5c18dfae535d8dd308a034280176c771b4065664
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Tue Aug 15 10:34:22 2017 -0700

    x86-64: Put L(SP_INF_0) in .rodata.cst4 section [BZ #21955]

    sysdeps/x86_64/fpu/e_expf.S has

            /* Here if |x| is Inf */
            lea     L(SP_INF_0)(%rip), %rdx /* depending on sign of x: */
            movss   (%rdx,%rax,4), %xmm0    /* return zero or Inf */
            ret
    ...
             .section .rodata.cst8,"aM",@progbits,8
    ...
            .p2align 2
    L(SP_INF_0):
            .long   0x7f800000      /* single precision Inf */
            .long   0               /* single precision zero */
            .type L(SP_INF_0), @object
            ASM_SIZE_DIRECTIVE(L(SP_INF_0))

    Since L(SP_INF_0) is accessed as an array of 4-byte elements, it should
    be placed in

        .section .rodata.cst4,"aM",@progbits,4

        [BZ #21955]
        * sysdeps/x86_64/fpu/e_expf.S (L(SP_INF_0)): Place it in
        .rodata.cst4 section.

-----------------------------------------------------------------------

-- 
You are receiving this mail because:
You are on the CC list for the bug.

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