brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 8754cc0 Raw
70 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 62; RUN: opt -S < %s -passes=gvn | FileCheck %s3 4declare void @llvm.sideeffect()5 6; Store-to-load forwarding across a @llvm.sideeffect.7define float @s2l(ptr %p) {8; CHECK-LABEL: define float @s2l(9; CHECK-SAME: ptr [[P:%.*]]) {10; CHECK-NEXT:    store float 0.000000e+00, ptr [[P]], align 411; CHECK-NEXT:    call void @llvm.sideeffect()12; CHECK-NEXT:    ret float 0.000000e+0013;14  store float 0.0, ptr %p15  call void @llvm.sideeffect()16  %t = load float, ptr %p17  ret float %t18}19 20; Redundant load elimination across a @llvm.sideeffect.21define float @rle(ptr %p) {22; CHECK-LABEL: define float @rle(23; CHECK-SAME: ptr [[P:%.*]]) {24; CHECK-NEXT:    [[R:%.*]] = load float, ptr [[P]], align 425; CHECK-NEXT:    call void @llvm.sideeffect()26; CHECK-NEXT:    [[T:%.*]] = fadd float [[R]], [[R]]27; CHECK-NEXT:    ret float [[T]]28;29  %r = load float, ptr %p30  call void @llvm.sideeffect()31  %s = load float, ptr %p32  %t = fadd float %r, %s33  ret float %t34}35 36; LICM across a @llvm.sideeffect.37define float @licm(i64 %n, ptr nocapture readonly %p) #0 {38; CHECK-LABEL: define float @licm(39; CHECK-SAME: i64 [[N:%.*]], ptr readonly captures(none) [[P:%.*]]) {40; CHECK-NEXT:  [[BB0:.*]]:41; CHECK-NEXT:    [[T3_PRE:%.*]] = load float, ptr [[P]], align 442; CHECK-NEXT:    br label %[[LOOP:.*]]43; CHECK:       [[LOOP]]:44; CHECK-NEXT:    [[I:%.*]] = phi i64 [ 0, %[[BB0]] ], [ [[T5:%.*]], %[[LOOP]] ]45; CHECK-NEXT:    [[SUM:%.*]] = phi float [ 0.000000e+00, %[[BB0]] ], [ [[T4:%.*]], %[[LOOP]] ]46; CHECK-NEXT:    call void @llvm.sideeffect()47; CHECK-NEXT:    [[T4]] = fadd float [[SUM]], [[T3_PRE]]48; CHECK-NEXT:    [[T5]] = add i64 [[I]], 149; CHECK-NEXT:    [[T6:%.*]] = icmp ult i64 [[T5]], [[N]]50; CHECK-NEXT:    br i1 [[T6]], label %[[LOOP]], label %[[BB2:.*]]51; CHECK:       [[BB2]]:52; CHECK-NEXT:    ret float [[T4]]53;54bb0:55  br label %loop56 57loop:58  %i = phi i64 [ 0, %bb0 ], [ %t5, %loop ]59  %sum = phi float [ 0.000000e+00, %bb0 ], [ %t4, %loop ]60  call void @llvm.sideeffect()61  %t3 = load float, ptr %p62  %t4 = fadd float %sum, %t363  %t5 = add i64 %i, 164  %t6 = icmp ult i64 %t5, %n65  br i1 %t6, label %loop, label %bb266 67bb2:68  ret float %t469}70