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 forvpsubd' 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 forvpsubd' 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 forvpaddd' 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.