@@ -935,8 +935,8 @@ fn generic_simd_intrinsic<'ll, 'tcx>(
935
935
}
936
936
937
937
macro_rules! require_simd {
938
- ( $ty: expr, $diag : expr ) => {
939
- require!( $ty. is_simd( ) , $diag )
938
+ ( $ty: expr, $variant : ident ) => {
939
+ require!( $ty. is_simd( ) , InvalidMonomorphization :: $variant { span , name , ty : $ty } )
940
940
} ;
941
941
}
942
942
@@ -946,10 +946,7 @@ fn generic_simd_intrinsic<'ll, 'tcx>(
946
946
let arg_tys = sig. inputs ( ) ;
947
947
948
948
if name == sym:: simd_select_bitmask {
949
- require_simd ! (
950
- arg_tys[ 1 ] ,
951
- InvalidMonomorphization :: SimdArgument { span, name, ty: arg_tys[ 1 ] }
952
- ) ;
949
+ require_simd ! ( arg_tys[ 1 ] , SimdArgument ) ;
953
950
954
951
let ( len, _) = arg_tys[ 1 ] . simd_size_and_type ( bx. tcx ( ) ) ;
955
952
@@ -988,7 +985,7 @@ fn generic_simd_intrinsic<'ll, 'tcx>(
988
985
}
989
986
990
987
// every intrinsic below takes a SIMD vector as its first argument
991
- require_simd ! ( arg_tys[ 0 ] , InvalidMonomorphization :: SimdInput { span , name , ty : arg_tys [ 0 ] } ) ;
988
+ require_simd ! ( arg_tys[ 0 ] , SimdInput ) ;
992
989
let in_ty = arg_tys[ 0 ] ;
993
990
994
991
let comparison = match name {
@@ -1003,7 +1000,7 @@ fn generic_simd_intrinsic<'ll, 'tcx>(
1003
1000
1004
1001
let ( in_len, in_elem) = arg_tys[ 0 ] . simd_size_and_type ( bx. tcx ( ) ) ;
1005
1002
if let Some ( cmp_op) = comparison {
1006
- require_simd ! ( ret_ty, InvalidMonomorphization :: SimdReturn { span , name , ty : ret_ty } ) ;
1003
+ require_simd ! ( ret_ty, SimdReturn ) ;
1007
1004
1008
1005
let ( out_len, out_ty) = ret_ty. simd_size_and_type ( bx. tcx ( ) ) ;
1009
1006
@@ -1041,7 +1038,7 @@ fn generic_simd_intrinsic<'ll, 'tcx>(
1041
1038
. unwrap_branch ( ) ;
1042
1039
let n = idx. len ( ) as u64 ;
1043
1040
1044
- require_simd ! ( ret_ty, InvalidMonomorphization :: SimdReturn { span , name , ty : ret_ty } ) ;
1041
+ require_simd ! ( ret_ty, SimdReturn ) ;
1045
1042
let ( out_len, out_ty) = ret_ty. simd_size_and_type ( bx. tcx ( ) ) ;
1046
1043
require ! (
1047
1044
out_len == n,
@@ -1099,7 +1096,7 @@ fn generic_simd_intrinsic<'ll, 'tcx>(
1099
1096
} ) ,
1100
1097
} ;
1101
1098
1102
- require_simd ! ( ret_ty, InvalidMonomorphization :: SimdReturn { span , name , ty : ret_ty } ) ;
1099
+ require_simd ! ( ret_ty, SimdReturn ) ;
1103
1100
let ( out_len, out_ty) = ret_ty. simd_size_and_type ( bx. tcx ( ) ) ;
1104
1101
require ! (
1105
1102
out_len == n,
@@ -1179,10 +1176,7 @@ fn generic_simd_intrinsic<'ll, 'tcx>(
1179
1176
if name == sym:: simd_select {
1180
1177
let m_elem_ty = in_elem;
1181
1178
let m_len = in_len;
1182
- require_simd ! (
1183
- arg_tys[ 1 ] ,
1184
- InvalidMonomorphization :: SimdArgument { span, name, ty: arg_tys[ 1 ] }
1185
- ) ;
1179
+ require_simd ! ( arg_tys[ 1 ] , SimdArgument ) ;
1186
1180
let ( v_len, _) = arg_tys[ 1 ] . simd_size_and_type ( bx. tcx ( ) ) ;
1187
1181
require ! (
1188
1182
m_len == v_len,
@@ -1401,16 +1395,10 @@ fn generic_simd_intrinsic<'ll, 'tcx>(
1401
1395
// * M: any integer width is supported, will be truncated to i1
1402
1396
1403
1397
// All types must be simd vector types
1404
- require_simd ! ( in_ty, InvalidMonomorphization :: SimdFirst { span, name, ty: in_ty } ) ;
1405
- require_simd ! (
1406
- arg_tys[ 1 ] ,
1407
- InvalidMonomorphization :: SimdSecond { span, name, ty: arg_tys[ 1 ] }
1408
- ) ;
1409
- require_simd ! (
1410
- arg_tys[ 2 ] ,
1411
- InvalidMonomorphization :: SimdThird { span, name, ty: arg_tys[ 2 ] }
1412
- ) ;
1413
- require_simd ! ( ret_ty, InvalidMonomorphization :: SimdReturn { span, name, ty: ret_ty } ) ;
1398
+ require_simd ! ( in_ty, SimdFirst ) ;
1399
+ require_simd ! ( arg_tys[ 1 ] , SimdSecond ) ;
1400
+ require_simd ! ( arg_tys[ 2 ] , SimdThird ) ;
1401
+ require_simd ! ( ret_ty, SimdReturn ) ;
1414
1402
1415
1403
// Of the same length:
1416
1404
let ( out_len, _) = arg_tys[ 1 ] . simd_size_and_type ( bx. tcx ( ) ) ;
@@ -1524,15 +1512,9 @@ fn generic_simd_intrinsic<'ll, 'tcx>(
1524
1512
// * M: any integer width is supported, will be truncated to i1
1525
1513
1526
1514
// All types must be simd vector types
1527
- require_simd ! ( in_ty, InvalidMonomorphization :: SimdFirst { span, name, ty: in_ty } ) ;
1528
- require_simd ! (
1529
- arg_tys[ 1 ] ,
1530
- InvalidMonomorphization :: SimdSecond { span, name, ty: arg_tys[ 1 ] }
1531
- ) ;
1532
- require_simd ! (
1533
- arg_tys[ 2 ] ,
1534
- InvalidMonomorphization :: SimdThird { span, name, ty: arg_tys[ 2 ] }
1535
- ) ;
1515
+ require_simd ! ( in_ty, SimdFirst ) ;
1516
+ require_simd ! ( arg_tys[ 1 ] , SimdSecond ) ;
1517
+ require_simd ! ( arg_tys[ 2 ] , SimdThird ) ;
1536
1518
1537
1519
// Of the same length:
1538
1520
let ( element_len1, _) = arg_tys[ 1 ] . simd_size_and_type ( bx. tcx ( ) ) ;
@@ -1788,7 +1770,7 @@ fn generic_simd_intrinsic<'ll, 'tcx>(
1788
1770
bitwise_red ! ( simd_reduce_any: vector_reduce_or, true ) ;
1789
1771
1790
1772
if name == sym:: simd_cast_ptr {
1791
- require_simd ! ( ret_ty, InvalidMonomorphization :: SimdReturn { span , name , ty : ret_ty } ) ;
1773
+ require_simd ! ( ret_ty, SimdReturn ) ;
1792
1774
let ( out_len, out_elem) = ret_ty. simd_size_and_type ( bx. tcx ( ) ) ;
1793
1775
require ! (
1794
1776
in_len == out_len,
@@ -1837,7 +1819,7 @@ fn generic_simd_intrinsic<'ll, 'tcx>(
1837
1819
}
1838
1820
1839
1821
if name == sym:: simd_expose_addr {
1840
- require_simd ! ( ret_ty, InvalidMonomorphization :: SimdReturn { span , name , ty : ret_ty } ) ;
1822
+ require_simd ! ( ret_ty, SimdReturn ) ;
1841
1823
let ( out_len, out_elem) = ret_ty. simd_size_and_type ( bx. tcx ( ) ) ;
1842
1824
require ! (
1843
1825
in_len == out_len,
@@ -1866,7 +1848,7 @@ fn generic_simd_intrinsic<'ll, 'tcx>(
1866
1848
}
1867
1849
1868
1850
if name == sym:: simd_from_exposed_addr {
1869
- require_simd ! ( ret_ty, InvalidMonomorphization :: SimdReturn { span , name , ty : ret_ty } ) ;
1851
+ require_simd ! ( ret_ty, SimdReturn ) ;
1870
1852
let ( out_len, out_elem) = ret_ty. simd_size_and_type ( bx. tcx ( ) ) ;
1871
1853
require ! (
1872
1854
in_len == out_len,
@@ -1895,7 +1877,7 @@ fn generic_simd_intrinsic<'ll, 'tcx>(
1895
1877
}
1896
1878
1897
1879
if name == sym:: simd_cast || name == sym:: simd_as {
1898
- require_simd ! ( ret_ty, InvalidMonomorphization :: SimdReturn { span , name , ty : ret_ty } ) ;
1880
+ require_simd ! ( ret_ty, SimdReturn ) ;
1899
1881
let ( out_len, out_elem) = ret_ty. simd_size_and_type ( bx. tcx ( ) ) ;
1900
1882
require ! (
1901
1883
in_len == out_len,
0 commit comments