A fix is available
APAR status
Closed as program error.
Error description
vec_splats for float, int/unsigned int and short/unsigned short are inefficient when loading from memory. Consider the following testcase: vector float splatFloat(float *in) { return vec_splats(*in); } xlC generates: | 000000 PDEF splatFloat(float *) | 000000 AKA splatFloat__FPf 9| PROC in,gr3 11| 000020 lfs C0030000 1 LFS vs0=(float)(gr3,0) 11| 000024 xscvdpsp F0000424 1 XCVDPSP vs0=vs0 11| 000028 xxspltw F0400291 1 VSPLTW vs34=vs0,0 12| 00002C bclr 4E800020 1 BA lr Optimal output can be generated with: vector float splatFloat_opt(float *in) { double d; vector float v; asm("lfiwzx %0,0,%1":"=f"(d):"r"(in)); asm("xxspltw %x0,%1,2":"=v"(v):"f"(d)); return v; } | 000000 PDEF splatFloat_opt(float *) | 000000 AKA splatFloat_opt__FPf 14| PROC in,gr3 18| 000040 lfiwzx 7C001EEE 1 ASMFPLS vs0='lfiwzx %0,0,%1,'f r:,1,(float)",gr3 19| 000044 xxspltw F0420291 1 ASMFP vs34='xxspltw %x0,%1,2,'v f:,2,vs0 21| 000048 bclr 4E800020 1 BA lr xlC -O2 -q64 -qarch=pwr7 -qaltivec -qlist -c splats.C -qtune=pwr7
Local fix
N/A
Problem summary
INEFFICIENT VEC_SPLATS WHEN LOADING FROM MEMORY
Problem conclusion
The problem had been addressed.
Temporary fix
Comments
APAR Information
APAR number
LI78467
Reported component name
XL C/C++ FOR LI
Reported component ID
5725C7300
Reported release
D10
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2015-02-25
Closed date
2015-02-25
Last modified date
2015-02-25
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/C++ FOR LI
Fixed component ID
5725C7300
Applicable component levels
RD10 PSY
UP
[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSXVZZ","label":"XL C\/C++ for Linux"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"13.1","Line of Business":{"code":"LOB57","label":"Power"}}]
Document Information
Modified date:
17 October 2021