cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
BradleyB19
Newbie
Newbie
623 Views
Registered: ‎09-24-2020

HLS error compiling with immintrin.h in Vivado 2020.2

I get the following error:

ERROR: [v++ 207-3779] use of undeclared identifier '__builtin_ia32_emms'; did you mean '__builtin_isless'?: /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:47:5
ERROR: [v++ 207-3674] too few arguments to function call, expected 2, have 0: /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:47:25
ERROR: [v++ 207-3778] use of undeclared identifier '__builtin_ia32_vec_init_v2si': /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:64:19
ERROR: [v++ 207-3778] use of undeclared identifier '__builtin_ia32_vec_ext_v2si': /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:81:12
ERROR: [v++ 207-3778] use of undeclared identifier '__builtin_ia32_packsswb': /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:143:19
ERROR: [v++ 207-3778] use of undeclared identifier '__builtin_ia32_packssdw': /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:173:19
ERROR: [v++ 207-3778] use of undeclared identifier '__builtin_ia32_packuswb': /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:203:19
ERROR: [v++ 207-3778] use of undeclared identifier '__builtin_ia32_punpckhbw': /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:230:19
ERROR: [v++ 207-3778] use of undeclared identifier '__builtin_ia32_punpckhwd': /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:253:19
ERROR: [v++ 207-3778] use of undeclared identifier '__builtin_ia32_punpckhdq': /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:274:19
ERROR: [v++ 207-3778] use of undeclared identifier '__builtin_ia32_punpcklbw': /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:301:19
ERROR: [v++ 207-3778] use of undeclared identifier '__builtin_ia32_punpcklwd': /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:324:19
ERROR: [v++ 207-3778] use of undeclared identifier '__builtin_ia32_punpckldq': /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:345:19
ERROR: [v++ 207-3778] use of undeclared identifier '__builtin_ia32_paddb': /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:366:19
ERROR: [v++ 207-3778] use of undeclared identifier '__builtin_ia32_paddw': /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:387:19
ERROR: [v++ 207-3778] use of undeclared identifier '__builtin_ia32_paddd': /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:408:19
ERROR: [v++ 207-3778] use of undeclared identifier '__builtin_ia32_paddsb': /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:430:19
ERROR: [v++ 207-3778] use of undeclared identifier '__builtin_ia32_paddsw': /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:453:19
ERROR: [v++ 207-3778] use of undeclared identifier '__builtin_ia32_paddusb': /opt/Xilinx/Vitis/2020.1/lnx64/tools/clang-3.9-csynth/lib/clang/7.0.0/include/mmintrin.h:475:19

when trying to compile using Vivado 2020.2 on centos 7. This error was mentioned for previous versions here: https://forums.xilinx.com/t5/High-Level-Synthesis-HLS/Including-immintrin-h-causes-HLS-Synthesis-to-fail-with/m-p/1062492

 

I was wondering if there was any workaround or if this is planned to be fixed. Thanks!

0 Kudos
3 Replies
scampbell
Moderator
Moderator
577 Views
Registered: ‎10-04-2011

Hello @BradleyB19 ,

If I understand right, this library is an Intel provided library for vector processing - intel processor vector intrinsics. HLS would not support these for synthesis unfortunately due to the use of non-standard data types, and the vector based instructions which move to/from memory like this from the other forum post you mentioned: 

__builtin_ia32_storeups

For our Versal devices, with the AIE, we provide our own intrinsics for vector based processing which are similar, but different, than those of the intel architecture. 

Ok, I think the answer here is that this library is not compatible with HLS, and that there are no plans to provide this support right now. Please let me know if any questions or comments then.

Regards,
Scott

0 Kudos
BradleyB9
Observer
Observer
570 Views
Registered: ‎09-25-2020

Thanks @scampbell ,

 

Could you please point me to any documentation for the compatible vector intrinsics you mentioned?

 

Thanks!

0 Kudos
scampbell
Moderator
Moderator
560 Views
Registered: ‎10-04-2011

Hello,

I think I should first mention that these intrinsics won't be supported in Vivado HLS, or Vitis HLS, for IP development at any time, and are only supported in the Vitis AIE flow for the AIE tiles. This is because the AIE tiles themselves are what enabled the vector processing capabilities. This AIE tile support in Vitis will be in public release in the 2020.2 version of the tools coming soon. So for HLS, you would need to manually create any parallel processing capabilities in the C code. 

For reference then, here is the relevant documentation on the AIE which discusses vector processing capabilities in general:
https://www.xilinx.com/support/documentation/white_papers/wp506-ai-engine.pdf

And the general Versal AIE page:
https://www.xilinx.com/products/silicon-devices/acap/versal-ai-core.html

Unfortunately, the details of the intrinsics are not yet released, and are behind a special access lounge until the 2020.2 release. You may contact your FAE to request access to that before then.

OK, I hope this helps,
Scott

 

 

0 Kudos