; RUN: llc -mtriple=arm64ec-windows-msvc < %s | FileCheck -check-prefixes=ARM64EC %s

; Separate from ldexp.ll test because this errors on half cases

; ARM64EC-LABEL: ldexp_f16 =
; ARM64EC: fcvt d0, h0
; ARM64EC: bl "#ldexp"
; ARM64EC: fcvt h0, d0
define half @ldexp_f16(half %val, i32 %a) {
  %call = call half @llvm.ldexp.f16(half %val, i32 %a)
  ret half %call
}

; ARM64EC-LABEL: ldexp_f32 =
; ARM64EC: fcvt d0, s0
; ARM64EC: bl "#ldexp"
; ARM64EC: fcvt s0, d0
define float @ldexp_f32(float %val, i32 %a) {
  %call = call float @llvm.ldexp.f32(float %val, i32 %a)
  ret float %call
}

; ARM64EC-LABEL: ldexp_f64 =
; ARM64EC: b "#ldexp"
define double @ldexp_f64(double %val, i32 %a) {
  %call = call double @llvm.ldexp.f64(double %val, i32 %a)
  ret double %call
}
