75 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 62; RUN: opt -passes=gvn -S < %s | FileCheck %s3 4define double @test1(double %x, double %y) {5; CHECK-LABEL: define double @test1(6; CHECK-SAME: double [[X:%.*]], double [[Y:%.*]]) {7; CHECK-NEXT: [[ADD1:%.*]] = fadd double [[X]], [[Y]]8; CHECK-NEXT: [[FOO:%.*]] = fadd double [[ADD1]], [[ADD1]]9; CHECK-NEXT: ret double [[FOO]]10;11 %add1 = fadd double %x, %y, !fpmath !012 %add2 = fadd double %x, %y13 %foo = fadd double %add1, %add214 ret double %foo15}16 17define double @test2(double %x, double %y) {18; CHECK-LABEL: define double @test2(19; CHECK-SAME: double [[X:%.*]], double [[Y:%.*]]) {20; CHECK-NEXT: [[ADD1:%.*]] = fadd double [[X]], [[Y]], !fpmath [[META0:![0-9]+]]21; CHECK-NEXT: [[FOO:%.*]] = fadd double [[ADD1]], [[ADD1]]22; CHECK-NEXT: ret double [[FOO]]23;24 %add1 = fadd double %x, %y, !fpmath !025 %add2 = fadd double %x, %y, !fpmath !026 %foo = fadd double %add1, %add227 ret double %foo28}29 30define double @test3(double %x, double %y) {31; CHECK-LABEL: define double @test3(32; CHECK-SAME: double [[X:%.*]], double [[Y:%.*]]) {33; CHECK-NEXT: [[ADD1:%.*]] = fadd double [[X]], [[Y]], !fpmath [[META1:![0-9]+]]34; CHECK-NEXT: [[FOO:%.*]] = fadd double [[ADD1]], [[ADD1]]35; CHECK-NEXT: ret double [[FOO]]36;37 %add1 = fadd double %x, %y, !fpmath !138 %add2 = fadd double %x, %y, !fpmath !039 %foo = fadd double %add1, %add240 ret double %foo41}42 43define double @test4(double %x, double %y) {44; CHECK-LABEL: define double @test4(45; CHECK-SAME: double [[X:%.*]], double [[Y:%.*]]) {46; CHECK-NEXT: [[ADD1:%.*]] = fadd double [[X]], [[Y]], !fpmath [[META1]]47; CHECK-NEXT: [[FOO:%.*]] = fadd double [[ADD1]], [[ADD1]]48; CHECK-NEXT: ret double [[FOO]]49;50 %add1 = fadd double %x, %y, !fpmath !051 %add2 = fadd double %x, %y, !fpmath !152 %foo = fadd double %add1, %add253 ret double %foo54}55 56define double @test5(double %x, double %y) {57; CHECK-LABEL: define double @test5(58; CHECK-SAME: double [[X:%.*]], double [[Y:%.*]]) {59; CHECK-NEXT: [[NEG1:%.*]] = fneg double [[X]], !fpmath [[META1]]60; CHECK-NEXT: [[FOO:%.*]] = fadd double [[NEG1]], [[NEG1]]61; CHECK-NEXT: ret double [[FOO]]62;63 %neg1 = fneg double %x, !fpmath !064 %neg2 = fneg double %x, !fpmath !165 %foo = fadd double %neg1, %neg266 ret double %foo67}68 69!0 = !{ float 5.0 }70!1 = !{ float 2.5 }71;.72; CHECK: [[META0]] = !{float 5.000000e+00}73; CHECK: [[META1]] = !{float 2.500000e+00}74;.75