@@ -539,10 +539,9 @@ pub fn codegen_intrinsic_call(
539
539
}
540
540
541
541
_ => {
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
+
546
545
fn one < T > ( x : Vec < T > ) -> T {
547
546
assert_eq ! ( x. len( ) , 1 ) ;
548
547
x. into_iter ( ) . next ( ) . unwrap ( )
@@ -1071,11 +1070,8 @@ fn generic_simd_intrinsic(
1071
1070
}
1072
1071
1073
1072
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?" ) ) ;
1079
1075
1080
1076
require_simd ! ( ret_ty, "return" ) ;
1081
1077
@@ -1216,63 +1212,53 @@ fn generic_simd_intrinsic(
1216
1212
& args. iter ( ) . map ( |arg| arg. immediate ( ) ) . collect :: < Vec < _ > > ( ) ,
1217
1213
None ) ;
1218
1214
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)
1236
1216
}
1237
1217
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 */ }
1276
1262
}
1277
1263
1278
1264
// FIXME: use:
@@ -1364,7 +1350,7 @@ fn generic_simd_intrinsic(
1364
1350
}
1365
1351
} ;
1366
1352
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) ) ) ;
1368
1354
assert_eq ! ( underlying_ty, non_ptr( arg_tys[ 0 ] . simd_type( tcx) ) ) ;
1369
1355
1370
1356
// The element type of the third argument must be a signed integer type of any width:
@@ -1461,7 +1447,7 @@ fn generic_simd_intrinsic(
1461
1447
}
1462
1448
} ;
1463
1449
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) ) ) ;
1465
1451
assert_eq ! ( underlying_ty, non_ptr( arg_tys[ 0 ] . simd_type( tcx) ) ) ;
1466
1452
1467
1453
// The element type of the third argument must be a signed integer type of any width:
0 commit comments