brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.9 KiB · c01248f Raw
118 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+zdinx,+zilsd -verify-machineinstrs \3; RUN:   -code-model=medium < %s | FileCheck %s4 5@g_0 = global double 0.06 7define double @load_g_0() nounwind {8; CHECK-LABEL: load_g_0:9; CHECK:       # %bb.0: # %entry10; CHECK-NEXT:  .Lpcrel_hi0:11; CHECK-NEXT:    auipc a0, %pcrel_hi(g_0)12; CHECK-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi0)(a0)13; CHECK-NEXT:    ret14entry:15  %0 = load double, ptr @g_016  ret double %017}18 19define void @store_g_0() nounwind {20; CHECK-LABEL: store_g_0:21; CHECK:       # %bb.0: # %entry22; CHECK-NEXT:  .Lpcrel_hi1:23; CHECK-NEXT:    auipc a0, %pcrel_hi(g_0)24; CHECK-NEXT:    sd zero, %pcrel_lo(.Lpcrel_hi1)(a0)25; CHECK-NEXT:    ret26entry:27  store double 0.0, ptr @g_028  ret void29}30 31%struct.S = type { double, double }32 33define double @fold_addi_from_different_bb(i32 %k, i32 %n, ptr %a) nounwind {34; CHECK-LABEL: fold_addi_from_different_bb:35; CHECK:       # %bb.0: # %entry36; CHECK-NEXT:    addi sp, sp, -3237; CHECK-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill38; CHECK-NEXT:    sw s0, 24(sp) # 4-byte Folded Spill39; CHECK-NEXT:    sw s1, 20(sp) # 4-byte Folded Spill40; CHECK-NEXT:    sw s2, 16(sp) # 4-byte Folded Spill41; CHECK-NEXT:    sw s3, 12(sp) # 4-byte Folded Spill42; CHECK-NEXT:    sw s4, 8(sp) # 4-byte Folded Spill43; CHECK-NEXT:    blez a1, .LBB2_344; CHECK-NEXT:  # %bb.1: # %for.body.lr.ph45; CHECK-NEXT:    mv s2, a246; CHECK-NEXT:    mv s3, a147; CHECK-NEXT:    fmv.d s0, zero48; CHECK-NEXT:    slli a0, a0, 449; CHECK-NEXT:    add s4, a2, a050; CHECK-NEXT:  .LBB2_2: # %for.body51; CHECK-NEXT:    # =>This Inner Loop Header: Depth=152; CHECK-NEXT:    mv a0, s253; CHECK-NEXT:    call f54; CHECK-NEXT:    ld a0, 8(s4)55; CHECK-NEXT:    addi s3, s3, -156; CHECK-NEXT:    fadd.d s0, a0, s057; CHECK-NEXT:    bnez s3, .LBB2_258; CHECK-NEXT:    j .LBB2_459; CHECK-NEXT:  .LBB2_3:60; CHECK-NEXT:    fmv.d s0, zero61; CHECK-NEXT:  .LBB2_4: # %for.cond.cleanup62; CHECK-NEXT:    mv a0, s063; CHECK-NEXT:    mv a1, s164; CHECK-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload65; CHECK-NEXT:    lw s0, 24(sp) # 4-byte Folded Reload66; CHECK-NEXT:    lw s1, 20(sp) # 4-byte Folded Reload67; CHECK-NEXT:    lw s2, 16(sp) # 4-byte Folded Reload68; CHECK-NEXT:    lw s3, 12(sp) # 4-byte Folded Reload69; CHECK-NEXT:    lw s4, 8(sp) # 4-byte Folded Reload70; CHECK-NEXT:    addi sp, sp, 3271; CHECK-NEXT:    ret72entry:73  %cmp4 = icmp sgt i32 %n, 074  br i1 %cmp4, label %for.body.lr.ph, label %for.cond.cleanup75 76for.body.lr.ph:                                   ; preds = %entry77  %y = getelementptr inbounds %struct.S, ptr %a, i32 %k, i32 178  br label %for.body79 80for.cond.cleanup:                                 ; preds = %for.body, %entry81  %s.0.lcssa = phi double [ 0.0, %entry ], [ %add, %for.body ]82  ret double %s.0.lcssa83 84for.body:                                         ; preds = %for.body.lr.ph, %for.body85  %i.06 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %for.body ]86  %s.05 = phi double [ 0.0, %for.body.lr.ph ], [ %add, %for.body ]87  call void @f(ptr %a)88  %0 = load double, ptr %y, align 889  %add = fadd double %0, %s.0590  %inc = add nuw nsw i32 %i.06, 191  %exitcond.not = icmp eq i32 %inc, %n92  br i1 %exitcond.not, label %for.cond.cleanup, label %for.body93}94 95declare void @f(ptr)96 97define void @split_offset(ptr %dest, double %x) {98; CHECK-LABEL: split_offset:99; CHECK:       # %bb.0:100; CHECK-NEXT:    mv a3, a2101; CHECK-NEXT:    addi a0, a0, 2047102; CHECK-NEXT:    mv a2, a1103; CHECK-NEXT:    sd a2, 1(a0)104; CHECK-NEXT:    sd a2, 9(a0)105; CHECK-NEXT:    sd a2, 17(a0)106; CHECK-NEXT:    sd a2, 25(a0)107; CHECK-NEXT:    ret108  %p1 = getelementptr double, ptr %dest, i32 256109  store double %x, ptr %p1110  %p2 = getelementptr double, ptr %dest, i32 257111  store double %x, ptr %p2112  %p3 = getelementptr double, ptr %dest, i32 258113  store double %x, ptr %p3114  %p4 = getelementptr double, ptr %dest, i32 259115  store double %x, ptr %p4116  ret void117}118