@@ -352,6 +352,11 @@ extern "C" {
352
352
fn vsr ( a : vector_signed_int , b : vector_signed_int ) -> vector_signed_int ;
353
353
#[ link_name = "llvm.ppc.altivec.sro" ]
354
354
fn vsro ( a : vector_signed_int , b : vector_signed_int ) -> vector_signed_int ;
355
+
356
+ #[ link_name = "llvm.ppc.altivec.slv" ]
357
+ fn vslv ( a : vector_unsigned_char , b : vector_unsigned_char ) -> vector_unsigned_char ;
358
+ #[ link_name = "llvm.ppc.altivec.srv" ]
359
+ fn vsrv ( a : vector_unsigned_char , b : vector_unsigned_char ) -> vector_unsigned_char ;
355
360
}
356
361
357
362
macro_rules! s_t_l {
@@ -3137,6 +3142,42 @@ where
3137
3142
a. vec_sro ( b)
3138
3143
}
3139
3144
3145
+ /// Vector Shift Left Variable
3146
+ ///
3147
+ /// ## Result value
3148
+ /// Let v be a 17-byte vector formed from a in bytes `[0:15]` and a zero byte in element 16.
3149
+ /// Then each byte element i of r is determined as follows. The start bit sb is
3150
+ /// obtained from bits 5:7 of byte element i of b. Then the contents of bits sb:sb+7 of the
3151
+ /// halfword in byte elements i:i+1 of v are placed into byte element i of r.
3152
+ ///
3153
+ /// ## Endian considerations
3154
+ /// All bit and byte element numbers are specified in big-endian order. This intrinsic is not
3155
+ /// endian-neutral.
3156
+ #[ inline]
3157
+ #[ target_feature( enable = "power9-altivec" ) ]
3158
+ #[ unstable( feature = "stdarch_powerpc" , issue = "111145" ) ]
3159
+ pub unsafe fn vec_slv ( a : vector_unsigned_char , b : vector_unsigned_char ) -> vector_unsigned_char {
3160
+ vslv ( a, b)
3161
+ }
3162
+
3163
+ /// Vector Shift Right Variable
3164
+ ///
3165
+ /// ## Result value
3166
+ /// Let v be a 17-byte vector formed from a zero byte in element 0 and the elements of
3167
+ /// a in bytes `[1:16]`. Then each byte element i of r is determined as follows. The start bit sb is
3168
+ /// obtained from bits 5:7 of byte element i of b. Then the contents of bits (8 – sb):(15 – sb) of
3169
+ /// the halfword in byte elements i:i+1 of v are placed into byte element i of r.
3170
+ ///
3171
+ /// ## Endian considerations
3172
+ /// All bit and byte element numbers are specified in big-endian order. This intrinsic is not
3173
+ /// endian-neutral.
3174
+ #[ inline]
3175
+ #[ target_feature( enable = "power9-altivec" ) ]
3176
+ #[ unstable( feature = "stdarch_powerpc" , issue = "111145" ) ]
3177
+ pub unsafe fn vec_srv ( a : vector_unsigned_char , b : vector_unsigned_char ) -> vector_unsigned_char {
3178
+ vsrv ( a, b)
3179
+ }
3180
+
3140
3181
/// Vector Load Indexed.
3141
3182
#[ inline]
3142
3183
#[ target_feature( enable = "altivec" ) ]
0 commit comments