brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.8 KiB · 4e46fd0 Raw
486 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=sparc-linux-gnu < %s | FileCheck %s -check-prefixes=ALL,V8,V8-OPT3; RUN: llc -mtriple=sparcel-linux-gnu < %s | FileCheck %s -check-prefixes=ALL,V8,V8-OPT4; RUN: llc -mtriple=sparc-linux-gnu -O0 < %s | FileCheck %s -check-prefixes=ALL,V8,V8-UNOPT5; RUN: llc -mtriple=sparc-linux-gnu -mattr=v9 < %s | FileCheck %s -check-prefixes=ALL,V96; RUN: llc -mtriple=sparc64-unknown-linux < %s | FileCheck %s -check-prefixes=ALL,SPARC647 8define void @test_load_store(ptr %p, ptr %q) nounwind {9; ALL-LABEL: test_load_store:10; ALL:       ! %bb.0:11; ALL-NEXT:    lduh [%o0], %o012; ALL-NEXT:    retl13; ALL-NEXT:    sth %o0, [%o1]14  %a = load half, ptr %p15  store half %a, ptr %q16  ret void17}18 19define float @test_fpextend_float(ptr %p) nounwind {20; V8-LABEL: test_fpextend_float:21; V8:       ! %bb.0:22; V8-NEXT:    save %sp, -96, %sp23; V8-NEXT:    call __extendhfsf224; V8-NEXT:    lduh [%i0], %o025; V8-NEXT:    ret26; V8-NEXT:    restore27;28; V9-LABEL: test_fpextend_float:29; V9:       ! %bb.0:30; V9-NEXT:    save %sp, -96, %sp31; V9-NEXT:    call __extendhfsf232; V9-NEXT:    lduh [%i0], %o033; V9-NEXT:    ret34; V9-NEXT:    restore35;36; SPARC64-LABEL: test_fpextend_float:37; SPARC64:       ! %bb.0:38; SPARC64-NEXT:    save %sp, -176, %sp39; SPARC64-NEXT:    call __extendhfsf240; SPARC64-NEXT:    lduh [%i0], %o041; SPARC64-NEXT:    ret42; SPARC64-NEXT:    restore43  %a = load half, ptr %p44  %r = fpext half %a to float45  ret float %r46}47 48define double @test_fpextend_double(ptr %p) nounwind {49; V8-LABEL: test_fpextend_double:50; V8:       ! %bb.0:51; V8-NEXT:    save %sp, -96, %sp52; V8-NEXT:    call __extendhfsf253; V8-NEXT:    lduh [%i0], %o054; V8-NEXT:    fstod %f0, %f055; V8-NEXT:    ret56; V8-NEXT:    restore57;58; V9-LABEL: test_fpextend_double:59; V9:       ! %bb.0:60; V9-NEXT:    save %sp, -96, %sp61; V9-NEXT:    call __extendhfsf262; V9-NEXT:    lduh [%i0], %o063; V9-NEXT:    fstod %f0, %f064; V9-NEXT:    ret65; V9-NEXT:    restore66;67; SPARC64-LABEL: test_fpextend_double:68; SPARC64:       ! %bb.0:69; SPARC64-NEXT:    save %sp, -176, %sp70; SPARC64-NEXT:    call __extendhfsf271; SPARC64-NEXT:    lduh [%i0], %o072; SPARC64-NEXT:    fstod %f0, %f073; SPARC64-NEXT:    ret74; SPARC64-NEXT:    restore75  %a = load half, ptr %p76  %r = fpext half %a to double77  ret double %r78}79 80define void @test_fpextend_fp128(ptr %p, ptr %out) nounwind {81; V8-OPT-LABEL: test_fpextend_fp128:82; V8-OPT:       ! %bb.0:83; V8-OPT-NEXT:    save %sp, -112, %sp84; V8-OPT-NEXT:    call __extendhfsf285; V8-OPT-NEXT:    lduh [%i0], %o086; V8-OPT-NEXT:    st %f0, [%fp+-20]87; V8-OPT-NEXT:    add %fp, -16, %i088; V8-OPT-NEXT:    st %i0, [%sp+64]89; V8-OPT-NEXT:    call _Q_stoq90; V8-OPT-NEXT:    ld [%fp+-20], %o091; V8-OPT-NEXT:    unimp 1692; V8-OPT-NEXT:    ldd [%fp+-8], %f093; V8-OPT-NEXT:    ldd [%fp+-16], %f494; V8-OPT-NEXT:    std %f0, [%i1+8]95; V8-OPT-NEXT:    std %f4, [%i1]96; V8-OPT-NEXT:    ret97; V8-OPT-NEXT:    restore98;99; V8-UNOPT-LABEL: test_fpextend_fp128:100; V8-UNOPT:       ! %bb.0:101; V8-UNOPT-NEXT:    save %sp, -112, %sp102; V8-UNOPT-NEXT:    call __extendhfsf2103; V8-UNOPT-NEXT:    lduh [%i0], %o0104; V8-UNOPT-NEXT:    st %f0, [%fp+-20]105; V8-UNOPT-NEXT:    add %fp, -16, %i0106; V8-UNOPT-NEXT:    st %i0, [%sp+64]107; V8-UNOPT-NEXT:    call _Q_stoq108; V8-UNOPT-NEXT:    ld [%fp+-20], %o0109; V8-UNOPT-NEXT:    unimp 16110; V8-UNOPT-NEXT:    ldd [%fp+-16], %f4111; V8-UNOPT-NEXT:    ! implicit-def: $q0112; V8-UNOPT-NEXT:    fmovs %f4, %f0113; V8-UNOPT-NEXT:    fmovs %f5, %f1114; V8-UNOPT-NEXT:    ldd [%fp+-8], %f4115; V8-UNOPT-NEXT:    fmovs %f4, %f2116; V8-UNOPT-NEXT:    fmovs %f5, %f3117; V8-UNOPT-NEXT:    fmovs %f2, %f4118; V8-UNOPT-NEXT:    fmovs %f3, %f5119; V8-UNOPT-NEXT:    std %f4, [%i1+8]120; V8-UNOPT-NEXT:    ! kill: def $d0 killed $d0 killed $q0121; V8-UNOPT-NEXT:    std %f0, [%i1]122; V8-UNOPT-NEXT:    ret123; V8-UNOPT-NEXT:    restore124;125; V9-LABEL: test_fpextend_fp128:126; V9:       ! %bb.0:127; V9-NEXT:    save %sp, -112, %sp128; V9-NEXT:    call __extendhfsf2129; V9-NEXT:    lduh [%i0], %o0130; V9-NEXT:    st %f0, [%fp+-20]131; V9-NEXT:    add %fp, -16, %i0132; V9-NEXT:    st %i0, [%sp+64]133; V9-NEXT:    call _Q_stoq134; V9-NEXT:    ld [%fp+-20], %o0135; V9-NEXT:    unimp 16136; V9-NEXT:    ldd [%fp+-8], %f0137; V9-NEXT:    ldd [%fp+-16], %f4138; V9-NEXT:    std %f0, [%i1+8]139; V9-NEXT:    std %f4, [%i1]140; V9-NEXT:    ret141; V9-NEXT:    restore142;143; SPARC64-LABEL: test_fpextend_fp128:144; SPARC64:       ! %bb.0:145; SPARC64-NEXT:    save %sp, -192, %sp146; SPARC64-NEXT:    call __extendhfsf2147; SPARC64-NEXT:    lduh [%i0], %o0148; SPARC64-NEXT:    add %fp, 2031, %o0149; SPARC64-NEXT:    fmovs %f0, %f3150; SPARC64-NEXT:    call _Qp_stoq151; SPARC64-NEXT:    nop152; SPARC64-NEXT:    ldd [%fp+2039], %f0153; SPARC64-NEXT:    ldd [%fp+2031], %f4154; SPARC64-NEXT:    std %f0, [%i1+8]155; SPARC64-NEXT:    std %f4, [%i1]156; SPARC64-NEXT:    ret157; SPARC64-NEXT:    restore158  %a = load half, ptr %p159  %r = fpext half %a to fp128160  store fp128 %r, ptr %out161  ret void162}163 164define void @test_fptrunc_float(float %f, ptr %p) nounwind {165; V8-OPT-LABEL: test_fptrunc_float:166; V8-OPT:       ! %bb.0:167; V8-OPT-NEXT:    save %sp, -96, %sp168; V8-OPT-NEXT:    call __truncsfhf2169; V8-OPT-NEXT:    mov %i0, %o0170; V8-OPT-NEXT:    sth %o0, [%i1]171; V8-OPT-NEXT:    ret172; V8-OPT-NEXT:    restore173;174; V8-UNOPT-LABEL: test_fptrunc_float:175; V8-UNOPT:       ! %bb.0:176; V8-UNOPT-NEXT:    save %sp, -96, %sp177; V8-UNOPT-NEXT:    mov %i0, %o0178; V8-UNOPT-NEXT:    st %o0, [%fp+-4]179; V8-UNOPT-NEXT:    call __truncsfhf2180; V8-UNOPT-NEXT:    ld [%fp+-4], %f0181; V8-UNOPT-NEXT:    sth %o0, [%i1]182; V8-UNOPT-NEXT:    ret183; V8-UNOPT-NEXT:    restore184;185; V9-LABEL: test_fptrunc_float:186; V9:       ! %bb.0:187; V9-NEXT:    save %sp, -96, %sp188; V9-NEXT:    call __truncsfhf2189; V9-NEXT:    mov %i0, %o0190; V9-NEXT:    sth %o0, [%i1]191; V9-NEXT:    ret192; V9-NEXT:    restore193;194; SPARC64-LABEL: test_fptrunc_float:195; SPARC64:       ! %bb.0:196; SPARC64-NEXT:    save %sp, -176, %sp197; SPARC64-NEXT:    call __truncsfhf2198; SPARC64-NEXT:    nop199; SPARC64-NEXT:    sth %o0, [%i1]200; SPARC64-NEXT:    ret201; SPARC64-NEXT:    restore202  %a = fptrunc float %f to half203  store half %a, ptr %p204  ret void205}206 207define void @test_fptrunc_double(double %d, ptr %p) nounwind {208; V8-OPT-LABEL: test_fptrunc_double:209; V8-OPT:       ! %bb.0:210; V8-OPT-NEXT:    save %sp, -112, %sp211; V8-OPT-NEXT:    ! kill: def $i1 killed $i1 killed $i0_i1 def $i0_i1212; V8-OPT-NEXT:    ! kill: def $i0 killed $i0 killed $i0_i1 def $i0_i1213; V8-OPT-NEXT:    std %i0, [%fp+-8]214; V8-OPT-NEXT:    ldd [%fp+-8], %f0215; V8-OPT-NEXT:    std %f0, [%fp+-16]216; V8-OPT-NEXT:    call __truncdfhf2217; V8-OPT-NEXT:    ldd [%fp+-16], %o0218; V8-OPT-NEXT:    sth %o0, [%i2]219; V8-OPT-NEXT:    ret220; V8-OPT-NEXT:    restore221;222; V8-UNOPT-LABEL: test_fptrunc_double:223; V8-UNOPT:       ! %bb.0:224; V8-UNOPT-NEXT:    save %sp, -112, %sp225; V8-UNOPT-NEXT:    mov %i1, %i3226; V8-UNOPT-NEXT:    mov %i0, %i4227; V8-UNOPT-NEXT:    ! implicit-def: $i0_i1228; V8-UNOPT-NEXT:    mov %i4, %i0229; V8-UNOPT-NEXT:    mov %i3, %i1230; V8-UNOPT-NEXT:    std %i0, [%fp+-8]231; V8-UNOPT-NEXT:    ldd [%fp+-8], %f0232; V8-UNOPT-NEXT:    std %f0, [%fp+-16]233; V8-UNOPT-NEXT:    ldd [%fp+-16], %i0234; V8-UNOPT-NEXT:    mov %i0, %o0235; V8-UNOPT-NEXT:    call __truncdfhf2236; V8-UNOPT-NEXT:    mov %i1, %o1237; V8-UNOPT-NEXT:    sth %o0, [%i2]238; V8-UNOPT-NEXT:    ret239; V8-UNOPT-NEXT:    restore240;241; V9-LABEL: test_fptrunc_double:242; V9:       ! %bb.0:243; V9-NEXT:    save %sp, -112, %sp244; V9-NEXT:    ! kill: def $i1 killed $i1 killed $i0_i1 def $i0_i1245; V9-NEXT:    ! kill: def $i0 killed $i0 killed $i0_i1 def $i0_i1246; V9-NEXT:    std %i0, [%fp+-8]247; V9-NEXT:    ldd [%fp+-8], %f0248; V9-NEXT:    std %f0, [%fp+-16]249; V9-NEXT:    call __truncdfhf2250; V9-NEXT:    ldd [%fp+-16], %o0251; V9-NEXT:    sth %o0, [%i2]252; V9-NEXT:    ret253; V9-NEXT:    restore254;255; SPARC64-LABEL: test_fptrunc_double:256; SPARC64:       ! %bb.0:257; SPARC64-NEXT:    save %sp, -176, %sp258; SPARC64-NEXT:    call __truncdfhf2259; SPARC64-NEXT:    nop260; SPARC64-NEXT:    sth %o0, [%i1]261; SPARC64-NEXT:    ret262; SPARC64-NEXT:    restore263  %a = fptrunc double %d to half264  store half %a, ptr %p265  ret void266}267 268define void @test_fptrunc_fp128(ptr %dp, ptr %p) nounwind {269; V8-OPT-LABEL: test_fptrunc_fp128:270; V8-OPT:       ! %bb.0:271; V8-OPT-NEXT:    save %sp, -112, %sp272; V8-OPT-NEXT:    ldd [%i0], %f0273; V8-OPT-NEXT:    ldd [%i0+8], %f4274; V8-OPT-NEXT:    std %f4, [%fp+-8]275; V8-OPT-NEXT:    add %fp, -16, %o0276; V8-OPT-NEXT:    call __trunctfhf2277; V8-OPT-NEXT:    std %f0, [%fp+-16]278; V8-OPT-NEXT:    sth %o0, [%i1]279; V8-OPT-NEXT:    ret280; V8-OPT-NEXT:    restore281;282; V8-UNOPT-LABEL: test_fptrunc_fp128:283; V8-UNOPT:       ! %bb.0:284; V8-UNOPT-NEXT:    save %sp, -112, %sp285; V8-UNOPT-NEXT:    ldd [%i0], %f4286; V8-UNOPT-NEXT:    ! implicit-def: $q0287; V8-UNOPT-NEXT:    fmovs %f4, %f0288; V8-UNOPT-NEXT:    fmovs %f5, %f1289; V8-UNOPT-NEXT:    ldd [%i0+8], %f4290; V8-UNOPT-NEXT:    fmovs %f4, %f2291; V8-UNOPT-NEXT:    fmovs %f5, %f3292; V8-UNOPT-NEXT:    fmovs %f2, %f4293; V8-UNOPT-NEXT:    fmovs %f3, %f5294; V8-UNOPT-NEXT:    std %f4, [%fp+-8]295; V8-UNOPT-NEXT:    ! kill: def $d0 killed $d0 killed $q0296; V8-UNOPT-NEXT:    std %f0, [%fp+-16]297; V8-UNOPT-NEXT:    call __trunctfhf2298; V8-UNOPT-NEXT:    add %fp, -16, %o0299; V8-UNOPT-NEXT:    sth %o0, [%i1]300; V8-UNOPT-NEXT:    ret301; V8-UNOPT-NEXT:    restore302;303; V9-LABEL: test_fptrunc_fp128:304; V9:       ! %bb.0:305; V9-NEXT:    save %sp, -112, %sp306; V9-NEXT:    ldd [%i0], %f0307; V9-NEXT:    ldd [%i0+8], %f4308; V9-NEXT:    std %f4, [%fp+-8]309; V9-NEXT:    add %fp, -16, %o0310; V9-NEXT:    call __trunctfhf2311; V9-NEXT:    std %f0, [%fp+-16]312; V9-NEXT:    sth %o0, [%i1]313; V9-NEXT:    ret314; V9-NEXT:    restore315;316; SPARC64-LABEL: test_fptrunc_fp128:317; SPARC64:       ! %bb.0:318; SPARC64-NEXT:    save %sp, -176, %sp319; SPARC64-NEXT:    ldd [%i0], %f0320; SPARC64-NEXT:    call __trunctfhf2321; SPARC64-NEXT:    ldd [%i0+8], %f2322; SPARC64-NEXT:    sth %o0, [%i1]323; SPARC64-NEXT:    ret324; SPARC64-NEXT:    restore325  %d = load fp128, ptr %dp326  %a = fptrunc fp128 %d to half327  store half %a, ptr %p328  ret void329}330 331define void @test_fadd(ptr %p, ptr %q) nounwind {332; V8-OPT-LABEL: test_fadd:333; V8-OPT:       ! %bb.0:334; V8-OPT-NEXT:    save %sp, -104, %sp335; V8-OPT-NEXT:    lduh [%i0], %i2336; V8-OPT-NEXT:    call __extendhfsf2337; V8-OPT-NEXT:    lduh [%i1], %o0338; V8-OPT-NEXT:    st %f0, [%fp+-8] ! 4-byte Folded Spill339; V8-OPT-NEXT:    call __extendhfsf2340; V8-OPT-NEXT:    mov %i2, %o0341; V8-OPT-NEXT:    ld [%fp+-8], %f1 ! 4-byte Folded Reload342; V8-OPT-NEXT:    fadds %f0, %f1, %f0343; V8-OPT-NEXT:    st %f0, [%fp+-4]344; V8-OPT-NEXT:    call __truncsfhf2345; V8-OPT-NEXT:    ld [%fp+-4], %o0346; V8-OPT-NEXT:    sth %o0, [%i0]347; V8-OPT-NEXT:    ret348; V8-OPT-NEXT:    restore349;350; V8-UNOPT-LABEL: test_fadd:351; V8-UNOPT:       ! %bb.0:352; V8-UNOPT-NEXT:    save %sp, -104, %sp353; V8-UNOPT-NEXT:    lduh [%i0], %i2354; V8-UNOPT-NEXT:    st %i2, [%fp+-12] ! 4-byte Folded Spill355; V8-UNOPT-NEXT:    call __extendhfsf2356; V8-UNOPT-NEXT:    lduh [%i1], %o0357; V8-UNOPT-NEXT:    ld [%fp+-12], %o0 ! 4-byte Folded Reload358; V8-UNOPT-NEXT:    call __extendhfsf2359; V8-UNOPT-NEXT:    st %f0, [%fp+-8]360; V8-UNOPT-NEXT:    ld [%fp+-8], %f1 ! 4-byte Folded Reload361; V8-UNOPT-NEXT:    fadds %f0, %f1, %f0362; V8-UNOPT-NEXT:    st %f0, [%fp+-4]363; V8-UNOPT-NEXT:    call __truncsfhf2364; V8-UNOPT-NEXT:    ld [%fp+-4], %o0365; V8-UNOPT-NEXT:    sth %o0, [%i0]366; V8-UNOPT-NEXT:    ret367; V8-UNOPT-NEXT:    restore368;369; V9-LABEL: test_fadd:370; V9:       ! %bb.0:371; V9-NEXT:    save %sp, -104, %sp372; V9-NEXT:    lduh [%i0], %i2373; V9-NEXT:    call __extendhfsf2374; V9-NEXT:    lduh [%i1], %o0375; V9-NEXT:    st %f0, [%fp+-8] ! 4-byte Folded Spill376; V9-NEXT:    call __extendhfsf2377; V9-NEXT:    mov %i2, %o0378; V9-NEXT:    ld [%fp+-8], %f1 ! 4-byte Folded Reload379; V9-NEXT:    fadds %f0, %f1, %f0380; V9-NEXT:    st %f0, [%fp+-4]381; V9-NEXT:    call __truncsfhf2382; V9-NEXT:    ld [%fp+-4], %o0383; V9-NEXT:    sth %o0, [%i0]384; V9-NEXT:    ret385; V9-NEXT:    restore386;387; SPARC64-LABEL: test_fadd:388; SPARC64:       ! %bb.0:389; SPARC64-NEXT:    save %sp, -192, %sp390; SPARC64-NEXT:    lduh [%i0], %i2391; SPARC64-NEXT:    call __extendhfsf2392; SPARC64-NEXT:    lduh [%i1], %o0393; SPARC64-NEXT:    st %f0, [%fp+2043] ! 4-byte Folded Spill394; SPARC64-NEXT:    call __extendhfsf2395; SPARC64-NEXT:    mov %i2, %o0396; SPARC64-NEXT:    ld [%fp+2043], %f1 ! 4-byte Folded Reload397; SPARC64-NEXT:    call __truncsfhf2398; SPARC64-NEXT:    fadds %f0, %f1, %f1399; SPARC64-NEXT:    sth %o0, [%i0]400; SPARC64-NEXT:    ret401; SPARC64-NEXT:    restore402  %a = load half, ptr %p403  %b = load half, ptr %q404  %r = fadd half %a, %b405  store half %r, ptr %p406  ret void407}408 409define void @test_fmul(ptr %p, ptr %q) nounwind {410; V8-OPT-LABEL: test_fmul:411; V8-OPT:       ! %bb.0:412; V8-OPT-NEXT:    save %sp, -104, %sp413; V8-OPT-NEXT:    lduh [%i0], %i2414; V8-OPT-NEXT:    call __extendhfsf2415; V8-OPT-NEXT:    lduh [%i1], %o0416; V8-OPT-NEXT:    st %f0, [%fp+-8] ! 4-byte Folded Spill417; V8-OPT-NEXT:    call __extendhfsf2418; V8-OPT-NEXT:    mov %i2, %o0419; V8-OPT-NEXT:    ld [%fp+-8], %f1 ! 4-byte Folded Reload420; V8-OPT-NEXT:    fmuls %f0, %f1, %f0421; V8-OPT-NEXT:    st %f0, [%fp+-4]422; V8-OPT-NEXT:    call __truncsfhf2423; V8-OPT-NEXT:    ld [%fp+-4], %o0424; V8-OPT-NEXT:    sth %o0, [%i0]425; V8-OPT-NEXT:    ret426; V8-OPT-NEXT:    restore427;428; V8-UNOPT-LABEL: test_fmul:429; V8-UNOPT:       ! %bb.0:430; V8-UNOPT-NEXT:    save %sp, -104, %sp431; V8-UNOPT-NEXT:    lduh [%i0], %i2432; V8-UNOPT-NEXT:    st %i2, [%fp+-12] ! 4-byte Folded Spill433; V8-UNOPT-NEXT:    call __extendhfsf2434; V8-UNOPT-NEXT:    lduh [%i1], %o0435; V8-UNOPT-NEXT:    ld [%fp+-12], %o0 ! 4-byte Folded Reload436; V8-UNOPT-NEXT:    call __extendhfsf2437; V8-UNOPT-NEXT:    st %f0, [%fp+-8]438; V8-UNOPT-NEXT:    ld [%fp+-8], %f1 ! 4-byte Folded Reload439; V8-UNOPT-NEXT:    fmuls %f0, %f1, %f0440; V8-UNOPT-NEXT:    st %f0, [%fp+-4]441; V8-UNOPT-NEXT:    call __truncsfhf2442; V8-UNOPT-NEXT:    ld [%fp+-4], %o0443; V8-UNOPT-NEXT:    sth %o0, [%i0]444; V8-UNOPT-NEXT:    ret445; V8-UNOPT-NEXT:    restore446;447; V9-LABEL: test_fmul:448; V9:       ! %bb.0:449; V9-NEXT:    save %sp, -104, %sp450; V9-NEXT:    lduh [%i0], %i2451; V9-NEXT:    call __extendhfsf2452; V9-NEXT:    lduh [%i1], %o0453; V9-NEXT:    st %f0, [%fp+-8] ! 4-byte Folded Spill454; V9-NEXT:    call __extendhfsf2455; V9-NEXT:    mov %i2, %o0456; V9-NEXT:    ld [%fp+-8], %f1 ! 4-byte Folded Reload457; V9-NEXT:    fmuls %f0, %f1, %f0458; V9-NEXT:    st %f0, [%fp+-4]459; V9-NEXT:    call __truncsfhf2460; V9-NEXT:    ld [%fp+-4], %o0461; V9-NEXT:    sth %o0, [%i0]462; V9-NEXT:    ret463; V9-NEXT:    restore464;465; SPARC64-LABEL: test_fmul:466; SPARC64:       ! %bb.0:467; SPARC64-NEXT:    save %sp, -192, %sp468; SPARC64-NEXT:    lduh [%i0], %i2469; SPARC64-NEXT:    call __extendhfsf2470; SPARC64-NEXT:    lduh [%i1], %o0471; SPARC64-NEXT:    st %f0, [%fp+2043] ! 4-byte Folded Spill472; SPARC64-NEXT:    call __extendhfsf2473; SPARC64-NEXT:    mov %i2, %o0474; SPARC64-NEXT:    ld [%fp+2043], %f1 ! 4-byte Folded Reload475; SPARC64-NEXT:    call __truncsfhf2476; SPARC64-NEXT:    fmuls %f0, %f1, %f1477; SPARC64-NEXT:    sth %o0, [%i0]478; SPARC64-NEXT:    ret479; SPARC64-NEXT:    restore480  %a = load half, ptr %p481  %b = load half, ptr %q482  %r = fmul half %a, %b483  store half %r, ptr %p484  ret void485}486