You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[doc][IR] Add documentation for llvm.vector.(de)interleave3/5/7 (llvm#133519)
I put the documentation of all factors into the same (de)interleave
entries because I really don't see a reason to separate them in an
already long LangRef page.
@@ -20126,27 +20132,32 @@ This is an overloaded intrinsic.
20126
20132
20127
20133
declare <4 x double> @llvm.vector.interleave2.v4f64(<2 x double> %vec1, <2 x double> %vec2)
20128
20134
declare <vscale x 8 x i32> @llvm.vector.interleave2.nxv8i32(<vscale x 4 x i32> %vec1, <vscale x 4 x i32> %vec2)
20135
+
declare <vscale x 6 x i8> @llvm.vector.interleave3.nxv6i8(<vscale x 2 x i8> %vec0, <vscale x 2 x i8> %vec1, <vscale x 2 x i8> %vec2)
20136
+
declare <10 x i32> @llvm.vector.interleave5.v10i32(<2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> %vec2, <2 x i32> %vec3, <2 x i32> %vec4)
20137
+
declare <14 x i32> @llvm.vector.interleave7.v14i32(<2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> %vec2, <2 x i32> %vec3, <2 x i32> %vec4, <2 x i32> %vec5, <2 x i32> %vec6)
20129
20138
20130
20139
Overview:
20131
20140
"""""""""
20132
20141
20133
-
The '``llvm.vector.interleave2``' intrinsic constructs a vector
20134
-
by interleaving two input vectors.
20142
+
The '``llvm.vector.interleave2/3/5/7``' intrinsic constructs a vector
20143
+
by interleaving all the input vectors.
20135
20144
20136
20145
This intrinsic works for both fixed and scalable vectors. While this intrinsic
20137
20146
supports all vector types the recommended way to express this operation for
20138
-
fixed-width vectors is still to use a shufflevector, as that may allow for more
20139
-
optimization opportunities.
20147
+
factor of 2 on fixed-width vectors is still to use a shufflevector, as that
20148
+
may allow for more optimization opportunities.
20140
20149
20141
20150
For example:
20142
20151
20143
20152
.. code-block:: text
20144
20153
20145
20154
<4 x i64> llvm.vector.interleave2.v4i64(<2 x i64> <i64 0, i64 2>, <2 x i64> <i64 1, i64 3>); ==> <4 x i64> <i64 0, i64 1, i64 2, i64 3>
20155
+
<6 x i32> llvm.vector.interleave3.v6i32(<2 x i32> <i32 0, i32 3>, <2 x i32> <i32 1, i32 4>, <2 x i32> <i32 2, i32 5>)
0 commit comments