@@ -1053,50 +1053,48 @@ fn generic_simd_intrinsic(
1053
1053
let vec_ty = bx. type_vector ( elem_ty, in_len) ;
1054
1054
1055
1055
let ( intr_name, fn_ty) = match name {
1056
- sym:: simd_fsqrt => ( "sqrt" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1057
- sym:: simd_fsin => ( "sin" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1058
- sym:: simd_fcos => ( "cos" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1059
- sym:: simd_fabs => ( "fabs" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1060
1056
sym:: simd_ceil => ( "ceil" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1061
- sym:: simd_floor => ( "floor" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1062
- sym:: simd_round => ( "round" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1063
- sym:: simd_trunc => ( "trunc" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1064
- sym:: simd_fexp => ( "exp" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1057
+ sym:: simd_fabs => ( "fabs" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1058
+ sym:: simd_fcos => ( "cos" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1065
1059
sym:: simd_fexp2 => ( "exp2" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1060
+ sym:: simd_fexp => ( "exp" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1066
1061
sym:: simd_flog10 => ( "log10" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1067
1062
sym:: simd_flog2 => ( "log2" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1068
1063
sym:: simd_flog => ( "log" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1064
+ sym:: simd_floor => ( "floor" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1065
+ sym:: simd_fma => ( "fma" , bx. type_func ( & [ vec_ty, vec_ty, vec_ty] , vec_ty) ) ,
1069
1066
sym:: simd_fpowi => ( "powi" , bx. type_func ( & [ vec_ty, bx. type_i32 ( ) ] , vec_ty) ) ,
1070
1067
sym:: simd_fpow => ( "pow" , bx. type_func ( & [ vec_ty, vec_ty] , vec_ty) ) ,
1071
- sym:: simd_fma => ( "fma" , bx. type_func ( & [ vec_ty, vec_ty, vec_ty] , vec_ty) ) ,
1068
+ sym:: simd_fsin => ( "sin" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1069
+ sym:: simd_fsqrt => ( "sqrt" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1070
+ sym:: simd_round => ( "round" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1071
+ sym:: simd_trunc => ( "trunc" , bx. type_func ( & [ vec_ty] , vec_ty) ) ,
1072
1072
_ => return_error ! ( "unrecognized intrinsic `{}`" , name) ,
1073
1073
} ;
1074
-
1075
1074
let llvm_name = & format ! ( "llvm.{0}.v{1}{2}" , intr_name, in_len, elem_ty_str) ;
1076
1075
let f = bx. declare_cfn ( & llvm_name, llvm:: UnnamedAddr :: No , fn_ty) ;
1077
1076
let c = bx. call ( f, & args. iter ( ) . map ( |arg| arg. immediate ( ) ) . collect :: < Vec < _ > > ( ) , None ) ;
1078
- unsafe { llvm:: LLVMRustSetHasUnsafeAlgebra ( c) } ;
1079
1077
Ok ( c)
1080
1078
}
1081
1079
1082
1080
if std:: matches!(
1083
1081
name,
1084
- sym:: simd_fsqrt
1085
- | sym:: simd_fsin
1086
- | sym:: simd_fcos
1082
+ sym:: simd_ceil
1087
1083
| sym:: simd_fabs
1088
- | sym:: simd_ceil
1089
- | sym:: simd_floor
1090
- | sym:: simd_round
1091
- | sym:: simd_trunc
1092
- | sym:: simd_fexp
1084
+ | sym:: simd_fcos
1093
1085
| sym:: simd_fexp2
1086
+ | sym:: simd_fexp
1094
1087
| sym:: simd_flog10
1095
1088
| sym:: simd_flog2
1096
1089
| sym:: simd_flog
1097
- | sym:: simd_fpowi
1098
- | sym:: simd_fpow
1090
+ | sym:: simd_floor
1099
1091
| sym:: simd_fma
1092
+ | sym:: simd_fpow
1093
+ | sym:: simd_fpowi
1094
+ | sym:: simd_fsin
1095
+ | sym:: simd_fsqrt
1096
+ | sym:: simd_round
1097
+ | sym:: simd_trunc
1100
1098
) {
1101
1099
return simd_simple_float_intrinsic ( name, in_elem, in_ty, in_len, bx, span, args) ;
1102
1100
}
0 commit comments