[LLVMbugs] [Bug 24335] New: In i386 mode, some SSE intrinsics lead to "error in backend: Do not know how to split the result of this operator!"

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sun Aug 2 11:00:29 PDT 2015


https://llvm.org/bugs/show_bug.cgi?id=24335

            Bug ID: 24335
           Summary: In i386 mode, some SSE intrinsics lead to "error in
                    backend: Do not know how to split the result of this
                    operator!"
           Product: new-bugs
           Version: trunk
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
          Assignee: unassignedbugs at nondot.org
          Reporter: dimitry at andric.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

While doing a test build of the FreeBSD ports tree with clang trunk r241361, we
noticed the following failures:

http://package18.nyi.freebsd.org/data/headi386PR201377-default/2015-07-31_12h04m22s/logs/errors/lame-3.99.5_2.log
http://package18.nyi.freebsd.org/data/headi386PR201377-default/2015-07-31_12h04m22s/logs/errors/speexdsp-1.2.r3_1.log

Both of these are caused by the same thing, namely using SSE builtins while the
target architecture is i386, and the target CPU is i486 (which is still the
default on FreeBSD).

For instance, in case of lame, it uses __builtin_ia32_sqrtps(), and a reduced
testcase is:

typedef int x0 __attribute__((__vector_size__(16)));
x0 x1, x2;
x3() { x2 = __builtin_ia32_sqrtps(x1); }

In case of speexdsp, it uses __builtin_ia32_cvtps2pd(), and a reduced testcase
is:

__attribute__((__vector_size__(4 * sizeof(0)))) x0, x1;
x2() { x1 = __builtin_ia32_cvtps2pd(x0); }

For both testcases, you get the following backend crash report:

$ clang -cc1 -triple i386 -emit-obj -w testcase.c
SplitVectorResult #0: 0x2b9383a8: v4f32 = llvm.x86.sse.sqrt.ps 0x2b93830c,
0x2b938444 [ORD=5] [ID=0]

fatal error: error in backend: Do not know how to split the result of this
operator!

I think the frontend should already produce a warning or an error on calling
SSE intrinsics which are not supported by the backend.  It seems a bit lame to
crash this "late" in the compilation process...

-- 
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/20150802/a7f2f4aa/attachment.html>


More information about the llvm-bugs mailing list