1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 2; RUN: llc -mtriple=x86_64-unknown-unknown < %s | FileCheck -check-prefixes=X64 %s 3; FIXME: Expansion without libcall 4; XUN: llc -mtriple=i386-pc-win32 < %s | FileCheck -check-prefix=WIN32 %s 5 6define x86_fp80 @ldexp_f80(x86_fp80 %arg0, i32 %arg1) { 7; X64-LABEL: ldexp_f80: 8; X64: # %bb.0: 9; X64-NEXT: subq $24, %rsp 10; X64-NEXT: .cfi_def_cfa_offset 32 11; X64-NEXT: fldt {{[0-9]+}}(%rsp) 12; X64-NEXT: fstpt (%rsp) 13; X64-NEXT: callq ldexpl@PLT 14; X64-NEXT: addq $24, %rsp 15; X64-NEXT: .cfi_def_cfa_offset 8 16; X64-NEXT: retq 17 %ldexp = call x86_fp80 @llvm.ldexp.f80.i32(x86_fp80 %arg0, i32 %arg1) 18 ret x86_fp80 %ldexp 19} 20 21define x86_fp80 @test_strict_ldexp_f80_i32(ptr addrspace(1) %out, x86_fp80 %a, i32 %b) #2 { 22; X64-LABEL: test_strict_ldexp_f80_i32: 23; X64: # %bb.0: 24; X64-NEXT: subq $24, %rsp 25; X64-NEXT: .cfi_def_cfa_offset 32 26; X64-NEXT: movl %esi, %edi 27; X64-NEXT: fldt {{[0-9]+}}(%rsp) 28; X64-NEXT: fstpt (%rsp) 29; X64-NEXT: wait 30; X64-NEXT: callq ldexpl@PLT 31; X64-NEXT: addq $24, %rsp 32; X64-NEXT: .cfi_def_cfa_offset 8 33; X64-NEXT: retq 34 %result = call x86_fp80 @llvm.experimental.constrained.ldexp.f80.i32(x86_fp80 %a, i32 %b, metadata !"round.dynamic", metadata !"fpexcept.strict") 35 ret x86_fp80 %result 36} 37 38declare x86_fp80 @llvm.ldexp.f80.i32(x86_fp80, i32) 39declare x86_fp80 @llvm.experimental.constrained.ldexp.f80.i32(x86_fp80, i32, metadata, metadata) #1 40 41attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } 42attributes #1 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } 43attributes #2 = { strictfp } 44