@@ -28,7 +28,6 @@ use syntax_pos::Span;
28
28
29
29
use std:: cmp:: Ordering ;
30
30
use std:: { iter, i128, u128} ;
31
- use std:: convert:: TryFrom ;
32
31
33
32
fn get_simple_intrinsic ( cx : & CodegenCx < ' ll , ' _ > , name : & str ) -> Option < & ' ll Value > {
34
33
let llvm_name = match name {
@@ -1161,13 +1160,13 @@ fn generic_simd_intrinsic(
1161
1160
}
1162
1161
1163
1162
if name. starts_with ( "simd_shuffle" ) {
1164
- let n: usize = name[ "simd_shuffle" . len ( ) ..] . parse ( ) . unwrap_or_else ( |_|
1163
+ let n: u64 = name[ "simd_shuffle" . len ( ) ..] . parse ( ) . unwrap_or_else ( |_|
1165
1164
span_bug ! ( span, "bad `simd_shuffle` instruction only caught in codegen?" ) ) ;
1166
1165
1167
1166
require_simd ! ( ret_ty, "return" ) ;
1168
1167
1169
1168
let out_len = ret_ty. simd_size ( tcx) ;
1170
- require ! ( out_len == n as u64 ,
1169
+ require ! ( out_len == n,
1171
1170
"expected return type of length {}, found `{}` with length {}" ,
1172
1171
n, ret_ty, out_len) ;
1173
1172
require ! ( in_elem == ret_ty. simd_type( tcx) ,
@@ -1176,7 +1175,7 @@ fn generic_simd_intrinsic(
1176
1175
in_elem, in_ty,
1177
1176
ret_ty, ret_ty. simd_type( tcx) ) ;
1178
1177
1179
- let total_len = in_len as u128 * 2 ;
1178
+ let total_len = u128:: from ( in_len ) * 2 ;
1180
1179
1181
1180
let vector = args[ 2 ] . immediate ( ) ;
1182
1181
@@ -1402,7 +1401,7 @@ fn generic_simd_intrinsic(
1402
1401
// FIXME: use:
1403
1402
// https://github.com/llvm-mirror/llvm/blob/master/include/llvm/IR/Function.h#L182
1404
1403
// https://github.com/llvm-mirror/llvm/blob/master/include/llvm/IR/Intrinsics.h#L81
1405
- 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 {
1406
1405
let p0s: String = "p0" . repeat ( no_pointers) ;
1407
1406
match elem_ty. kind {
1408
1407
ty:: Int ( v) => format ! ( "v{}{}i{}" , vec_len, p0s, v. bit_width( ) . unwrap( ) ) ,
@@ -1412,7 +1411,7 @@ fn generic_simd_intrinsic(
1412
1411
}
1413
1412
}
1414
1413
1415
- 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 ,
1416
1415
mut no_pointers : usize ) -> & ' ll Type {
1417
1416
// FIXME: use cx.layout_of(ty).llvm_type() ?
1418
1417
let mut elem_ty = match elem_ty. kind {
@@ -1425,7 +1424,7 @@ fn generic_simd_intrinsic(
1425
1424
elem_ty = cx. type_ptr_to ( elem_ty) ;
1426
1425
no_pointers -= 1 ;
1427
1426
}
1428
- cx. type_vector ( elem_ty, vec_len as u64 )
1427
+ cx. type_vector ( elem_ty, vec_len)
1429
1428
}
1430
1429
1431
1430
@@ -1513,7 +1512,6 @@ fn generic_simd_intrinsic(
1513
1512
} ;
1514
1513
1515
1514
// Type of the vector of pointers:
1516
- let in_len = usize:: try_from ( in_len) . unwrap ( ) ;
1517
1515
let llvm_pointer_vec_ty = llvm_vector_ty ( bx, underlying_ty, in_len, pointer_count) ;
1518
1516
let llvm_pointer_vec_str = llvm_vector_str ( underlying_ty, in_len, pointer_count) ;
1519
1517
@@ -1616,7 +1614,6 @@ fn generic_simd_intrinsic(
1616
1614
let ret_t = bx. type_void ( ) ;
1617
1615
1618
1616
// Type of the vector of pointers:
1619
- let in_len = usize:: try_from ( in_len) . unwrap ( ) ;
1620
1617
let llvm_pointer_vec_ty = llvm_vector_ty ( bx, underlying_ty, in_len, pointer_count) ;
1621
1618
let llvm_pointer_vec_str = llvm_vector_str ( underlying_ty, in_len, pointer_count) ;
1622
1619
0 commit comments