brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.8 KiB · 08c053f Raw
155 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv64 -mattr=+d -target-abi=lp64d < %s | FileCheck --check-prefixes=CHECK,RV64 %s3; RUN: llc -mtriple=riscv32 -mattr=+d -target-abi=ilp32d < %s | FileCheck --check-prefixes=CHECK,RV32 %s4 5define void @test_load_store(ptr %p, ptr %q) nounwind {6; CHECK-LABEL: test_load_store:7; CHECK:       # %bb.0:8; CHECK-NEXT:    lh a0, 0(a0)9; CHECK-NEXT:    sh a0, 0(a1)10; CHECK-NEXT:    ret11  %a = load bfloat, ptr %p12  store bfloat %a, ptr %q13  ret void14}15 16define float @test_fpextend_float(ptr %p) nounwind {17; CHECK-LABEL: test_fpextend_float:18; CHECK:       # %bb.0:19; CHECK-NEXT:    lhu a0, 0(a0)20; CHECK-NEXT:    slli a0, a0, 1621; CHECK-NEXT:    fmv.w.x fa0, a022; CHECK-NEXT:    ret23  %a = load bfloat, ptr %p24  %r = fpext bfloat %a to float25  ret float %r26}27 28define double @test_fpextend_double(ptr %p) nounwind {29; CHECK-LABEL: test_fpextend_double:30; CHECK:       # %bb.0:31; CHECK-NEXT:    lhu a0, 0(a0)32; CHECK-NEXT:    slli a0, a0, 1633; CHECK-NEXT:    fmv.w.x fa5, a034; CHECK-NEXT:    fcvt.d.s fa0, fa535; CHECK-NEXT:    ret36  %a = load bfloat, ptr %p37  %r = fpext bfloat %a to double38  ret double %r39}40 41define void @test_fptrunc_float(float %f, ptr %p) nounwind {42; RV64-LABEL: test_fptrunc_float:43; RV64:       # %bb.0:44; RV64-NEXT:    addi sp, sp, -1645; RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill46; RV64-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill47; RV64-NEXT:    mv s0, a048; RV64-NEXT:    call __truncsfbf249; RV64-NEXT:    fmv.x.w a0, fa050; RV64-NEXT:    sh a0, 0(s0)51; RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload52; RV64-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload53; RV64-NEXT:    addi sp, sp, 1654; RV64-NEXT:    ret55;56; RV32-LABEL: test_fptrunc_float:57; RV32:       # %bb.0:58; RV32-NEXT:    addi sp, sp, -1659; RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill60; RV32-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill61; RV32-NEXT:    mv s0, a062; RV32-NEXT:    call __truncsfbf263; RV32-NEXT:    fmv.x.w a0, fa064; RV32-NEXT:    sh a0, 0(s0)65; RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload66; RV32-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload67; RV32-NEXT:    addi sp, sp, 1668; RV32-NEXT:    ret69  %a = fptrunc float %f to bfloat70  store bfloat %a, ptr %p71  ret void72}73 74define void @test_fptrunc_double(double %d, ptr %p) nounwind {75; RV64-LABEL: test_fptrunc_double:76; RV64:       # %bb.0:77; RV64-NEXT:    addi sp, sp, -1678; RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill79; RV64-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill80; RV64-NEXT:    mv s0, a081; RV64-NEXT:    call __truncdfbf282; RV64-NEXT:    fmv.x.w a0, fa083; RV64-NEXT:    sh a0, 0(s0)84; RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload85; RV64-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload86; RV64-NEXT:    addi sp, sp, 1687; RV64-NEXT:    ret88;89; RV32-LABEL: test_fptrunc_double:90; RV32:       # %bb.0:91; RV32-NEXT:    addi sp, sp, -1692; RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill93; RV32-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill94; RV32-NEXT:    mv s0, a095; RV32-NEXT:    call __truncdfbf296; RV32-NEXT:    fmv.x.w a0, fa097; RV32-NEXT:    sh a0, 0(s0)98; RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload99; RV32-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload100; RV32-NEXT:    addi sp, sp, 16101; RV32-NEXT:    ret102  %a = fptrunc double %d to bfloat103  store bfloat %a, ptr %p104  ret void105}106 107define void @test_fadd(ptr %p, ptr %q) nounwind {108; RV64-LABEL: test_fadd:109; RV64:       # %bb.0:110; RV64-NEXT:    addi sp, sp, -16111; RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill112; RV64-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill113; RV64-NEXT:    mv s0, a0114; RV64-NEXT:    lhu a0, 0(a1)115; RV64-NEXT:    lhu a1, 0(s0)116; RV64-NEXT:    slli a0, a0, 16117; RV64-NEXT:    slli a1, a1, 16118; RV64-NEXT:    fmv.w.x fa5, a0119; RV64-NEXT:    fmv.w.x fa4, a1120; RV64-NEXT:    fadd.s fa0, fa4, fa5121; RV64-NEXT:    call __truncsfbf2122; RV64-NEXT:    fmv.x.w a0, fa0123; RV64-NEXT:    sh a0, 0(s0)124; RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload125; RV64-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload126; RV64-NEXT:    addi sp, sp, 16127; RV64-NEXT:    ret128;129; RV32-LABEL: test_fadd:130; RV32:       # %bb.0:131; RV32-NEXT:    addi sp, sp, -16132; RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill133; RV32-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill134; RV32-NEXT:    mv s0, a0135; RV32-NEXT:    lhu a0, 0(a1)136; RV32-NEXT:    lhu a1, 0(s0)137; RV32-NEXT:    slli a0, a0, 16138; RV32-NEXT:    slli a1, a1, 16139; RV32-NEXT:    fmv.w.x fa5, a0140; RV32-NEXT:    fmv.w.x fa4, a1141; RV32-NEXT:    fadd.s fa0, fa4, fa5142; RV32-NEXT:    call __truncsfbf2143; RV32-NEXT:    fmv.x.w a0, fa0144; RV32-NEXT:    sh a0, 0(s0)145; RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload146; RV32-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload147; RV32-NEXT:    addi sp, sp, 16148; RV32-NEXT:    ret149  %a = load bfloat, ptr %p150  %b = load bfloat, ptr %q151  %r = fadd bfloat %a, %b152  store bfloat %r, ptr %p153  ret void154}155