|
363 | 363 |
|
364 | 364 | @device_override Base.isnan(x::Float64) = (ccall("extern __nv_isnand", llvmcall, Int32, (Cdouble,), x)) != 0
|
365 | 365 | @device_override Base.isnan(x::Float32) = (ccall("extern __nv_isnanf", llvmcall, Int32, (Cfloat,), x)) != 0
|
366 |
| -@device_override function Base.isnan(x::Float16) |
367 |
| - if compute_capability() >= sv"8.0" |
368 |
| - return (ccall("extern __nv_hisnan", llvmcall, Int32, (Float16,), x)) != 0 |
369 |
| - else |
370 |
| - return isnan(Float32(x)) |
371 |
| - end |
372 |
| -end |
| 366 | +@device_override Base.isnan(x::Float16) = isnan(Float32(x)) |
373 | 367 |
|
374 | 368 | @device_function nearbyint(x::Float64) = ccall("extern __nv_nearbyint", llvmcall, Cdouble, (Cdouble,), x)
|
375 | 369 | @device_function nearbyint(x::Float32) = ccall("extern __nv_nearbyintf", llvmcall, Cfloat, (Cfloat,), x)
|
|
396 | 390 |
|
397 | 391 | @device_override Base.sqrt(x::Float64) = ccall("extern __nv_sqrt", llvmcall, Cdouble, (Cdouble,), x)
|
398 | 392 | @device_override Base.sqrt(x::Float32) = ccall("extern __nv_sqrtf", llvmcall, Cfloat, (Cfloat,), x)
|
399 |
| -@device_override function Base.sqrt(x::Float16) = Float16(sqrt(Float32(x))) |
| 393 | +@device_override Base.sqrt(x::Float16) = Float16(sqrt(Float32(x))) |
400 | 394 | @device_override FastMath.sqrt_fast(x::Union{Float32, Float64}) = sqrt(x)
|
401 | 395 |
|
402 | 396 | @device_function rsqrt(x::Float64) = ccall("extern __nv_rsqrt", llvmcall, Cdouble, (Cdouble,), x)
|
|
0 commit comments