Quantcast
Channel: Intel® Many Integrated Core Architecture
Viewing all articles
Browse latest Browse all 1347

Labels in inline asm, error of compilation

$
0
0
 

I try to make inline asm in C code for MIC (Intel Xeon Phi). And I have a problem with instruction jknzd.

This is a fragment of my code:

   float *A = (float*)_mm_malloc(N * sizeof(float), 64);
   int32_t* Indx = (int32_t*)_mm_malloc(N * sizeof(int32_t), 64);

   __m512i idx = __cdecl _mm512_load_epi32(&Indx[i]);
   asm ("kxnor %%k1, %%k1\n\t""1:""vgatherpf0dps (%0, %1, 4){{%%k1}}\n\t""jknzd 1b, %%k1"
          :
          :"r"(A),"x"(idx)
          :"%r8d", "%k1"
   );  

Compiler is icc-13.0.1, options: -mmic -lrt -O3. When I try to compile, I get this message:

/tmp/icc1XDD1vas_.s: Assembler messages: /tmp/icc1XDD1vas_.s:237: Error: invalid char '{' beginning operand 1 {rz-sae}' /tmp/icc1XDD1vas_.s:250: Error: invalid char '{' beginning operand 1{rn-sae}' /tmp/icc1XDD1vas_.s:254: Error: invalid char '{' beginning operand 1 {rn-sae}' /tmp/icc1XDD1vas_.s:260: Error: invalid char '{' beginning operand 1{rn-sae}' /tmp/icc1XDD1vas_.s:263: Error: invalid char '{' beginning operand 1 {rn-sae}' /tmp/icc1XDD1vas_.s:264: Error: invalid char '{' beginning operand 1{rn-sae}' /tmp/icc1XDD1vas_.s:360: Error: invalid char '{' beginning operand 1 {rz-sae}' /tmp/icc1XDD1vas_.s:373: Error: invalid char '{' beginning operand 1{rn-sae}' /tmp/icc1XDD1vas_.s:375: Error: invalid char '{' beginning operand 1 {rn-sae}' /tmp/icc1XDD1vas_.s:378: Error: invalid char '{' beginning operand 1{rn-sae}' /tmp/icc1XDD1vas_.s:383: Error: invalid char '{' beginning operand 1 {rn-sae}' /tmp/icc1XDD1vas_.s:385: Error: invalid char '{' beginning operand 1{rn-sae}' /tmp/icc1XDD1vas_.s:398: Error: invalid char '{' beginning operand 1 {rz-sae}' /tmp/icc1XDD1vas_.s:402: Error: invalid char '{' beginning operand 1{rn-sae}' /tmp/icc1XDD1vas_.s:415: Error: invalid char '{' beginning operand 1 {rn-sae}' /tmp/icc1XDD1vas_.s:417: Error: invalid char '{' beginning operand 1{rn-sae}' /tmp/icc1XDD1vas_.s:421: Error: invalid char '{' beginning operand 1 {rn-sae}' /tmp/icc1XDD1vas_.s:422: Error: invalid char '{' beginning operand 1{rn-sae}'

If there is a simple jump, like "jmp 1b" it's ok. What am I doing wrong?


Viewing all articles
Browse latest Browse all 1347


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>