brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.9 KiB · 3184231 Raw
153 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr +d -target-abi ilp32d < %s | FileCheck %s3 4define void @test_load_store(ptr %p, ptr %q) nounwind {5; CHECK-LABEL: test_load_store:6; CHECK:       # %bb.0:7; CHECK-NEXT:    lh a0, 0(a0)8; CHECK-NEXT:    sh a0, 0(a1)9; CHECK-NEXT:    ret10  %a = load half, ptr %p11  store half %a, ptr %q12  ret void13}14 15define float @test_fpextend_float(ptr %p) nounwind {16; CHECK-LABEL: test_fpextend_float:17; CHECK:       # %bb.0:18; CHECK-NEXT:    addi sp, sp, -1619; CHECK-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill20; CHECK-NEXT:    lhu a0, 0(a0)21; CHECK-NEXT:    fmv.w.x fa0, a022; CHECK-NEXT:    call __extendhfsf223; CHECK-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload24; CHECK-NEXT:    addi sp, sp, 1625; CHECK-NEXT:    ret26  %a = load half, ptr %p27  %r = fpext half %a to float28  ret float %r29}30 31define double @test_fpextend_double(ptr %p) nounwind {32; CHECK-LABEL: test_fpextend_double:33; CHECK:       # %bb.0:34; CHECK-NEXT:    addi sp, sp, -1635; CHECK-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill36; CHECK-NEXT:    lhu a0, 0(a0)37; CHECK-NEXT:    fmv.w.x fa0, a038; CHECK-NEXT:    call __extendhfsf239; CHECK-NEXT:    fcvt.d.s fa0, fa040; CHECK-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload41; CHECK-NEXT:    addi sp, sp, 1642; CHECK-NEXT:    ret43  %a = load half, ptr %p44  %r = fpext half %a to double45  ret double %r46}47 48define void @test_fptrunc_float(float %f, ptr %p) nounwind {49; CHECK-LABEL: test_fptrunc_float:50; CHECK:       # %bb.0:51; CHECK-NEXT:    addi sp, sp, -1652; CHECK-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill53; CHECK-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill54; CHECK-NEXT:    mv s0, a055; CHECK-NEXT:    call __truncsfhf256; CHECK-NEXT:    fmv.x.w a0, fa057; CHECK-NEXT:    sh a0, 0(s0)58; CHECK-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload59; CHECK-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload60; CHECK-NEXT:    addi sp, sp, 1661; CHECK-NEXT:    ret62  %a = fptrunc float %f to half63  store half %a, ptr %p64  ret void65}66 67define void @test_fptrunc_double(double %d, ptr %p) nounwind {68; CHECK-LABEL: test_fptrunc_double:69; CHECK:       # %bb.0:70; CHECK-NEXT:    addi sp, sp, -1671; CHECK-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill72; CHECK-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill73; CHECK-NEXT:    mv s0, a074; CHECK-NEXT:    call __truncdfhf275; CHECK-NEXT:    fmv.x.w a0, fa076; CHECK-NEXT:    sh a0, 0(s0)77; CHECK-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload78; CHECK-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload79; CHECK-NEXT:    addi sp, sp, 1680; CHECK-NEXT:    ret81  %a = fptrunc double %d to half82  store half %a, ptr %p83  ret void84}85 86define void @test_fadd(ptr %p, ptr %q) nounwind {87; CHECK-LABEL: test_fadd:88; CHECK:       # %bb.0:89; CHECK-NEXT:    addi sp, sp, -3290; CHECK-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill91; CHECK-NEXT:    sw s0, 24(sp) # 4-byte Folded Spill92; CHECK-NEXT:    fsd fs0, 16(sp) # 8-byte Folded Spill93; CHECK-NEXT:    fsd fs1, 8(sp) # 8-byte Folded Spill94; CHECK-NEXT:    mv s0, a095; CHECK-NEXT:    lhu a0, 0(a0)96; CHECK-NEXT:    lhu a1, 0(a1)97; CHECK-NEXT:    fmv.w.x fs0, a098; CHECK-NEXT:    fmv.w.x fa0, a199; CHECK-NEXT:    call __extendhfsf2100; CHECK-NEXT:    fmv.s fs1, fa0101; CHECK-NEXT:    fmv.s fa0, fs0102; CHECK-NEXT:    call __extendhfsf2103; CHECK-NEXT:    fadd.s fa0, fa0, fs1104; CHECK-NEXT:    call __truncsfhf2105; CHECK-NEXT:    fmv.x.w a0, fa0106; CHECK-NEXT:    sh a0, 0(s0)107; CHECK-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload108; CHECK-NEXT:    lw s0, 24(sp) # 4-byte Folded Reload109; CHECK-NEXT:    fld fs0, 16(sp) # 8-byte Folded Reload110; CHECK-NEXT:    fld fs1, 8(sp) # 8-byte Folded Reload111; CHECK-NEXT:    addi sp, sp, 32112; CHECK-NEXT:    ret113  %a = load half, ptr %p114  %b = load half, ptr %q115  %r = fadd half %a, %b116  store half %r, ptr %p117  ret void118}119 120define void @test_fmul(ptr %p, ptr %q) nounwind {121; CHECK-LABEL: test_fmul:122; CHECK:       # %bb.0:123; CHECK-NEXT:    addi sp, sp, -32124; CHECK-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill125; CHECK-NEXT:    sw s0, 24(sp) # 4-byte Folded Spill126; CHECK-NEXT:    fsd fs0, 16(sp) # 8-byte Folded Spill127; CHECK-NEXT:    fsd fs1, 8(sp) # 8-byte Folded Spill128; CHECK-NEXT:    mv s0, a0129; CHECK-NEXT:    lhu a0, 0(a0)130; CHECK-NEXT:    lhu a1, 0(a1)131; CHECK-NEXT:    fmv.w.x fs0, a0132; CHECK-NEXT:    fmv.w.x fa0, a1133; CHECK-NEXT:    call __extendhfsf2134; CHECK-NEXT:    fmv.s fs1, fa0135; CHECK-NEXT:    fmv.s fa0, fs0136; CHECK-NEXT:    call __extendhfsf2137; CHECK-NEXT:    fmul.s fa0, fa0, fs1138; CHECK-NEXT:    call __truncsfhf2139; CHECK-NEXT:    fmv.x.w a0, fa0140; CHECK-NEXT:    sh a0, 0(s0)141; CHECK-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload142; CHECK-NEXT:    lw s0, 24(sp) # 4-byte Folded Reload143; CHECK-NEXT:    fld fs0, 16(sp) # 8-byte Folded Reload144; CHECK-NEXT:    fld fs1, 8(sp) # 8-byte Folded Reload145; CHECK-NEXT:    addi sp, sp, 32146; CHECK-NEXT:    ret147  %a = load half, ptr %p148  %b = load half, ptr %q149  %r = fmul half %a, %b150  store half %r, ptr %p151  ret void152}153