brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 5ff3aa2 Raw
109 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 i32 @test1(i32 %x, i32 %y) {5; CHECK-LABEL: define i32 @test1(6; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {7; CHECK-NEXT:    [[ADD1:%.*]] = add i32 [[X]], [[Y]]8; CHECK-NEXT:    [[FOO:%.*]] = add i32 [[ADD1]], [[ADD1]]9; CHECK-NEXT:    ret i32 [[FOO]]10;11  %add1 = add nsw i32 %x, %y12  %add2 = add     i32 %x, %y13  %foo = add i32 %add1, %add214  ret i32 %foo15}16 17define i32 @test2(i32 %x, i32 %y) {18; CHECK-LABEL: define i32 @test2(19; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {20; CHECK-NEXT:    [[ADD1:%.*]] = add i32 [[X]], [[Y]]21; CHECK-NEXT:    [[FOO:%.*]] = add i32 [[ADD1]], [[ADD1]]22; CHECK-NEXT:    ret i32 [[FOO]]23;24  %add1 = add nuw i32 %x, %y25  %add2 = add     i32 %x, %y26  %foo = add i32 %add1, %add227  ret i32 %foo28}29 30define i32 @test3(i32 %x, i32 %y) {31; CHECK-LABEL: define i32 @test3(32; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {33; CHECK-NEXT:    [[ADD1:%.*]] = add i32 [[X]], [[Y]]34; CHECK-NEXT:    [[FOO:%.*]] = add i32 [[ADD1]], [[ADD1]]35; CHECK-NEXT:    ret i32 [[FOO]]36;37  %add1 = add nuw nsw i32 %x, %y38  %add2 = add     i32 %x, %y39  %foo = add i32 %add1, %add240  ret i32 %foo41}42 43define i32 @test4(i32 %x, i32 %y) {44; CHECK-LABEL: define i32 @test4(45; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {46; CHECK-NEXT:    [[ADD1:%.*]] = add nsw i32 [[X]], [[Y]]47; CHECK-NEXT:    [[FOO:%.*]] = add i32 [[ADD1]], [[ADD1]]48; CHECK-NEXT:    ret i32 [[FOO]]49;50  %add1 = add nsw i32 %x, %y51  %add2 = add nsw i32 %x, %y52  %foo = add i32 %add1, %add253  ret i32 %foo54}55 56define i32 @test5(i32 %x, i32 %y) {57; CHECK-LABEL: define i32 @test5(58; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {59; CHECK-NEXT:    [[ADD1:%.*]] = add i32 [[X]], [[Y]]60; CHECK-NEXT:    [[FOO:%.*]] = add i32 [[ADD1]], [[ADD1]]61; CHECK-NEXT:    ret i32 [[FOO]]62;63  %add1 = add nuw i32 %x, %y64  %add2 = add nsw i32 %x, %y65  %foo = add i32 %add1, %add266  ret i32 %foo67}68 69define i32 @test6(i32 %x, i32 %y) {70; CHECK-LABEL: define i32 @test6(71; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {72; CHECK-NEXT:    [[ADD1:%.*]] = add nsw i32 [[X]], [[Y]]73; CHECK-NEXT:    [[FOO:%.*]] = add i32 [[ADD1]], [[ADD1]]74; CHECK-NEXT:    ret i32 [[FOO]]75;76  %add1 = add nuw nsw i32 %x, %y77  %add2 = add nsw i32 %x, %y78  %foo = add i32 %add1, %add279  ret i32 %foo80}81 82define i32 @test7(i32 %x, i32 %y) {83; CHECK-LABEL: define i32 @test7(84; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {85; CHECK-NEXT:    [[ADD1:%.*]] = add i32 [[X]], [[Y]]86; CHECK-NEXT:    [[FOO:%.*]] = add i32 [[ADD1]], [[ADD1]]87; CHECK-NEXT:    ret i32 [[FOO]]88;89  %add1 = add i32 %x, %y, !what_is_this !{}90  %add2 = add i32 %x, %y91  %foo = add i32 %add1, %add292  ret i32 %foo93}94 95declare void @mumble(i2, i2)96 97define void @test8(i2 %x) {98; CHECK-LABEL: define void @test8(99; CHECK-SAME: i2 [[X:%.*]]) {100; CHECK-NEXT:    [[ASHR0:%.*]] = ashr i2 [[X]], 1101; CHECK-NEXT:    call void @mumble(i2 [[ASHR0]], i2 [[ASHR0]])102; CHECK-NEXT:    ret void103;104  %ashr0 = ashr exact i2 %x, 1105  %ashr1 = ashr i2 %x, 1106  call void @mumble(i2 %ashr0, i2 %ashr1)107  ret void108}109