This is the mail archive of the cygwin mailing list for the Cygwin project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Agner Fog wrote:
Clang is using 64-bit absolute addresses when accessing static data in 64-bit mode. This is inefficient because it requires an extra 10-bytes long instruction for loading an address into a register every time it needs to access static data. All other compilers use relative addresses.Example:#include <immintrin.h> __m128d test (__m128d a) { __m128d b = _mm_add_pd(a, _mm_set1_pd(1.5)); __m128d c = _mm_mul_pd(b, _mm_set1_pd(2.5)); return c; }Assembly output:.LCPI0_0: .quad 4609434218613702656 # double 1.5 .quad 4609434218613702656 # double 1.5 .LCPI0_1: .quad 4612811918334230528 # double 2.5 .quad 4612811918334230528 # double 2.5 .text .globl _Z4testDv2_d .p2align 4, 0x90 _Z4testDv2_d: # @_Z4testDv2_d # BB#0: vmovapd (%rcx), %xmm0 movabsq $.LCPI0_0, %rax vaddpd (%rax), %xmm0, %xmm0 movabsq $.LCPI0_1, %rax vmulpd (%rax), %xmm0, %xmm0 retqLinux Clang uses 32-bit relative addresses:vaddpd .LCPI0_0(%rip), %xmm0, %xmm0 vmulpd .LCPI0_1(%rip), %xmm0, %xmm0 retq
This kind of bug report should probably go to the Clang bugtracker at https://bugs.llvm.org . On that page you could enter "clang cygwin" in the Quick Search field and see what known issues there are.
Clang is packaged for Cygwin by a very industrious and busy maintainer, but no development on Clang is being done here (to my knowledge). So something like a Cygwin packaging error that breaks Clang on Cygwin would be on-topic for this list, but a problem at code generation level should go to the Clang developers.
..mark -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |