Unable to compile fortran for Haswell

I’ve tried to use PGI 14.4 for Windows to compile Polyhedron2011 benchmarks (link to download sources): http://www.polyhedron.com/fortran-compiler-comparisons/polyhedron-benchmark-suite

x86 command line works fine for ac.f90 source file from benchmarks mentioned above.

x64 command line fails due to unknown/wrong assembler instructions:

pgf90 -fast -tp=haswell-64 ac.f90
C:\temp\pgf906enKidNRD-3C2i.s: Assembler messages:
C:\temp\pgf906enKidNRD-3C2i.s:708: Error: no such instruction: vinserti128 $1,%xmm0,%ymm0,%ymm2' C:\temp\pgf906enKidNRD-3C2i.s:714: Error: no such instruction: vinserti128 $1,%xmm1,%ymm1,%ymm1’
C:\temp\pgf906enKidNRD-3C2i.s:726: Error: operand type mismatch for vpsubd' C:\temp\pgf906enKidNRD-3C2i.s:729: Error: operand type mismatch for vpaddd’
C:\temp\pgf906enKidNRD-3C2i.s:750: Error: no such instruction: vinserti128 $1,%xmm1,%ymm1,%ymm1' C:\temp\pgf906enKidNRD-3C2i.s:755: Error: no such instruction: vinserti128 $1,%xmm0,%ymm0,%ymm2’
C:\temp\pgf906enKidNRD-3C2i.s:766: Error: operand type mismatch for vpsubd' C:\temp\pgf906enKidNRD-3C2i.s:769: Error: operand type mismatch for vpaddd’
C:\temp\pgf906enKidNRD-3C2i.s:1111: Error: no such instruction: vinserti128 $1,%xmm0,%ymm0,%ymm1' C:\temp\pgf906enKidNRD-3C2i.s:1118: Error: no such instruction: vinserti128 $1,%xmm0,%ymm0,%ymm0’
C:\temp\pgf906enKidNRD-3C2i.s:1127: Error: operand type mismatch for vpaddd' C:\temp\pgf906enKidNRD-3C2i.s:1129: Error: operand type mismatch for vpcmpgtd’
C:\temp\pgf906enKidNRD-3C2i.s:1130: Error: operand type mismatch for `vpblendvb’

C:\temp\pgf906enKidNRD-3C2i.s:1149: Error: no such instruction: vinserti128 $1,%xmm0,%ymm0,%ymm1' C:\temp\pgf906enKidNRD-3C2i.s:1153: Error: no such instruction: vinserti128 $1,%xmm0,%ymm0,%ymm0’
C:\temp\pgf906enKidNRD-3C2i.s:1161: Error: operand type mismatch for vpaddd' C:\temp\pgf906enKidNRD-3C2i.s:1162: Error: operand type mismatch for vpcmpgtd’
C:\temp\pgf906enKidNRD-3C2i.s:1164: Error: operand type mismatch for `vpblendvb’

C:\temp\pgf906enKidNRD-3C2i.s:5403: Error: operand type mismatch for vpxor' C:\temp\pgf906enKidNRD-3C2i.s:5416: Error: operand type mismatch for vpaddd’
C:\temp\pgf906enKidNRD-3C2i.s:5418: Error: no such instruction: vextracti128 $1,%ymm0,%xmm1' C:\temp\pgf906enKidNRD-3C2i.s:5461: Error: operand type mismatch for vpxor’
C:\temp\pgf906enKidNRD-3C2i.s:5471: Error: operand type mismatch for vpaddd' C:\temp\pgf906enKidNRD-3C2i.s:5477: Error: no such instruction: vextracti128 $1,%ymm0,%xmm1’
C:\temp\pgf906enKidNRD-3C2i.s:5516: Error: operand type mismatch for vpxor' C:\temp\pgf906enKidNRD-3C2i.s:5524: Error: operand type mismatch for vpaddd’
C:\temp\pgf906enKidNRD-3C2i.s:5529: Error: no such instruction: `vextracti128 $1,%ymm0,%xmm1’


Could you please tell me if I’m doing something wrong?
It seems that Haswell support is only for x86 compiler.

Hi Vladimir,

In PGI 14.4, we inadvertently shipped a version of the 64-bit assembler for Windows that did not support Haswell instructions. This will be fixed for 14.6, which is due out this week. If you can wait a day or two, I would suggest upgrading your PGI compiler installation to version 14.6. Otherwise, I can send you a copy of the updated assembler. Let me know which you prefer.

Best regards,

+chris

Yeap, thank you, I’ll wait for update.

I’ve tried 14.6. Seems like everything is ok. Thanks for quick turnaround.