@@ -539,10 +539,9 @@ pub fn codegen_intrinsic_call(
539539 }
540540
541541 _ => {
542- let intr = match Intrinsic :: find ( & name) {
543- Some ( intr) => intr,
544- None => bug ! ( "unknown intrinsic '{}'" , name) ,
545- } ;
542+ let intr = Intrinsic :: find ( & name) . unwrap_or_else ( ||
543+ bug ! ( "unknown intrinsic '{}'" , name) ) ;
544+
546545 fn one < T > ( x : Vec < T > ) -> T {
547546 assert_eq ! ( x. len( ) , 1 ) ;
548547 x. into_iter ( ) . next ( ) . unwrap ( )
@@ -1071,11 +1070,8 @@ fn generic_simd_intrinsic(
10711070 }
10721071
10731072 if name. starts_with ( "simd_shuffle" ) {
1074- let n: usize = match name[ "simd_shuffle" . len ( ) ..] . parse ( ) {
1075- Ok ( n) => n,
1076- Err ( _) => span_bug ! ( span,
1077- "bad `simd_shuffle` instruction only caught in codegen?" )
1078- } ;
1073+ let n: usize = name[ "simd_shuffle" . len ( ) ..] . parse ( ) . unwrap_or_else ( |_|
1074+ span_bug ! ( span, "bad `simd_shuffle` instruction only caught in codegen?" ) ) ;
10791075
10801076 require_simd ! ( ret_ty, "return" ) ;
10811077
@@ -1216,63 +1212,53 @@ fn generic_simd_intrinsic(
12161212 & args. iter ( ) . map ( |arg| arg. immediate ( ) ) . collect :: < Vec < _ > > ( ) ,
12171213 None ) ;
12181214 unsafe { llvm:: LLVMRustSetHasUnsafeAlgebra ( c) } ;
1219- return Ok ( c) ;
1220- }
1221-
1222- if name == "simd_fsqrt" {
1223- return simd_simple_float_intrinsic ( "sqrt" , in_elem, in_ty, in_len, bx, span, args) ;
1224- }
1225-
1226- if name == "simd_fsin" {
1227- return simd_simple_float_intrinsic ( "sin" , in_elem, in_ty, in_len, bx, span, args) ;
1228- }
1229-
1230- if name == "simd_fcos" {
1231- return simd_simple_float_intrinsic ( "cos" , in_elem, in_ty, in_len, bx, span, args) ;
1232- }
1233-
1234- if name == "simd_fabs" {
1235- return simd_simple_float_intrinsic ( "fabs" , in_elem, in_ty, in_len, bx, span, args) ;
1215+ Ok ( c)
12361216 }
12371217
1238- if name == "simd_floor" {
1239- return simd_simple_float_intrinsic ( "floor" , in_elem, in_ty, in_len, bx, span, args) ;
1240- }
1241-
1242- if name == "simd_ceil" {
1243- return simd_simple_float_intrinsic ( "ceil" , in_elem, in_ty, in_len, bx, span, args) ;
1244- }
1245-
1246- if name == "simd_fexp" {
1247- return simd_simple_float_intrinsic ( "exp" , in_elem, in_ty, in_len, bx, span, args) ;
1248- }
1249-
1250- if name == "simd_fexp2" {
1251- return simd_simple_float_intrinsic ( "exp2" , in_elem, in_ty, in_len, bx, span, args) ;
1252- }
1253-
1254- if name == "simd_flog10" {
1255- return simd_simple_float_intrinsic ( "log10" , in_elem, in_ty, in_len, bx, span, args) ;
1256- }
1257-
1258- if name == "simd_flog2" {
1259- return simd_simple_float_intrinsic ( "log2" , in_elem, in_ty, in_len, bx, span, args) ;
1260- }
1261-
1262- if name == "simd_flog" {
1263- return simd_simple_float_intrinsic ( "log" , in_elem, in_ty, in_len, bx, span, args) ;
1264- }
1265-
1266- if name == "simd_fpowi" {
1267- return simd_simple_float_intrinsic ( "powi" , in_elem, in_ty, in_len, bx, span, args) ;
1268- }
1269-
1270- if name == "simd_fpow" {
1271- return simd_simple_float_intrinsic ( "pow" , in_elem, in_ty, in_len, bx, span, args) ;
1272- }
1273-
1274- if name == "simd_fma" {
1275- return simd_simple_float_intrinsic ( "fma" , in_elem, in_ty, in_len, bx, span, args) ;
1218+ match name {
1219+ "simd_fsqrt" => {
1220+ return simd_simple_float_intrinsic ( "sqrt" , in_elem, in_ty, in_len, bx, span, args) ;
1221+ }
1222+ "simd_fsin" => {
1223+ return simd_simple_float_intrinsic ( "sin" , in_elem, in_ty, in_len, bx, span, args) ;
1224+ }
1225+ "simd_fcos" => {
1226+ return simd_simple_float_intrinsic ( "cos" , in_elem, in_ty, in_len, bx, span, args) ;
1227+ }
1228+ "simd_fabs" => {
1229+ return simd_simple_float_intrinsic ( "fabs" , in_elem, in_ty, in_len, bx, span, args) ;
1230+ }
1231+ "simd_floor" => {
1232+ return simd_simple_float_intrinsic ( "floor" , in_elem, in_ty, in_len, bx, span, args) ;
1233+ }
1234+ "simd_ceil" => {
1235+ return simd_simple_float_intrinsic ( "ceil" , in_elem, in_ty, in_len, bx, span, args) ;
1236+ }
1237+ "simd_fexp" => {
1238+ return simd_simple_float_intrinsic ( "exp" , in_elem, in_ty, in_len, bx, span, args) ;
1239+ }
1240+ "simd_fexp2" => {
1241+ return simd_simple_float_intrinsic ( "exp2" , in_elem, in_ty, in_len, bx, span, args) ;
1242+ }
1243+ "simd_flog10" => {
1244+ return simd_simple_float_intrinsic ( "log10" , in_elem, in_ty, in_len, bx, span, args) ;
1245+ }
1246+ "simd_flog2" => {
1247+ return simd_simple_float_intrinsic ( "log2" , in_elem, in_ty, in_len, bx, span, args) ;
1248+ }
1249+ "simd_flog" => {
1250+ return simd_simple_float_intrinsic ( "log" , in_elem, in_ty, in_len, bx, span, args) ;
1251+ }
1252+ "simd_fpowi" => {
1253+ return simd_simple_float_intrinsic ( "powi" , in_elem, in_ty, in_len, bx, span, args) ;
1254+ }
1255+ "simd_fpow" => {
1256+ return simd_simple_float_intrinsic ( "pow" , in_elem, in_ty, in_len, bx, span, args) ;
1257+ }
1258+ "simd_fma" => {
1259+ return simd_simple_float_intrinsic ( "fma" , in_elem, in_ty, in_len, bx, span, args) ;
1260+ }
1261+ _ => { /* fallthrough */ }
12761262 }
12771263
12781264 // FIXME: use:
@@ -1364,7 +1350,7 @@ fn generic_simd_intrinsic(
13641350 }
13651351 } ;
13661352 assert ! ( pointer_count > 0 ) ;
1367- assert ! ( pointer_count - 1 == ptr_count( arg_tys[ 0 ] . simd_type( tcx) ) ) ;
1353+ assert_eq ! ( pointer_count - 1 , ptr_count( arg_tys[ 0 ] . simd_type( tcx) ) ) ;
13681354 assert_eq ! ( underlying_ty, non_ptr( arg_tys[ 0 ] . simd_type( tcx) ) ) ;
13691355
13701356 // The element type of the third argument must be a signed integer type of any width:
@@ -1461,7 +1447,7 @@ fn generic_simd_intrinsic(
14611447 }
14621448 } ;
14631449 assert ! ( pointer_count > 0 ) ;
1464- assert ! ( pointer_count - 1 == ptr_count( arg_tys[ 0 ] . simd_type( tcx) ) ) ;
1450+ assert_eq ! ( pointer_count - 1 , ptr_count( arg_tys[ 0 ] . simd_type( tcx) ) ) ;
14651451 assert_eq ! ( underlying_ty, non_ptr( arg_tys[ 0 ] . simd_type( tcx) ) ) ;
14661452
14671453 // The element type of the third argument must be a signed integer type of any width:
0 commit comments