Efficient library implementation of broadcast

This commit is contained in:
Dmitry Babokin
2013-05-02 00:12:16 +02:00
parent 32be338f60
commit a47460b4c3

View File

@@ -569,10 +569,9 @@ divert`'dnl
define(`shuffles', `
define <WIDTH x $1> @__broadcast_$1(<WIDTH x $1>, i32) nounwind readnone alwaysinline {
%v = extractelement <WIDTH x $1> %0, i32 %1
%r_0 = insertelement <WIDTH x $1> undef, $1 %v, i32 0
forloop(i, 1, eval(WIDTH-1), ` %r_`'i = insertelement <WIDTH x $1> %r_`'eval(i-1), $1 %v, i32 i
')
ret <WIDTH x $1> %r_`'eval(WIDTH-1)
%broadcast_init = insertelement <WIDTH x $1> undef, $1 %v, i32 0
%broadcast = shufflevector <WIDTH x $1> %broadcast_init, <WIDTH x $1> undef, <WIDTH x i32> zeroinitializer
ret <WIDTH x $1> %broadcast
}
define <WIDTH x $1> @__rotate_$1(<WIDTH x $1>, i32) nounwind readnone alwaysinline {