Skip to main content

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

Copyright and trademark information

IBM, the IBM logo and ibm.com are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at www.ibm.com/legal/copytrade.shtml.

Rate this page:


(0 users)Average rating

Add comments

Document information

XL C for AIX

Compiler


Software version:
12.1


Reference #:
IV30067


Modified date:
2013-03-13

Translate my page

Content navigation