49 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes=instcombine < %s | FileCheck %s3 4; (X | C) | Y --> (X | Y) | C5 6define i32 @test1(i32 %x, i32 %y) {7; CHECK-LABEL: @test1(8; CHECK-NEXT: [[INNER:%.*]] = or disjoint i32 [[X:%.*]], [[Y:%.*]]9; CHECK-NEXT: [[OUTER:%.*]] = or disjoint i32 [[INNER]], 510; CHECK-NEXT: ret i32 [[OUTER]]11;12 %inner = or disjoint i32 %x, 513 %outer = or disjoint i32 %inner, %y14 ret i32 %outer15}16 17define i32 @test2(i32 %x, i32 %y) {18; CHECK-LABEL: @test2(19; CHECK-NEXT: [[INNER:%.*]] = or disjoint i32 [[X:%.*]], [[Y:%.*]]20; CHECK-NEXT: [[OUTER:%.*]] = or i32 [[INNER]], 521; CHECK-NEXT: ret i32 [[OUTER]]22;23 %inner = or i32 %x, 524 %outer = or disjoint i32 %inner, %y25 ret i32 %outer26}27 28define i32 @test3(i32 %x, i32 %y) {29; CHECK-LABEL: @test3(30; CHECK-NEXT: [[INNER:%.*]] = or i32 [[X:%.*]], [[Y:%.*]]31; CHECK-NEXT: [[OUTER:%.*]] = or i32 [[INNER]], 532; CHECK-NEXT: ret i32 [[OUTER]]33;34 %inner = or disjoint i32 %x, 535 %outer = or i32 %inner, %y36 ret i32 %outer37}38 39define i32 @test4(i32 %x, i32 %y) {40; CHECK-LABEL: @test4(41; CHECK-NEXT: [[INNER:%.*]] = or i32 [[X:%.*]], [[Y:%.*]]42; CHECK-NEXT: [[OUTER:%.*]] = or i32 [[INNER]], 543; CHECK-NEXT: ret i32 [[OUTER]]44;45 %inner = or i32 %x, 546 %outer = or i32 %inner, %y47 ret i32 %outer48}49