Fixes are available
March 2013 PTF for XL C for AIX, V12.1
March 2013 PTF for XL C/C++ for AIX, V12.1
XL C/C++ for AIX Fix Pack 4 (June 2013 PTF) for 12.1
XL C/C++ for AIX Fix Pack 5 (September 2013 PTF) for 12.1
XL C/C++ for AIX Fix Pack 7 (January 2014 PTF) for 12.1
XL C for AIX Fix Pack 8 (March 2014 PTF) for 12.1
XL C/C++ for AIX Fix Pack 8 (March 2014 PTF) for 12.1
XL C/C++ for AIX Fix Pack 11 (February 2015 PTF) for 12.1
XL C for AIX Fix Pack 12 (May 2015 PTF) for 12.1
XL C/C++ for AIX Fix Pack 12 (May 2015 PTF) for 12.1
XL C/C++ for AIX Fix Pack 13 (August 2015 Update) for 12.1
XL C/C++ for AIX Fix Pack 14 (December 2015 Update) for 12.1
XL C for AIX Fix Pack 15 (April 2016 Update) for 12.1
XL C/C++ for AIX Fix Pack 15 (April 2016 Update) for 12.1
XL C for AIX Fix Pack 16 (July 2016 Update) for 12.1
XL C/C++ for AIX Fix Pack 16 (July 2016 Update) for 12.1
XL C/C++ for AIX Fix Pack 17 (November 2016 Update) for 12.1
XL C for AIX Fix Pack 17 (November 2016 Update) for 12.1
XL C for AIX Fix Pack 18 (February 2017 Update) for 12.1
XL C/C++ for AIX Fix Pack 18 (February 2017 Update) for 12.1
XL C for AIX Fix Pack 19 (August 2017 Update) for 12.1
XL C/C++ for AIX Fix Pack 19 (August 2017 Update) for 12.1
XL C for AIX Fix Pack 20 (March 2018 Update) for 12.1
XL C/C++ for AIX Fix Pack 20 (March 2018 Update) for 12.1
XL C for AIX Fix Pack 4 (June 2013 PTF) for 12.1
XL C for AIX Fix Pack 5 (September 2013 PTF) for 12.1
XL C for AIX Fix Pack 6 (December 2013 PTF) for 12.1
XL C/C++ for AIX Fix Pack 6 (December 2013 PTF) for 12.1
XL C for AIX Fix Pack 7 (January 2014 PTF) for 12.1
XL C for AIX Fix Pack 9 (July 2014 PTF) for 12.1
XL C/C++ for AIX Fix Pack 9 (July 2014 PTF) for 12.1
XL C for AIX Fix Pack 10 (October 2014 PTF) for 12.1
XL C/C++ for AIX Fix Pack 10 (October 2014 PTF) for 12.1
XL C for AIX Fix Pack 11 (February 2015 PTF) for 12.1
XL C for AIX Fix Pack 13 (August 2015 Update) for 12.1
XL C for AIX Fix Pack 14 (December 2015 Update) for 12.1
XL C/C++ for AIX Fix Pack 21 (January 2019 Update) for 12.1
XL C for AIX Fix Pack 21 (January 2019 Update) for 12.1
APAR status
Closed as program error.
Error description
The following test case shows how the compiler produces non-optimal code: ====Compile Line: xlC -q64 -O2 -qarch=pwr7 -c -qlist -qaltivec test.C ====Testcase: $ cat test.C #include <builtins.h> extern "C" bool vec_nan(vector double x) { return vec_any_nan(x); } $ Generates: | 000000 PDEF vec_nan 4| PROC x,vs34 6| 000000 xvcmpeqd F002171E 1 VCDCEQ_R vs0,cr6=vs34,vs34 6| 000004 mfcr 7C102026 1 LFCR1 gr0=cr6,6 6| 000008 rlwinm 5400CFFE 1 RN4 gr0=gr0,25,0x1 6| 00000C subfic 20000001 1 SUBC gr0,ca=1,gr0 6| 000010 cntlzw 7C030034 1 CNTLZ4 gr3=gr0 6| 000014 addi 3803FFE0 1 AI gr0=gr3,-32 6| 000018 rlwinm 54030FFE 1 SRL4 gr3=gr0,31 7| 00001C bclr 4E800020 1 BA lr Optimal code: | 000000 PDEF vec_nan_opt 9| PROC x,vs34 11| 000030 xvcmpeqd F002171E 1 VCDCEQ_R vs0,cr6=vs34,vs34 11| 000034 addi 38600001 1 LI gr3=1 11| 000038 bclr 4C980020 1 BF CL.3,cr6,0x1/lt,taken=50%(0,0) 11| 00003C addi 38600000 1 LI gr3=0 12| CL.3: 12| 000040 bclr 4E800020 1 BA lr
Local fix
The optimal code can be created using: extern "C" bool vec_nan_opt(vector double x) { return vec_any_ne(x,x); }
Problem summary
USERS AFFECTED: Users that want peak performance using the vec_any_nan builtin may be affected by this issue. PROBLEM DESCRIPTION: There have been minor performance issues for the vec_any_nan builtin function that may not be noticable, but can potentially add up if numerous calls are made.
Problem conclusion
The minor performance issues for vec_any_nan builtin have been improved.
Temporary fix
Comments
APAR Information
APAR number
IV37038
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 / Xsystem
Submitted date
2013-02-20
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:
Fix information
Fixed component name
XL C FOR AIX
Fixed component ID
5725C7100
Applicable component levels
RC10 PSY UP
C
Document Information
Modified date:
21 August 2024