brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · cc28506 Raw
99 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -O3 < %s -mtriple=riscv32 | FileCheck %s3 4; These tests demonstrate optimizations involving copies from VLENB.5 6define void @unused_copy_is_dead() {7; CHECK-LABEL: unused_copy_is_dead:8; CHECK:       # %bb.0: # %entry9; CHECK-NEXT:    ret10entry:11  call i32 @llvm.read_register.i32(metadata !0)12  ret void13}14 15define i32 @simple_cse() {16; CHECK-LABEL: simple_cse:17; CHECK:       # %bb.0: # %entry18; CHECK-NEXT:    csrr a0, vlenb19; CHECK-NEXT:    sub a0, a0, a020; CHECK-NEXT:    ret21entry:22  %v1 = call i32 @llvm.read_register.i32(metadata !0)23  %v2 = call i32 @llvm.read_register.i32(metadata !0)24  %sub = sub i32 %v1, %v225  ret i32 %sub26}27 28define i32 @sink_to_use_branch(i1 %c) {29; CHECK-LABEL: sink_to_use_branch:30; CHECK:       # %bb.0: # %entry31; CHECK-NEXT:    andi a0, a0, 132; CHECK-NEXT:    beqz a0, .LBB2_233; CHECK-NEXT:  # %bb.1: # %used34; CHECK-NEXT:    csrr a0, vlenb35; CHECK-NEXT:  .LBB2_2: # %unused36; CHECK-NEXT:    ret37entry:38  %v1 = call i32 @llvm.read_register.i32(metadata !0)39  br i1 %c, label %used, label %unused40used:41  ret i32 %v142unused:43  ret i32 044}45 46define i32 @sink_to_use_call() {47; CHECK-LABEL: sink_to_use_call:48; CHECK:       # %bb.0: # %entry49; CHECK-NEXT:    addi sp, sp, -1650; CHECK-NEXT:    .cfi_def_cfa_offset 1651; CHECK-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill52; CHECK-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill53; CHECK-NEXT:    .cfi_offset ra, -454; CHECK-NEXT:    .cfi_offset s0, -855; CHECK-NEXT:    csrr s0, vlenb56; CHECK-NEXT:    call unknown57; CHECK-NEXT:    mv a0, s058; CHECK-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload59; CHECK-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload60; CHECK-NEXT:    .cfi_restore ra61; CHECK-NEXT:    .cfi_restore s062; CHECK-NEXT:    addi sp, sp, 1663; CHECK-NEXT:    .cfi_def_cfa_offset 064; CHECK-NEXT:    ret65entry:66  %v1 = call i32 @llvm.read_register.i32(metadata !0)67  call void @unknown() ; maythrow68  ret i32 %v169}70 71define void @machine_licm() {72; CHECK-LABEL: machine_licm:73; CHECK:       # %bb.0: # %entry74; CHECK-NEXT:    addi sp, sp, -1675; CHECK-NEXT:    .cfi_def_cfa_offset 1676; CHECK-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill77; CHECK-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill78; CHECK-NEXT:    .cfi_offset ra, -479; CHECK-NEXT:    .cfi_offset s0, -880; CHECK-NEXT:    csrr s0, vlenb81; CHECK-NEXT:  .LBB4_1: # %loop82; CHECK-NEXT:    # =>This Inner Loop Header: Depth=183; CHECK-NEXT:    mv a0, s084; CHECK-NEXT:    call use85; CHECK-NEXT:    j .LBB4_186entry:87  br label %loop88 89loop:90  %v1 = call i32 @llvm.read_register.i32(metadata !0)91  call void @use(i32 %v1)92  br label %loop93}94 95declare void @unknown()96declare void @use(i32)97 98!0 = !{!"vlenb"}99