[InstCombine] Signed saturation patterns
[llvm-core.git] / test / Transforms / NewGVN / int_sideeffect.ll
blob75a798d6f0a5130f82dfc6f6d1a054909e216268
1 ; RUN: opt -S < %s -newgvn | FileCheck %s
3 declare void @llvm.sideeffect()
5 ; Store-to-load forwarding across a @llvm.sideeffect.
7 ; CHECK-LABEL: s2l
8 ; CHECK-NOT: load
9 define float @s2l(float* %p) {
10     store float 0.0, float* %p
11     call void @llvm.sideeffect()
12     %t = load float, float* %p
13     ret float %t
16 ; Redundant load elimination across a @llvm.sideeffect.
18 ; CHECK-LABEL: rle
19 ; CHECK: load
20 ; CHECK-NOT: load
21 define float @rle(float* %p) {
22     %r = load float, float* %p
23     call void @llvm.sideeffect()
24     %s = load float, float* %p
25     %t = fadd float %r, %s
26     ret float %t