Skip to main content

IV37628: USE LFIWAX/LFIWZX FOR INT TO FLOAT CONVERSION


Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Compiler is not using lfiwax/lfiwzx assembler instruction
    for int to double conversion.
    
    Consider the following testcase:
    
    $cat intToDbl.C
    
    /******************************/
    
    double intToDbl(signed int *in)
    {
      return (double)(*in);
    }
    
    double intToDbl(signed int in)
    {
      return (double)(in);
    }
    
    double uintToDbl(unsigned int *in)
    {
      return (double)(*in);
    }
    
    double uintToDbl(unsigned int in)
    {
      return (double)(in);
    }
    /******************************/
    
    Compile the source file as:
    
    xlC -c -q64 -qlist -O2 intToDbl.C -qarch=pwr7
    
    
    Review output in intToDbl.lst file:
    
    ...
    ...
    
         | 000000                           PDEF     intToDbl(int *)
         | 000000                           AKA       intToDbl__FPi
        3|                                  PROC      in,gr3
        5| 000000 lwa      E8030002   1     L4A
    gr0=(int)(gr3,0)
        5| 000004 std      F801FFF0   1     ST8
    #MX_CONVF1_0(gr1,-16)=gr0
        5| 000008 lfd      C801FFF0   1     LFL
    vs0=#MX_CONVF1_0(gr1,-16)
        5| 00000C xscvsxdd F02005E0   1     FCFID     vs1=vs0,fcr
    
    
    Instead, the compiler should generate a lfiwax + xscvsxdd
    sequence:
    
    | 000000                           PDEF     intToDbl(int *)
         | 000000                           AKA       intToDbl__FPi
        1|                                  PROC      in,gr3
        3| 000000 lfiwax   7C001EAE   1     LFIWAX
    vs0=(int)(gr3,0)
        3| 000004 xscvsxdd F02005E0   1     FCFID     vs1=vs0,fcr
    

Local fix

  • Not applicable
    

Problem summary

  • compiler does not uses lfiwax/lfiwzx instructions for int to
    float conversion with -q64
    

Problem conclusion

  • Relaxing the opportunity check code to use new instruction with
    -q64
    

Temporary fix

Comments

APAR Information

  • APAR number

    IV37628

  • 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

    2013-03-05

  • 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:

    LI77362

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 #:
IV37628


Modified date:
2013-03-13

Translate my page

Content navigation