@@ -45,8 +45,6 @@ fn get_simple_intrinsic<'gcc, 'tcx>(
4545 name : Symbol ,
4646) -> Option < Function < ' gcc > > {
4747 let gcc_name = match name {
48- sym:: sqrtf32 => "sqrtf" ,
49- sym:: sqrtf64 => "sqrt" ,
5048 sym:: powif32 => "__builtin_powif" ,
5149 sym:: powif64 => "__builtin_powi" ,
5250 sym:: sinf32 => "sinf" ,
@@ -180,26 +178,6 @@ fn get_simple_function<'gcc, 'tcx>(
180178 ) )
181179}
182180
183- fn get_simple_function_f128 < ' gcc , ' tcx > (
184- span : Span ,
185- cx : & CodegenCx < ' gcc , ' tcx > ,
186- name : Symbol ,
187- ) -> Function < ' gcc > {
188- let f128_type = cx. type_f128 ( ) ;
189- let func_name = match name {
190- sym:: sqrtf128 => "sqrtf128" ,
191- _ => span_bug ! ( span, "used get_simple_function_f128 for non-unary f128 intrinsic" ) ,
192- } ;
193- cx. context . new_function (
194- None ,
195- FunctionType :: Extern ,
196- f128_type,
197- & [ cx. context . new_parameter ( None , f128_type, "a" ) ] ,
198- func_name,
199- false ,
200- )
201- }
202-
203181fn f16_builtin < ' gcc , ' tcx > (
204182 cx : & CodegenCx < ' gcc , ' tcx > ,
205183 name : Symbol ,
@@ -217,7 +195,6 @@ fn f16_builtin<'gcc, 'tcx>(
217195 let result = cx. context . new_call ( None , func, & args) ;
218196 return cx. context . new_cast ( None , result, cx. type_f16 ( ) ) ;
219197 }
220- sym:: sqrtf16 => "__builtin_sqrtf" ,
221198 _ => unreachable ! ( ) ,
222199 } ;
223200
@@ -262,30 +239,8 @@ impl<'a, 'gcc, 'tcx> IntrinsicCallBuilderMethods<'tcx> for Builder<'a, 'gcc, 'tc
262239 & args. iter ( ) . map ( |arg| arg. immediate ( ) ) . collect :: < Vec < _ > > ( ) ,
263240 )
264241 }
265- sym:: ceilf16
266- | sym:: copysignf16
267- | sym:: floorf16
268- | sym:: fmaf16
269- | sym:: powf16
270- | sym:: powif16
271- | sym:: roundf16
272- | sym:: round_ties_even_f16
273- | sym:: sqrtf16
274- | sym:: truncf16 => f16_builtin ( self , name, args) ,
275- sym:: ceilf128
276- | sym:: floorf128
277- | sym:: truncf128
278- | sym:: roundf128
279- | sym:: round_ties_even_f128
280- | sym:: sqrtf128
281- if self . cx . supports_f128_type =>
282- {
283- let func = get_simple_function_f128 ( span, self , name) ;
284- self . cx . context . new_call (
285- self . location ,
286- func,
287- & args. iter ( ) . map ( |arg| arg. immediate ( ) ) . collect :: < Vec < _ > > ( ) ,
288- )
242+ sym:: copysignf16 | sym:: fmaf16 | sym:: powf16 | sym:: powif16 => {
243+ f16_builtin ( self , name, args)
289244 }
290245 sym:: copysignf128 if self . cx . supports_f128_type => {
291246 let f128_type = self . cx . type_f128 ( ) ;
@@ -465,6 +420,7 @@ impl<'a, 'gcc, 'tcx> IntrinsicCallBuilderMethods<'tcx> for Builder<'a, 'gcc, 'tc
465420 }
466421 // float unary intrinsics
467422 sym:: fabs
423+ | sym:: sqrt
468424 | sym:: floor
469425 | sym:: ceil
470426 | sym:: trunc
@@ -489,6 +445,10 @@ impl<'a, 'gcc, 'tcx> IntrinsicCallBuilderMethods<'tcx> for Builder<'a, 'gcc, 'tc
489445 ( sym:: fabs, F32 ) => Builtin ( "fabsf" ) ,
490446 ( sym:: fabs, F64 ) => Builtin ( "fabs" ) ,
491447 ( sym:: fabs, F128 ) => Extern ( "fabsf128" ) ,
448+ ( sym:: sqrt, F16 ) => BuiltinF16Cast ( "__builtin_sqrtf" ) ,
449+ ( sym:: sqrt, F32 ) => Builtin ( "sqrtf" ) ,
450+ ( sym:: sqrt, F64 ) => Builtin ( "sqrt" ) ,
451+ ( sym:: sqrt, F128 ) => Extern ( "sqrtf128" ) ,
492452 ( sym:: floor, F16 ) => BuiltinF16Cast ( "__builtin_floorf" ) ,
493453 ( sym:: floor, F32 ) => Builtin ( "floorf" ) ,
494454 ( sym:: floor, F64 ) => Builtin ( "floor" ) ,
0 commit comments