@@ -1105,8 +1105,8 @@ fn generic_simd_intrinsic(
11051105 let m_len = match in_ty. kind {
11061106 // Note that this `.unwrap()` crashes for isize/usize, that's sort
11071107 // of intentional as there's not currently a use case for that.
1108- ty:: Int ( i) => i. bit_width ( ) . unwrap ( ) ,
1109- ty:: Uint ( i) => i. bit_width ( ) . unwrap ( ) ,
1108+ ty:: Int ( i) => i. bit_width ( ) . unwrap ( ) as u64 ,
1109+ ty:: Uint ( i) => i. bit_width ( ) . unwrap ( ) as u64 ,
11101110 _ => return_error ! ( "`{}` is not an integral type" , in_ty) ,
11111111 } ;
11121112 require_simd ! ( arg_tys[ 1 ] , "argument" ) ;
@@ -1116,7 +1116,7 @@ fn generic_simd_intrinsic(
11161116 m_len, v_len
11171117 ) ;
11181118 let i1 = bx. type_i1 ( ) ;
1119- let i1xn = bx. type_vector ( i1, m_len as u64 ) ;
1119+ let i1xn = bx. type_vector ( i1, m_len) ;
11201120 let m_i1s = bx. bitcast ( args[ 0 ] . immediate ( ) , i1xn) ;
11211121 return Ok ( bx. select ( m_i1s, args[ 1 ] . immediate ( ) , args[ 2 ] . immediate ( ) ) ) ;
11221122 }
@@ -1160,7 +1160,7 @@ fn generic_simd_intrinsic(
11601160 }
11611161
11621162 if name. starts_with ( "simd_shuffle" ) {
1163- let n: usize = name[ "simd_shuffle" . len ( ) ..] . parse ( ) . unwrap_or_else ( |_|
1163+ let n: u64 = name[ "simd_shuffle" . len ( ) ..] . parse ( ) . unwrap_or_else ( |_|
11641164 span_bug ! ( span, "bad `simd_shuffle` instruction only caught in codegen?" ) ) ;
11651165
11661166 require_simd ! ( ret_ty, "return" ) ;
@@ -1175,7 +1175,7 @@ fn generic_simd_intrinsic(
11751175 in_elem, in_ty,
11761176 ret_ty, ret_ty. simd_type( tcx) ) ;
11771177
1178- let total_len = in_len as u128 * 2 ;
1178+ let total_len = u128:: from ( in_len ) * 2 ;
11791179
11801180 let vector = args[ 2 ] . immediate ( ) ;
11811181
@@ -1251,7 +1251,7 @@ fn generic_simd_intrinsic(
12511251 // trailing bits.
12521252 let expected_int_bits = in_len. max ( 8 ) ;
12531253 match ret_ty. kind {
1254- ty:: Uint ( i) if i. bit_width ( ) == Some ( expected_int_bits) => ( ) ,
1254+ ty:: Uint ( i) if i. bit_width ( ) == Some ( expected_int_bits as usize ) => ( ) ,
12551255 _ => return_error ! (
12561256 "bitmask `{}`, expected `u{}`" ,
12571257 ret_ty, expected_int_bits
@@ -1276,7 +1276,8 @@ fn generic_simd_intrinsic(
12761276
12771277 // Shift the MSB to the right by "in_elem_bitwidth - 1" into the first bit position.
12781278 let shift_indices = vec ! [
1279- bx. cx. const_int( bx. type_ix( in_elem_bitwidth as _) , ( in_elem_bitwidth - 1 ) as _) ; in_len
1279+ bx. cx. const_int( bx. type_ix( in_elem_bitwidth as _) , ( in_elem_bitwidth - 1 ) as _) ;
1280+ in_len as _
12801281 ] ;
12811282 let i_xn_msb = bx. lshr ( i_xn, bx. const_vector ( shift_indices. as_slice ( ) ) ) ;
12821283 // Truncate vector to an <i1 x N>
@@ -1291,7 +1292,7 @@ fn generic_simd_intrinsic(
12911292 name : & str ,
12921293 in_elem : & :: rustc:: ty:: TyS < ' _ > ,
12931294 in_ty : & :: rustc:: ty:: TyS < ' _ > ,
1294- in_len : usize ,
1295+ in_len : u64 ,
12951296 bx : & mut Builder < ' a , ' ll , ' tcx > ,
12961297 span : Span ,
12971298 args : & [ OperandRef < ' tcx , & ' ll Value > ] ,
@@ -1400,7 +1401,7 @@ fn generic_simd_intrinsic(
14001401 // FIXME: use:
14011402 // https://github.com/llvm-mirror/llvm/blob/master/include/llvm/IR/Function.h#L182
14021403 // https://github.com/llvm-mirror/llvm/blob/master/include/llvm/IR/Intrinsics.h#L81
1403- fn llvm_vector_str ( elem_ty : Ty < ' _ > , vec_len : usize , no_pointers : usize ) -> String {
1404+ fn llvm_vector_str ( elem_ty : Ty < ' _ > , vec_len : u64 , no_pointers : usize ) -> String {
14041405 let p0s: String = "p0" . repeat ( no_pointers) ;
14051406 match elem_ty. kind {
14061407 ty:: Int ( v) => format ! ( "v{}{}i{}" , vec_len, p0s, v. bit_width( ) . unwrap( ) ) ,
@@ -1410,7 +1411,7 @@ fn generic_simd_intrinsic(
14101411 }
14111412 }
14121413
1413- fn llvm_vector_ty ( cx : & CodegenCx < ' ll , ' _ > , elem_ty : Ty < ' _ > , vec_len : usize ,
1414+ fn llvm_vector_ty ( cx : & CodegenCx < ' ll , ' _ > , elem_ty : Ty < ' _ > , vec_len : u64 ,
14141415 mut no_pointers : usize ) -> & ' ll Type {
14151416 // FIXME: use cx.layout_of(ty).llvm_type() ?
14161417 let mut elem_ty = match elem_ty. kind {
@@ -1423,7 +1424,7 @@ fn generic_simd_intrinsic(
14231424 elem_ty = cx. type_ptr_to ( elem_ty) ;
14241425 no_pointers -= 1 ;
14251426 }
1426- cx. type_vector ( elem_ty, vec_len as u64 )
1427+ cx. type_vector ( elem_ty, vec_len)
14271428 }
14281429
14291430
@@ -1506,7 +1507,7 @@ fn generic_simd_intrinsic(
15061507 // Truncate the mask vector to a vector of i1s:
15071508 let ( mask, mask_ty) = {
15081509 let i1 = bx. type_i1 ( ) ;
1509- let i1xn = bx. type_vector ( i1, in_len as u64 ) ;
1510+ let i1xn = bx. type_vector ( i1, in_len) ;
15101511 ( bx. trunc ( args[ 2 ] . immediate ( ) , i1xn) , i1xn)
15111512 } ;
15121513
@@ -1606,7 +1607,7 @@ fn generic_simd_intrinsic(
16061607 // Truncate the mask vector to a vector of i1s:
16071608 let ( mask, mask_ty) = {
16081609 let i1 = bx. type_i1 ( ) ;
1609- let i1xn = bx. type_vector ( i1, in_len as u64 ) ;
1610+ let i1xn = bx. type_vector ( i1, in_len) ;
16101611 ( bx. trunc ( args[ 2 ] . immediate ( ) , i1xn) , i1xn)
16111612 } ;
16121613
0 commit comments