Efficient library implementation of broadcast
This commit is contained in:
@@ -569,10 +569,9 @@ divert`'dnl
|
|||||||
define(`shuffles', `
|
define(`shuffles', `
|
||||||
define <WIDTH x $1> @__broadcast_$1(<WIDTH x $1>, i32) nounwind readnone alwaysinline {
|
define <WIDTH x $1> @__broadcast_$1(<WIDTH x $1>, i32) nounwind readnone alwaysinline {
|
||||||
%v = extractelement <WIDTH x $1> %0, i32 %1
|
%v = extractelement <WIDTH x $1> %0, i32 %1
|
||||||
%r_0 = insertelement <WIDTH x $1> undef, $1 %v, i32 0
|
%broadcast_init = 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
|
%broadcast = shufflevector <WIDTH x $1> %broadcast_init, <WIDTH x $1> undef, <WIDTH x i32> zeroinitializer
|
||||||
')
|
ret <WIDTH x $1> %broadcast
|
||||||
ret <WIDTH x $1> %r_`'eval(WIDTH-1)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
define <WIDTH x $1> @__rotate_$1(<WIDTH x $1>, i32) nounwind readnone alwaysinline {
|
define <WIDTH x $1> @__rotate_$1(<WIDTH x $1>, i32) nounwind readnone alwaysinline {
|
||||||
|
|||||||
Reference in New Issue
Block a user