Description
Bugzilla Link | 9473 |
Resolution | FIXED |
Resolved on | Jul 26, 2011 20:47 |
Version | trunk |
OS | Linux |
Reporter | LLVM Bugzilla Contributor |
CC | @bcardosolopes |
Extended Description
OS: Linux 64bit
Target-triple: x86_64-unknown-linux-gnu
LLVM revision: r127562
In the following int-to-double cast expression, x86 AVX backend reports "Cannot select" error.
// test.c
int
main()
{
double x;
int i;
x = i;
}
$ clang -c -emit-llvm test.c
$ llvm -mattr=+avx test.o
fatal error: error in backend: Cannot select: 0x3cd30e0: f64 = sint_to_fp
0x3cd2fe0 [ORD=3] [ID=8]
0x3cd2fe0: i32,ch = load 0x3cd2de0, 0x3cd2ee0, 0x3cd2ce0<LD4[%i]> [ORD=2] [ID=7]
0x3cd2ee0: i64 = FrameIndex<2> [ORD=2] [ID=4]
0x3cd2ce0: i64 = undef [ORD=1] [ID=3]
// llvm-dis test.o
; ModuleID = 'test.o'
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
target triple = "x86_64-unknown-linux-gnu"
define i32 @main() nounwind {
entry:
%retval = alloca i32, align 4
%x = alloca double, align 8
%i = alloca i32, align 4
store i32 0, i32* %retval
%tmp = load i32* %i, align 4
%conv = sitofp i32 %tmp to double
store double %conv, double* %x, align 8
%0 = load i32* %retval
ret i32 %0
}