X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibrustc_codegen_llvm%2Fintrinsic.rs;h=dc3631e2ee17b3927a4613373a91444d91019833;hb=4c98cb6f7586d92be37c94c6063fa9645a448e92;hp=f32dc4312654036c42182689bf465417c3dc9dda;hpb=740668dbd99dbf1726bbb0cca6cd0943ea2f7e27;p=rust.git diff --git a/src/librustc_codegen_llvm/intrinsic.rs b/src/librustc_codegen_llvm/intrinsic.rs index f32dc431265..dc3631e2ee1 100644 --- a/src/librustc_codegen_llvm/intrinsic.rs +++ b/src/librustc_codegen_llvm/intrinsic.rs @@ -55,6 +55,10 @@ fn get_simple_intrinsic(cx: &CodegenCx<'ll, '_>, name: &str) -> Option<&'ll Valu "fmaf64" => "llvm.fma.f64", "fabsf32" => "llvm.fabs.f32", "fabsf64" => "llvm.fabs.f64", + "minnumf32" => "llvm.minnum.f32", + "minnumf64" => "llvm.minnum.f64", + "maxnumf32" => "llvm.maxnum.f32", + "maxnumf64" => "llvm.maxnum.f64", "copysignf32" => "llvm.copysign.f32", "copysignf64" => "llvm.copysign.f64", "floorf32" => "llvm.floor.f32", @@ -1413,7 +1417,7 @@ macro_rules! return_error { // FIXME: use: // https://github.com/llvm-mirror/llvm/blob/master/include/llvm/IR/Function.h#L182 // https://github.com/llvm-mirror/llvm/blob/master/include/llvm/IR/Intrinsics.h#L81 - fn llvm_vector_str(elem_ty: ty::Ty<'_>, vec_len: usize, no_pointers: usize) -> String { + fn llvm_vector_str(elem_ty: Ty<'_>, vec_len: usize, no_pointers: usize) -> String { let p0s: String = "p0".repeat(no_pointers); match elem_ty.sty { ty::Int(v) => format!("v{}{}i{}", vec_len, p0s, v.bit_width().unwrap()), @@ -1423,7 +1427,7 @@ fn llvm_vector_str(elem_ty: ty::Ty<'_>, vec_len: usize, no_pointers: usize) -> S } } - fn llvm_vector_ty(cx: &CodegenCx<'ll, '_>, elem_ty: ty::Ty<'_>, vec_len: usize, + fn llvm_vector_ty(cx: &CodegenCx<'ll, '_>, elem_ty: Ty<'_>, vec_len: usize, mut no_pointers: usize) -> &'ll Type { // FIXME: use cx.layout_of(ty).llvm_type() ? let mut elem_ty = match elem_ty.sty { @@ -1469,7 +1473,7 @@ fn llvm_vector_ty(cx: &CodegenCx<'ll, '_>, elem_ty: ty::Ty<'_>, vec_len: usize, in_ty, ret_ty); // This counts how many pointers - fn ptr_count(t: ty::Ty<'_>) -> usize { + fn ptr_count(t: Ty<'_>) -> usize { match t.sty { ty::RawPtr(p) => 1 + ptr_count(p.ty), _ => 0, @@ -1477,7 +1481,7 @@ fn ptr_count(t: ty::Ty<'_>) -> usize { } // Non-ptr type - fn non_ptr(t: ty::Ty<'_>) -> ty::Ty<'_> { + fn non_ptr(t: Ty<'_>) -> Ty<'_> { match t.sty { ty::RawPtr(p) => non_ptr(p.ty), _ => t, @@ -1568,7 +1572,7 @@ fn non_ptr(t: ty::Ty<'_>) -> ty::Ty<'_> { arg_tys[2].simd_size(tcx)); // This counts how many pointers - fn ptr_count(t: ty::Ty<'_>) -> usize { + fn ptr_count(t: Ty<'_>) -> usize { match t.sty { ty::RawPtr(p) => 1 + ptr_count(p.ty), _ => 0, @@ -1576,7 +1580,7 @@ fn ptr_count(t: ty::Ty<'_>) -> usize { } // Non-ptr type - fn non_ptr(t: ty::Ty<'_>) -> ty::Ty<'_> { + fn non_ptr(t: Ty<'_>) -> Ty<'_> { match t.sty { ty::RawPtr(p) => non_ptr(p.ty), _ => t,