IBM Support

IV68828: INEFFICIENT CODE FOR __VEC_STRMB

Subscribe

You can track all active APARs for this component.

APAR status

  • Closed as program error.

Error description

  • When compiling code that looks similar to the following:
    void store16(vector unsigned char v, char* p)
    {
       return __vec_strmb(p, 16, v);
    }
    
    the compiler generates a listing that looks similar to the
    following:
    __vec_strmb(p, 16, v):
         | 000000                           PDEF     store16(vector
    unsigned char, char *)
         | 000000                           AKA       store16__FacPc
       58|                                  PROC      v,p,vs34,gr3
       60| 000154 addi     38000010   1     LI        gr0=16
       60| 000158 lvx      7C2300CE   1     VLQ
    vs33=(char)(gr3,gr0,0)
       60| 00015C lvx      7C6018CE   1     VLQ
    vs35=(char)(gr3,0)
       60| 000160 lvsr     7C80184C   1     LVSR
    vs36=(char)(gr3,0)
       60| 000164 xxlxor   F00004D7   1     VXOR      vs32=vs32,vs32
       60| 000168 vspltisb 10BF030C   1     VSPLTISB  vs37=-1
       60| 00016C vperm    10C0292B   1     VPERM
    vs38=vs32,vs37,vs36
       60| 000170 vperm    1042112B   1     VPERM
    vs34=vs34,vs34,vs36
       60| 000174 vperm    1005012B   1     VPERM
    vs32=vs37,vs32,vs36
       60| 000178 xxsel    F001103F   1     VSEL
    vs32=vs33,vs34,vs32
       60| 00017C xxsel    F02311BF   1     VSEL
    vs33=vs35,vs34,vs38
       60| 000180 stvx     7C2019CE   1     VSTQ
    (char)(gr3,0)=vs33
       60| 000184 stvx     7C0301CE   1     VSTQ
    (char)(gr3,gr0,0)=vs32
       61| 000188 bclr     4E800020   0     BA        lr
    
    
    The expected output in the listings is to have single stvd2x.
    

Local fix

  • N/A
    

Problem summary

  • USERS AFFECTED:
    Users who use the __vec_strmb() builtin may be affected by this
    issue.
    
    PROBLEM DESCRIPTION:
    When observing the listing file generated for the __vec_strmb()
    section, the compiler generates unnecessary stvd2x instructions.
    

Problem conclusion

  • The compiler has been changed to not produce the unnecessary
    stvd2x instructions anymore.
    

Temporary fix

Comments

APAR Information

  • APAR number

    IV68828

  • Reported component name

    XL C/C++ FOR AI

  • Reported component ID

    5725C7200

  • Reported release

    D10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2015-01-21

  • Closed date

    2015-04-28

  • Last modified date

    2015-04-28

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

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

Fix information

  • Fixed component name

    XL C FOR AIX

  • Fixed component ID

    5725C7100

Applicable component levels

  • RD10 PSY

       UP



Document information

More support for: XL C for AIX
Compiler

Software version: 13.1

Reference #: IV68828

Modified date: 28 April 2015