Open Quuxplusone opened 11 years ago
Bugzilla Link | PR15010 |
Status | NEW |
Importance | P normal |
Reported by | Michael Gottesman (mgottesman@apple.com) |
Reported on | 2013-01-20 15:22:32 -0800 |
Last modified on | 2018-10-25 20:12:08 -0700 |
Version | trunk |
Hardware | PC All |
CC | llvm-bugs@lists.llvm.org, pawel@32bitmicro.com, richard-llvm@metafoo.co.uk |
Fixed by commit(s) | |
Attachments | |
Blocks | |
Blocked by | |
See also |
The same seems to happen with float2:
-----
typedef float float2 __attribute__((ext_vector_type(2)));
float2 test3(float2 x, float2 y) {
return x + y;
}
-----
-----
define double @test3(double %x.coerce, double %y.coerce) nounwind uwtable ssp {
entry:
%retval = alloca <2 x float>, align 8
%x = alloca <2 x float>, align 8
%x.addr = alloca <2 x float>, align 8
%y = alloca <2 x float>, align 8
%y.addr = alloca <2 x float>, align 8
%0 = bitcast <2 x float>* %x to double*
store double %x.coerce, double* %0, align 1
%x1 = load <2 x float>* %x, align 8
store <2 x float> %x1, <2 x float>* %x.addr, align 8
%1 = bitcast <2 x float>* %y to double*
store double %y.coerce, double* %1, align 1
%y2 = load <2 x float>* %y, align 8
store <2 x float> %y2, <2 x float>* %y.addr, align 8
%2 = load <2 x float>* %x.addr, align 8
%3 = load <2 x float>* %y.addr, align 8
%add = fadd <2 x float> %2, %3
store <2 x float> %add, <2 x float>* %retval
%4 = bitcast <2 x float>* %retval to double*
%5 = load double* %4, align 1
ret double %5
}
-----