133 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py2; RUN: opt < %s -disable-output "-passes=print<scalar-evolution>" 2>&1 | FileCheck %s3 4source_filename = "input.cpp"5target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"6 7; Function Attrs: nofree8define ptr @FSE_decompress_usingDTable(ptr %arg, i32 %arg1, i32 %arg2, i32 %arg3) local_unnamed_addr #0 {9; CHECK-LABEL: 'FSE_decompress_usingDTable'10; CHECK-NEXT: Classifying expressions for: @FSE_decompress_usingDTable11; CHECK-NEXT: %i = getelementptr inbounds i8, ptr %arg, i32 %arg212; CHECK-NEXT: --> (%arg2 + %arg) U: full-set S: full-set13; CHECK-NEXT: %i4 = sub nsw i32 0, %arg114; CHECK-NEXT: --> (-1 * %arg1) U: full-set S: full-set15; CHECK-NEXT: %i5 = getelementptr inbounds i8, ptr %i, i32 %i416; CHECK-NEXT: --> ((-1 * %arg1) + %arg2 + %arg) U: full-set S: full-set17; CHECK-NEXT: %i7 = select i1 %i6, i32 %arg2, i32 %arg118; CHECK-NEXT: --> ((-1 * (ptrtoint ptr %arg to i32)) + (((-1 * %arg1) + (ptrtoint ptr %arg to i32) + %arg2) umin (ptrtoint ptr %arg to i32)) + %arg1) U: full-set S: full-set19; CHECK-NEXT: %i8 = sub i32 %arg3, %i720; CHECK-NEXT: --> ((-1 * (((-1 * %arg1) + (ptrtoint ptr %arg to i32) + %arg2) umin (ptrtoint ptr %arg to i32))) + (-1 * %arg1) + (ptrtoint ptr %arg to i32) + %arg3) U: full-set S: full-set21; CHECK-NEXT: %i9 = getelementptr inbounds i8, ptr %arg, i32 %i822; CHECK-NEXT: --> ((-1 * (((-1 * %arg1) + (ptrtoint ptr %arg to i32) + %arg2) umin (ptrtoint ptr %arg to i32))) + (-1 * %arg1) + (ptrtoint ptr %arg to i32) + %arg3 + %arg) U: full-set S: full-set23; CHECK-NEXT: Determining loop execution counts for: @FSE_decompress_usingDTable24;25bb:26 %i = getelementptr inbounds i8, ptr %arg, i32 %arg227 %i4 = sub nsw i32 0, %arg128 %i5 = getelementptr inbounds i8, ptr %i, i32 %i429 %i6 = icmp ult ptr %i5, %arg30 %i7 = select i1 %i6, i32 %arg2, i32 %arg131 %i8 = sub i32 %arg3, %i732 %i9 = getelementptr inbounds i8, ptr %arg, i32 %i833 ret ptr %i934}35 36define ptr @test_01(ptr %p) {37; CHECK-LABEL: 'test_01'38; CHECK-NEXT: Classifying expressions for: @test_0139; CHECK-NEXT: %p1 = getelementptr i8, ptr %p, i32 240; CHECK-NEXT: --> (2 + %p) U: full-set S: full-set41; CHECK-NEXT: %p2 = getelementptr i8, ptr %p, i32 142; CHECK-NEXT: --> (1 + %p) U: full-set S: full-set43; CHECK-NEXT: %index = select i1 %cmp, i32 2, i32 144; CHECK-NEXT: --> ((-1 * (ptrtoint ptr %p to i32)) + ((1 + (ptrtoint ptr %p to i32)) umax (2 + (ptrtoint ptr %p to i32)))) U: full-set S: full-set45; CHECK-NEXT: %neg_index = sub i32 0, %index46; CHECK-NEXT: --> ((-1 * ((1 + (ptrtoint ptr %p to i32)) umax (2 + (ptrtoint ptr %p to i32)))) + (ptrtoint ptr %p to i32)) U: full-set S: full-set47; CHECK-NEXT: %gep = getelementptr i8, ptr %p, i32 %neg_index48; CHECK-NEXT: --> ((-1 * ((1 + (ptrtoint ptr %p to i32)) umax (2 + (ptrtoint ptr %p to i32)))) + (ptrtoint ptr %p to i32) + %p) U: full-set S: full-set49; CHECK-NEXT: Determining loop execution counts for: @test_0150;51 %p1 = getelementptr i8, ptr %p, i32 252 %p2 = getelementptr i8, ptr %p, i32 153 %cmp = icmp ugt ptr %p1, %p254 %index = select i1 %cmp, i32 2, i32 155 %neg_index = sub i32 0, %index56 %gep = getelementptr i8, ptr %p, i32 %neg_index57 ret ptr %gep58}59 60define ptr @test_02(ptr %p) {61; CHECK-LABEL: 'test_02'62; CHECK-NEXT: Classifying expressions for: @test_0263; CHECK-NEXT: %p1 = getelementptr i8, ptr %p, i32 264; CHECK-NEXT: --> (2 + %p) U: full-set S: full-set65; CHECK-NEXT: %p2 = getelementptr i8, ptr %p, i32 166; CHECK-NEXT: --> (1 + %p) U: full-set S: full-set67; CHECK-NEXT: %index = select i1 %cmp, i32 2, i32 168; CHECK-NEXT: --> ((-1 * (ptrtoint ptr %p to i32)) + ((1 + (ptrtoint ptr %p to i32)) smax (2 + (ptrtoint ptr %p to i32)))) U: full-set S: full-set69; CHECK-NEXT: %neg_index = sub i32 0, %index70; CHECK-NEXT: --> ((-1 * ((1 + (ptrtoint ptr %p to i32)) smax (2 + (ptrtoint ptr %p to i32)))) + (ptrtoint ptr %p to i32)) U: full-set S: full-set71; CHECK-NEXT: %gep = getelementptr i8, ptr %p, i32 %neg_index72; CHECK-NEXT: --> ((-1 * ((1 + (ptrtoint ptr %p to i32)) smax (2 + (ptrtoint ptr %p to i32)))) + (ptrtoint ptr %p to i32) + %p) U: full-set S: full-set73; CHECK-NEXT: Determining loop execution counts for: @test_0274;75 %p1 = getelementptr i8, ptr %p, i32 276 %p2 = getelementptr i8, ptr %p, i32 177 %cmp = icmp sgt ptr %p1, %p278 %index = select i1 %cmp, i32 2, i32 179 %neg_index = sub i32 0, %index80 %gep = getelementptr i8, ptr %p, i32 %neg_index81 ret ptr %gep82}83 84define ptr @test_03(ptr %p) {85; CHECK-LABEL: 'test_03'86; CHECK-NEXT: Classifying expressions for: @test_0387; CHECK-NEXT: %p1 = getelementptr i8, ptr %p, i32 288; CHECK-NEXT: --> (2 + %p) U: full-set S: full-set89; CHECK-NEXT: %p2 = getelementptr i8, ptr %p, i32 190; CHECK-NEXT: --> (1 + %p) U: full-set S: full-set91; CHECK-NEXT: %index = select i1 %cmp, i32 2, i32 192; CHECK-NEXT: --> ((-1 * (ptrtoint ptr %p to i32)) + ((1 + (ptrtoint ptr %p to i32)) umin (2 + (ptrtoint ptr %p to i32)))) U: full-set S: full-set93; CHECK-NEXT: %neg_index = sub i32 0, %index94; CHECK-NEXT: --> ((-1 * ((1 + (ptrtoint ptr %p to i32)) umin (2 + (ptrtoint ptr %p to i32)))) + (ptrtoint ptr %p to i32)) U: full-set S: full-set95; CHECK-NEXT: %gep = getelementptr i8, ptr %p, i32 %neg_index96; CHECK-NEXT: --> ((-1 * ((1 + (ptrtoint ptr %p to i32)) umin (2 + (ptrtoint ptr %p to i32)))) + (ptrtoint ptr %p to i32) + %p) U: full-set S: full-set97; CHECK-NEXT: Determining loop execution counts for: @test_0398;99 %p1 = getelementptr i8, ptr %p, i32 2100 %p2 = getelementptr i8, ptr %p, i32 1101 %cmp = icmp ult ptr %p1, %p2102 %index = select i1 %cmp, i32 2, i32 1103 %neg_index = sub i32 0, %index104 %gep = getelementptr i8, ptr %p, i32 %neg_index105 ret ptr %gep106}107 108define ptr @test_04(ptr %p) {109; CHECK-LABEL: 'test_04'110; CHECK-NEXT: Classifying expressions for: @test_04111; CHECK-NEXT: %p1 = getelementptr i8, ptr %p, i32 2112; CHECK-NEXT: --> (2 + %p) U: full-set S: full-set113; CHECK-NEXT: %p2 = getelementptr i8, ptr %p, i32 1114; CHECK-NEXT: --> (1 + %p) U: full-set S: full-set115; CHECK-NEXT: %index = select i1 %cmp, i32 2, i32 1116; CHECK-NEXT: --> ((-1 * (ptrtoint ptr %p to i32)) + ((1 + (ptrtoint ptr %p to i32)) smin (2 + (ptrtoint ptr %p to i32)))) U: full-set S: full-set117; CHECK-NEXT: %neg_index = sub i32 0, %index118; CHECK-NEXT: --> ((-1 * ((1 + (ptrtoint ptr %p to i32)) smin (2 + (ptrtoint ptr %p to i32)))) + (ptrtoint ptr %p to i32)) U: full-set S: full-set119; CHECK-NEXT: %gep = getelementptr i8, ptr %p, i32 %neg_index120; CHECK-NEXT: --> ((-1 * ((1 + (ptrtoint ptr %p to i32)) smin (2 + (ptrtoint ptr %p to i32)))) + (ptrtoint ptr %p to i32) + %p) U: full-set S: full-set121; CHECK-NEXT: Determining loop execution counts for: @test_04122;123 %p1 = getelementptr i8, ptr %p, i32 2124 %p2 = getelementptr i8, ptr %p, i32 1125 %cmp = icmp slt ptr %p1, %p2126 %index = select i1 %cmp, i32 2, i32 1127 %neg_index = sub i32 0, %index128 %gep = getelementptr i8, ptr %p, i32 %neg_index129 ret ptr %gep130}131 132attributes #0 = { nofree }133