pgcc compile error on windows10

file name is “pi.c”.

#include<stdio.h>
#include<math.h>
#include<time.h>
#define N (1000000000)
int main(void){
  double a=0.0, x, dx=1.0/(double)N, s=0.0;
  double x_abc=0.0;
  long long i;
  clock_t start, stop;
  double elapsedtime;
  start = clock();

#pragma acc kernels
  for(i=0; i<N; i++){
    x = ((double)i+0.5)*dx;
    a += sqrt(1.0-x*x) * dx;
  }

  stop = clock();

  elapsedtime = (double)(stop-start)/CLOCKS_PER_SEC;

  printf("pi = %15.13f\n elapsed time = %f sec\n",4.0*a, elapsedtime);

  return 0;
}

My compilation environment is windows10 64.

PGI$ pgcc -acc pi.c is OK.

but

PGI$ pgcc -acc pi.c
C:\temp\pgcc2aLeAeVmt4GFlP.s: Assembler messages:
C:\temp\pgcc2aLeAeVmt4GFlP.s:298: Error: bad register name %xmm18' C:\temp\pgcc2aLeAeVmt4GFlP.s:299: Error: bad register name %xmm16’
C:\temp\pgcc2aLeAeVmt4GFlP.s:300: Error: bad register name %xmm17' C:\temp\pgcc2aLeAeVmt4GFlP.s:305: Error: bad register name %xmm19’
C:\temp\pgcc2aLeAeVmt4GFlP.s:306: Error: bad register name %xmm17' C:\temp\pgcc2aLeAeVmt4GFlP.s:307: Error: bad register name %xmm16’
C:\temp\pgcc2aLeAeVmt4GFlP.s:308: Error: bad register name %xmm18' C:\temp\pgcc2aLeAeVmt4GFlP.s:309: Error: bad register name %xmm21’
C:\temp\pgcc2aLeAeVmt4GFlP.s:310: Error: bad register name %xmm19' C:\temp\pgcc2aLeAeVmt4GFlP.s:311: Error: bad register name %xmm16’
C:\temp\pgcc2aLeAeVmt4GFlP.s:312: Error: bad register name %xmm19' C:\temp\pgcc2aLeAeVmt4GFlP.s:336: Error: bad register name %xmm16’
C:\temp\pgcc2aLeAeVmt4GFlP.s:337: Error: bad register name %xmm16' C:\temp\pgcc2aLeAeVmt4GFlP.s:338: Error: bad register name %xmm16’

why …?

Hi k.konsishi,

I tried compiling your file with “pgcc -acc pi.c” and it compiled and ran correctly on my Win10 system. Hence, I’m not sure why you’re getting the assembly errors.

But I’m not understanding what the difference is between the two lines. You state:

PGI$ pgcc -acc pi.c
is OK.

but

PGI$ pgcc -acc pi.c
C:\temp\pgcc2aLeAeVmt4GFlP.s: Assembler messages:

Though, these are the same compile lines.

What’s the difference between the “OK” compilation and the compile that gets the assembly errors?

-Mat

Hi,Mat.

Thank you for confirming it.

I was wrong.
The following questions are right.


PGI$ pgcc pi.c is OK.

but

PGI$ pgcc -acc pi.c
C:\temp\pgcc2aLeAeVmt4GFlP.s: Assembler messages:
C:\temp\pgcc2aLeAeVmt4GFlP.s:298: Error: bad register name %xmm18' C:\temp\pgcc2aLeAeVmt4GFlP.s:299: Error: bad register name %xmm16’
C:\temp\pgcc2aLeAeVmt4GFlP.s:300: Error: bad register name %xmm17' C:\temp\pgcc2aLeAeVmt4GFlP.s:305: Error: bad register name %xmm19’
C:\temp\pgcc2aLeAeVmt4GFlP.s:306: Error: bad register name %xmm17' C:\temp\pgcc2aLeAeVmt4GFlP.s:307: Error: bad register name %xmm16’
C:\temp\pgcc2aLeAeVmt4GFlP.s:308: Error: bad register name %xmm18' C:\temp\pgcc2aLeAeVmt4GFlP.s:309: Error: bad register name %xmm21’
C:\temp\pgcc2aLeAeVmt4GFlP.s:310: Error: bad register name %xmm19' C:\temp\pgcc2aLeAeVmt4GFlP.s:311: Error: bad register name %xmm16’
C:\temp\pgcc2aLeAeVmt4GFlP.s:312: Error: bad register name %xmm19' C:\temp\pgcc2aLeAeVmt4GFlP.s:336: Error: bad register name %xmm16’
C:\temp\pgcc2aLeAeVmt4GFlP.s:337: Error: bad register name %xmm16' C:\temp\pgcc2aLeAeVmt4GFlP.s:338: Error: bad register name %xmm16’

why …?

k.konishi