brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · 5beb0c7 Raw
110 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=instcombine -S | FileCheck %s3 4define i32 @computeNumSignBits_add1(i32 %in) {5; CHECK-LABEL: @computeNumSignBits_add1(6; CHECK-NEXT:    [[ADD:%.*]] = add i32 [[IN:%.*]], 17; CHECK-NEXT:    [[COND:%.*]] = icmp ult i32 [[ADD]], 438; CHECK-NEXT:    call void @llvm.assume(i1 [[COND]])9; CHECK-NEXT:    [[SH:%.*]] = shl nuw nsw i32 [[ADD]], 310; CHECK-NEXT:    ret i32 [[SH]]11;12  %add = add i32 %in, 113  %cond = icmp ule i32 %add, 4214  call void @llvm.assume(i1 %cond)15  %sh = shl i32 %add, 316  ret i32 %sh17}18 19define i32 @computeNumSignBits_add2(i32 %in1, i32 %in2) {20; CHECK-LABEL: @computeNumSignBits_add2(21; CHECK-NEXT:    [[ADD:%.*]] = add i32 [[IN1:%.*]], [[IN2:%.*]]22; CHECK-NEXT:    [[COND:%.*]] = icmp ult i32 [[ADD]], 4323; CHECK-NEXT:    call void @llvm.assume(i1 [[COND]])24; CHECK-NEXT:    [[SH:%.*]] = shl nuw nsw i32 [[ADD]], 325; CHECK-NEXT:    ret i32 [[SH]]26;27  %add = add i32 %in1, %in228  %cond = icmp ule i32 %add, 4229  call void @llvm.assume(i1 %cond)30  %sh = shl i32 %add, 331  ret i32 %sh32}33 34define i32 @computeNumSignBits_sub1(i32 %in) {35; CHECK-LABEL: @computeNumSignBits_sub1(36; CHECK-NEXT:    [[SUB:%.*]] = sub i32 1, [[IN:%.*]]37; CHECK-NEXT:    [[COND:%.*]] = icmp ult i32 [[SUB]], 4338; CHECK-NEXT:    call void @llvm.assume(i1 [[COND]])39; CHECK-NEXT:    [[SH:%.*]] = shl nuw nsw i32 [[SUB]], 340; CHECK-NEXT:    ret i32 [[SH]]41;42  %sub = sub i32 1, %in43  %cond = icmp ule i32 %sub, 4244  call void @llvm.assume(i1 %cond)45  %sh = shl i32 %sub, 346  ret i32 %sh47}48 49define i32 @computeNumSignBits_sub2(i32 %in) {50; CHECK-LABEL: @computeNumSignBits_sub2(51; CHECK-NEXT:    [[SUB:%.*]] = add nsw i32 [[IN:%.*]], -152; CHECK-NEXT:    [[COND:%.*]] = icmp ult i32 [[SUB]], 4353; CHECK-NEXT:    call void @llvm.assume(i1 [[COND]])54; CHECK-NEXT:    [[SH:%.*]] = shl nuw nsw i32 [[SUB]], 355; CHECK-NEXT:    ret i32 [[SH]]56;57  %sub = sub i32 %in, 158  %cond = icmp ule i32 %sub, 4259  call void @llvm.assume(i1 %cond)60  %sh = shl i32 %sub, 361  ret i32 %sh62}63 64define i32 @computeNumSignBits_sub3(i32 %in1, i32 %in2) {65; CHECK-LABEL: @computeNumSignBits_sub3(66; CHECK-NEXT:    [[SUB:%.*]] = sub i32 [[IN1:%.*]], [[IN2:%.*]]67; CHECK-NEXT:    [[COND:%.*]] = icmp ult i32 [[SUB]], 4368; CHECK-NEXT:    call void @llvm.assume(i1 [[COND]])69; CHECK-NEXT:    [[SH:%.*]] = shl nuw nsw i32 [[SUB]], 370; CHECK-NEXT:    ret i32 [[SH]]71;72  %sub = sub i32 %in1, %in273  %cond = icmp ule i32 %sub, 4274  call void @llvm.assume(i1 %cond)75  %sh = shl i32 %sub, 376  ret i32 %sh77}78 79define i32 @computeNumSignBits_mul(i32 %in1, i32 %in2) {80; CHECK-LABEL: @computeNumSignBits_mul(81; CHECK-NEXT:    [[MUL:%.*]] = mul i32 [[IN1:%.*]], [[IN2:%.*]]82; CHECK-NEXT:    [[COND:%.*]] = icmp ult i32 [[MUL]], 4383; CHECK-NEXT:    call void @llvm.assume(i1 [[COND]])84; CHECK-NEXT:    [[SH:%.*]] = shl nuw nsw i32 [[MUL]], 385; CHECK-NEXT:    ret i32 [[SH]]86;87  %mul = mul i32 %in1, %in288  %cond = icmp ule i32 %mul, 4289  call void @llvm.assume(i1 %cond)90  %sh = shl i32 %mul, 391  ret i32 %sh92}93 94define i32 @computeNumSignBits_select(i32 %in, i1 %s) {95; CHECK-LABEL: @computeNumSignBits_select(96; CHECK-NEXT:    [[SEL:%.*]] = select i1 [[S:%.*]], i32 [[IN:%.*]], i32 197; CHECK-NEXT:    [[COND:%.*]] = icmp ult i32 [[SEL]], 4398; CHECK-NEXT:    call void @llvm.assume(i1 [[COND]])99; CHECK-NEXT:    [[SH:%.*]] = shl nuw nsw i32 [[SEL]], 3100; CHECK-NEXT:    ret i32 [[SH]]101;102  %sel = select i1 %s, i32 %in, i32 1103  %cond = icmp ule i32 %sel, 42104  call void @llvm.assume(i1 %cond)105  %sh = shl i32 %sel, 3106  ret i32 %sh107}108 109declare void @llvm.assume(i1)110