brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · 6c5dd14 Raw
160 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=instcombine -S | FileCheck %s3target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"4target triple = "x86_64-unknown-linux-gnu"5 6declare void @llvm.assume(i1) #17 8define i32 @test1(i32 %a) #0 {9; CHECK-LABEL: @test1(10; CHECK-NEXT:    [[AND:%.*]] = and i32 [[A:%.*]], 1511; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i32 [[AND]], 512; CHECK-NEXT:    tail call void @llvm.assume(i1 [[CMP]])13; CHECK-NEXT:    ret i32 514;15  %and = and i32 %a, 1516  %cmp = icmp eq i32 %and, 517  tail call void @llvm.assume(i1 %cmp)18  %and1 = and i32 %a, 719  ret i32 %and120}21 22define i32 @test2(i32 %a) #0 {23; CHECK-LABEL: @test2(24; CHECK-NEXT:    [[AND:%.*]] = and i32 [[A:%.*]], 1525; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i32 [[AND]], 1026; CHECK-NEXT:    tail call void @llvm.assume(i1 [[CMP]])27; CHECK-NEXT:    ret i32 228;29  %and = and i32 %a, 1530  %nand = xor i32 %and, -131  %cmp = icmp eq i32 %nand, 429496728532  tail call void @llvm.assume(i1 %cmp)33  %and1 = and i32 %a, 734  ret i32 %and135}36 37define i32 @test3(i32 %a) #0 {38; CHECK-LABEL: @test3(39; CHECK-NEXT:    [[TMP1:%.*]] = and i32 [[A:%.*]], 1540; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i32 [[TMP1]], 541; CHECK-NEXT:    tail call void @llvm.assume(i1 [[CMP]])42; CHECK-NEXT:    ret i32 543;44  %v = or i32 %a, 429496728045  %cmp = icmp eq i32 %v, 429496728546  tail call void @llvm.assume(i1 %cmp)47  %and1 = and i32 %a, 748  ret i32 %and149}50 51define i32 @test4(i32 %a) #0 {52; CHECK-LABEL: @test4(53; CHECK-NEXT:    [[TMP1:%.*]] = and i32 [[A:%.*]], 1554; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i32 [[TMP1]], 1055; CHECK-NEXT:    tail call void @llvm.assume(i1 [[CMP]])56; CHECK-NEXT:    ret i32 257;58  %v = or i32 %a, 429496728059  %nv = xor i32 %v, -160  %cmp = icmp eq i32 %nv, 561  tail call void @llvm.assume(i1 %cmp)62  %and1 = and i32 %a, 763  ret i32 %and164}65 66define i32 @test5(i32 %a) #0 {67; CHECK-LABEL: @test5(68; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i32 [[A:%.*]], 469; CHECK-NEXT:    tail call void @llvm.assume(i1 [[CMP]])70; CHECK-NEXT:    ret i32 471;72  %v = xor i32 %a, 173  %cmp = icmp eq i32 %v, 574  tail call void @llvm.assume(i1 %cmp)75  %and1 = and i32 %a, 776  ret i32 %and177}78 79define i32 @test6(i32 %a) #0 {80; CHECK-LABEL: @test6(81; CHECK-NEXT:    [[V_MASK:%.*]] = and i32 [[A:%.*]], 107374182382; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i32 [[V_MASK]], 583; CHECK-NEXT:    tail call void @llvm.assume(i1 [[CMP]])84; CHECK-NEXT:    ret i32 585;86  %v = shl i32 %a, 287  %cmp = icmp eq i32 %v, 2088  tail call void @llvm.assume(i1 %cmp)89  %and1 = and i32 %a, 6390  ret i32 %and191}92 93define i32 @test7(i32 %a) #0 {94; CHECK-LABEL: @test7(95; CHECK-NEXT:    [[V_MASK:%.*]] = and i32 [[A:%.*]], -496; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i32 [[V_MASK]], 2097; CHECK-NEXT:    tail call void @llvm.assume(i1 [[CMP]])98; CHECK-NEXT:    ret i32 2099;100  %v = lshr i32 %a, 2101  %cmp = icmp eq i32 %v, 5102  tail call void @llvm.assume(i1 %cmp)103  %and1 = and i32 %a, 252104  ret i32 %and1105}106 107define i32 @test8(i32 %a) #0 {108; CHECK-LABEL: @test8(109; CHECK-NEXT:    [[V_MASK:%.*]] = and i32 [[A:%.*]], -4110; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i32 [[V_MASK]], 20111; CHECK-NEXT:    tail call void @llvm.assume(i1 [[CMP]])112; CHECK-NEXT:    ret i32 20113;114  %v = lshr i32 %a, 2115  %cmp = icmp eq i32 %v, 5116  tail call void @llvm.assume(i1 %cmp)117  %and1 = and i32 %a, 252118  ret i32 %and1119}120 121define i32 @test9(i32 %a) #0 {122; CHECK-LABEL: @test9(123; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i32 [[A:%.*]], 5124; CHECK-NEXT:    tail call void @llvm.assume(i1 [[CMP]])125; CHECK-NEXT:    ret i32 0126;127  %cmp = icmp sgt i32 %a, 5128  tail call void @llvm.assume(i1 %cmp)129  %and1 = and i32 %a, 2147483648130  ret i32 %and1131}132 133define i32 @test10(i32 %a) #0 {134; CHECK-LABEL: @test10(135; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[A:%.*]], -1136; CHECK-NEXT:    tail call void @llvm.assume(i1 [[CMP]])137; CHECK-NEXT:    ret i32 -2147483648138;139  %cmp = icmp sle i32 %a, -2140  tail call void @llvm.assume(i1 %cmp)141  %and1 = and i32 %a, 2147483648142  ret i32 %and1143}144 145define i32 @test11(i32 %a) #0 {146; CHECK-LABEL: @test11(147; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i32 [[A:%.*]], 257148; CHECK-NEXT:    tail call void @llvm.assume(i1 [[CMP]])149; CHECK-NEXT:    ret i32 0150;151  %cmp = icmp ule i32 %a, 256152  tail call void @llvm.assume(i1 %cmp)153  %and1 = and i32 %a, 3072154  ret i32 %and1155}156 157attributes #0 = { nounwind uwtable }158attributes #1 = { nounwind }159 160