[LLVMbugs] [Bug 17195] New: ASM-based SIMD code -O2 performance and -g compilation errors

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Sep 11 08:34:47 PDT 2013


http://llvm.org/bugs/show_bug.cgi?id=17195

            Bug ID: 17195
           Summary: ASM-based SIMD code -O2 performance and -g compilation
                    errors
           Product: clang
           Version: 3.3
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
          Assignee: unassignedclangbugs at nondot.org
          Reporter: hadsell at blueskystudios.com
                CC: dgregor at apple.com, llvmbugs at cs.uiuc.edu
    Classification: Unclassified

Created attachment 11182
  --> http://llvm.org/bugs/attachment.cgi?id=11182&action=edit
test case described in bug report

Our C++ code embeds asm code for a calculation using SIMD instructions.  There
are 2 problems demonstrated by the attached test case.

(1) With G++ I have to use -fno-dse for optimized code; without it the code
runs much more slowly than the equivalent non-SIMD version.  With Clang++,
there is no such option, and the SIMD code runs more slowly than the non-SIMD
version.

The performance numbers look like this, running on Fedora 14 with a Xeon(R) CPU
X5680 @ 3.33GHz:

Clang++ SIMD version: 8.3 s.
Clang++ non-SIMD version: 5.8 s.
G++ SIMD version: 8.7 s.
G++ non-SIMD version: 11.2 s.

In the attached test case you can select the SIMD or non-SIMD version with a
#define macro in line 6.

Our Clang++ 3.3 was built with G++ 4.7.2.  I uses these options for compiling
and linking: -march=core2 -msse4.1 -m64 -std=c++0x -fPIC -pthread
-Wno-logical-op-parentheses -Wno-shift-op-parentheses -O2 -g

I used G++ 4.5.1 with these options: -march=core2 -msse4.1 -m64 -mpc64
-std=c++0x -pedantic-errors -mieee-fp -fPIC -pthread -O2 -g
-fno-strict-aliasing -fno-tree-ccp -fno-dse

(2) Compiling with -g for a debug (non-optimized) version produces errors like
this for the SIMD version:

clang_test.cc:373:2: error: ran out of registers during register allocation
        compute_factors_t (f0, f1, f2, f3, f0_1, f1_1, f2_1, f3_1,
        ^
clang_test.cc:197:10: note: expanded from macro 'compute_factors_t'
    asm ("movapd %1, %%xmm0                     \n\t"    \
         ^

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20130911/ed3b28b9/attachment.html>


More information about the llvm-bugs mailing list