IV30067: INEFFICIENT 64-BIT CONSTANT LOAD OF 32-BIT VALUE

Subscribe

You can track all active APARs for this component.

APAR status

  • Closed as program error.

Error description

  • xlC loads from constant area while it is more efficient to use
    immediate instructions.
    
    Pattern:
    First 32-bits are zero
    Next 16-bit start with 1-bit
    Next 16-bit value does not start with 1-bit
    
    Take this sample:
    extern "C" unsigned long long res()
    {
            return 0x82160001ULL;
    }
    
    xlC listing outputs:
         | 000000                           PDEF     res
        2|                                  PROC
        4| 000000 ld       E8620008   1     L8
    gr3=.+CONSTANT_AREA(gr2,0)
        4| 000004 ld       E8630000   1     L8
    gr3=+CONSTANT_AREA(gr3,0)
        5| 000008 bclr     4E800020   1     BA        lr
         |               Tag Table
         | 00000C        00000000 00092000 00000000 0000000C
         |               Instruction count            3
         |               Straight-line exec time      3
         |               Constant Area
         | 000000        00000000 82160001
    
    If using immediate instructions for above example, it would be
    more efficient:
    
    li rx,1
    oris rx,rx,0x8216
    

Local fix

  • N/A
    

Problem summary

  • PROBLEM DESCRIPTION: The compiler is not as efficient as it
    could be when loading certain constants.
    
    USERS AFFECTED: Users who use a constant that starts with 32
    zero-bits, has a 0 in the 49th bit, and a 1 for the 33rd bit
    when represented with 64-bits.
    

Problem conclusion

  • Added code to identify these constants and build them instead
    of loading them from the constant area.
    

Temporary fix

Comments

APAR Information

  • APAR number

    IV30067

  • Reported component name

    XL C/C++ FOR AI

  • Reported component ID

    5725C7200

  • Reported release

    C10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2012-10-12

  • Closed date

    2013-03-12

  • Last modified date

    2013-03-13

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

    LI77327

Fix information

  • Fixed component name

    XL C FOR AIX

  • Fixed component ID

    5725C7100

Applicable component levels

  • RC10 PSY U858497

       UP C



Rate this page:

(0 users)Average rating

Add comments

Document information


More support for:

XL C for AIX
Compiler

Software version:

12.1

Reference #:

IV30067

Modified date:

2013-03-13

Translate my page

Machine Translation

Content navigation