Merge pull request #488 from dbabokin/broadcast_library

Efficient library implementation of broadcast
This commit is contained in:
jbrodman
2013-05-03 11:04:26 -07:00

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 {