90 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 62; RUN: llc < %s -mtriple=sparc | FileCheck %s --check-prefix=SPARC323; RUN: llc < %s -mtriple=sparcv9 | FileCheck %s --check-prefix=SPARC644 5define fp128 @f128_direct(fp128 %num) nounwind {6; SPARC32-LABEL: f128_direct:7; SPARC32: ! %bb.0:8; SPARC32-NEXT: save %sp, -144, %sp9; SPARC32-NEXT: ldd [%i0], %f010; SPARC32-NEXT: ldd [%i0+8], %f411; SPARC32-NEXT: ld [%fp+64], %i012; SPARC32-NEXT: add %fp, -16, %i113; SPARC32-NEXT: st %i1, [%sp+64]14; SPARC32-NEXT: std %f4, [%fp+-40]15; SPARC32-NEXT: std %f0, [%fp+-48]16; SPARC32-NEXT: std %f4, [%fp+-24]17; SPARC32-NEXT: add %fp, -32, %o018; SPARC32-NEXT: add %fp, -48, %o119; SPARC32-NEXT: call f128_callee20; SPARC32-NEXT: std %f0, [%fp+-32]21; SPARC32-NEXT: unimp 1622; SPARC32-NEXT: ldd [%fp+-8], %f023; SPARC32-NEXT: ldd [%fp+-16], %f424; SPARC32-NEXT: std %f0, [%i0+8]25; SPARC32-NEXT: std %f4, [%i0]26; SPARC32-NEXT: ret27; SPARC32-NEXT: restore28;29; SPARC64-LABEL: f128_direct:30; SPARC64: ! %bb.0:31; SPARC64-NEXT: save %sp, -176, %sp32; SPARC64-NEXT: fmovd %f0, %f433; SPARC64-NEXT: fmovd %f2, %f634; SPARC64-NEXT: call f128_callee35; SPARC64-NEXT: nop36; SPARC64-NEXT: ret37; SPARC64-NEXT: restore38 %ret = call fp128 @f128_callee(fp128 %num, fp128 %num)39 ret fp128 %ret40}41declare fp128 @f128_callee(fp128 %a, fp128 %b)42 43define fp128 @f128_direct_spill(i32 %o0, i32 %o1, i32 %o2, i32 %o3, i32 %o4, i32 %o5, i32 %ss0, fp128 %num) nounwind {44; SPARC32-LABEL: f128_direct_spill:45; SPARC32: ! %bb.0:46; SPARC32-NEXT: save %sp, -136, %sp47; SPARC32-NEXT: ld [%fp+96], %g248; SPARC32-NEXT: ldd [%g2], %f049; SPARC32-NEXT: ldd [%g2+8], %f450; SPARC32-NEXT: ld [%fp+64], %l051; SPARC32-NEXT: mov %i5, %o552; SPARC32-NEXT: mov %i4, %o453; SPARC32-NEXT: mov %i3, %o354; SPARC32-NEXT: mov %i2, %o255; SPARC32-NEXT: mov %i1, %o156; SPARC32-NEXT: mov %i0, %o057; SPARC32-NEXT: add %fp, -32, %i058; SPARC32-NEXT: st %i0, [%sp+92]59; SPARC32-NEXT: add %fp, -16, %i060; SPARC32-NEXT: st %i0, [%sp+64]61; SPARC32-NEXT: std %f4, [%fp+-24]62; SPARC32-NEXT: call f128_callee_spill63; SPARC32-NEXT: std %f0, [%fp+-32]64; SPARC32-NEXT: unimp 1665; SPARC32-NEXT: ldd [%fp+-8], %f066; SPARC32-NEXT: ldd [%fp+-16], %f467; SPARC32-NEXT: std %f0, [%l0+8]68; SPARC32-NEXT: std %f4, [%l0]69; SPARC32-NEXT: ret70; SPARC32-NEXT: restore71;72; SPARC64-LABEL: f128_direct_spill:73; SPARC64: ! %bb.0:74; SPARC64-NEXT: save %sp, -192, %sp75; SPARC64-NEXT: fmovd %f16, %f1276; SPARC64-NEXT: fmovd %f18, %f1477; SPARC64-NEXT: mov %i5, %o578; SPARC64-NEXT: mov %i4, %o479; SPARC64-NEXT: mov %i3, %o380; SPARC64-NEXT: mov %i2, %o281; SPARC64-NEXT: mov %i1, %o182; SPARC64-NEXT: call f128_callee_spill83; SPARC64-NEXT: mov %i0, %o084; SPARC64-NEXT: ret85; SPARC64-NEXT: restore86 %ret = call fp128 @f128_callee_spill(i32 %o0, i32 %o1, i32 %o2, i32 %o3, i32 %o4, i32 %o5, fp128 %num)87 ret fp128 %ret88}89declare fp128 @f128_callee_spill(i32 %o0, i32 %o1, i32 %o2, i32 %o3, i32 %o4, i32 %o5, fp128 %a)90