brintos

brintos / llvm-project-archived public Read only

0
0
Text · 27.3 KiB · d92056b Raw
389 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py2; RUN: opt < %s --data-layout="p:64:64:64:64" -S -disable-output "-passes=print<scalar-evolution>" 2>&1 | FileCheck --check-prefixes=PTR64_IDX64 %s3; RUN: opt < %s --data-layout="p:64:64:64:32" -S -disable-output "-passes=print<scalar-evolution>" 2>&1 | FileCheck --check-prefixes=PTR64_IDX32 %s4; RUN: opt < %s --data-layout="p:16:16:16:16" -S -disable-output "-passes=print<scalar-evolution>" 2>&1 | FileCheck --check-prefixes=PTR16_IDX16 %s5 6@global = external hidden global [0 x i8]7 8declare void @use16(i16)9 10define hidden ptr @trunc_ptr_to_i64(ptr %arg, ptr %arg10) {11; PTR64_IDX64-LABEL: 'trunc_ptr_to_i64'12; PTR64_IDX64-NEXT:  Classifying expressions for: @trunc_ptr_to_i6413; PTR64_IDX64-NEXT:    %tmp = phi i32 [ 0, %bb ], [ %tmp18, %bb17 ]14; PTR64_IDX64-NEXT:    --> {0,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable }15; PTR64_IDX64-NEXT:    %tmp12 = getelementptr i8, ptr %arg, i64 ptrtoint (ptr @global to i64)16; PTR64_IDX64-NEXT:    --> ((ptrtoint ptr @global to i64) + %arg) U: full-set S: full-set Exits: ((ptrtoint ptr @global to i64) + %arg) LoopDispositions: { %bb11: Invariant }17; PTR64_IDX64-NEXT:    %tmp13 = bitcast ptr %tmp12 to ptr18; PTR64_IDX64-NEXT:    --> ((ptrtoint ptr @global to i64) + %arg) U: full-set S: full-set Exits: ((ptrtoint ptr @global to i64) + %arg) LoopDispositions: { %bb11: Invariant }19; PTR64_IDX64-NEXT:    %tmp14 = load i32, ptr %tmp13, align 420; PTR64_IDX64-NEXT:    --> %tmp14 U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb11: Variant }21; PTR64_IDX64-NEXT:    %tmp18 = add i32 %tmp, 222; PTR64_IDX64-NEXT:    --> {2,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable }23; PTR64_IDX64-NEXT:  Determining loop execution counts for: @trunc_ptr_to_i6424; PTR64_IDX64-NEXT:  Loop %bb11: Unpredictable backedge-taken count.25; PTR64_IDX64-NEXT:  Loop %bb11: Unpredictable constant max backedge-taken count.26; PTR64_IDX64-NEXT:  Loop %bb11: Unpredictable symbolic max backedge-taken count.27;28; PTR64_IDX32-LABEL: 'trunc_ptr_to_i64'29; PTR64_IDX32-NEXT:  Classifying expressions for: @trunc_ptr_to_i6430; PTR64_IDX32-NEXT:    %tmp = phi i32 [ 0, %bb ], [ %tmp18, %bb17 ]31; PTR64_IDX32-NEXT:    --> {0,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable }32; PTR64_IDX32-NEXT:    %tmp12 = getelementptr i8, ptr %arg, i64 ptrtoint (ptr @global to i64)33; PTR64_IDX32-NEXT:    --> ((trunc i64 ptrtoint (ptr @global to i64) to i32) + %arg) U: full-set S: full-set Exits: ((trunc i64 ptrtoint (ptr @global to i64) to i32) + %arg) LoopDispositions: { %bb11: Invariant }34; PTR64_IDX32-NEXT:    %tmp13 = bitcast ptr %tmp12 to ptr35; PTR64_IDX32-NEXT:    --> ((trunc i64 ptrtoint (ptr @global to i64) to i32) + %arg) U: full-set S: full-set Exits: ((trunc i64 ptrtoint (ptr @global to i64) to i32) + %arg) LoopDispositions: { %bb11: Invariant }36; PTR64_IDX32-NEXT:    %tmp14 = load i32, ptr %tmp13, align 437; PTR64_IDX32-NEXT:    --> %tmp14 U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb11: Variant }38; PTR64_IDX32-NEXT:    %tmp18 = add i32 %tmp, 239; PTR64_IDX32-NEXT:    --> {2,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable }40; PTR64_IDX32-NEXT:  Determining loop execution counts for: @trunc_ptr_to_i6441; PTR64_IDX32-NEXT:  Loop %bb11: Unpredictable backedge-taken count.42; PTR64_IDX32-NEXT:  Loop %bb11: Unpredictable constant max backedge-taken count.43; PTR64_IDX32-NEXT:  Loop %bb11: Unpredictable symbolic max backedge-taken count.44;45; PTR16_IDX16-LABEL: 'trunc_ptr_to_i64'46; PTR16_IDX16-NEXT:  Classifying expressions for: @trunc_ptr_to_i6447; PTR16_IDX16-NEXT:    %tmp = phi i32 [ 0, %bb ], [ %tmp18, %bb17 ]48; PTR16_IDX16-NEXT:    --> {0,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable }49; PTR16_IDX16-NEXT:    %tmp12 = getelementptr i8, ptr %arg, i64 ptrtoint (ptr @global to i64)50; PTR16_IDX16-NEXT:    --> ((ptrtoint ptr @global to i16) + %arg) U: full-set S: full-set Exits: ((ptrtoint ptr @global to i16) + %arg) LoopDispositions: { %bb11: Invariant }51; PTR16_IDX16-NEXT:    %tmp13 = bitcast ptr %tmp12 to ptr52; PTR16_IDX16-NEXT:    --> ((ptrtoint ptr @global to i16) + %arg) U: full-set S: full-set Exits: ((ptrtoint ptr @global to i16) + %arg) LoopDispositions: { %bb11: Invariant }53; PTR16_IDX16-NEXT:    %tmp14 = load i32, ptr %tmp13, align 454; PTR16_IDX16-NEXT:    --> %tmp14 U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb11: Variant }55; PTR16_IDX16-NEXT:    %tmp18 = add i32 %tmp, 256; PTR16_IDX16-NEXT:    --> {2,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable }57; PTR16_IDX16-NEXT:  Determining loop execution counts for: @trunc_ptr_to_i6458; PTR16_IDX16-NEXT:  Loop %bb11: Unpredictable backedge-taken count.59; PTR16_IDX16-NEXT:  Loop %bb11: Unpredictable constant max backedge-taken count.60; PTR16_IDX16-NEXT:  Loop %bb11: Unpredictable symbolic max backedge-taken count.61;62bb:63  br label %bb1164 65bb11:                                             ; preds = %bb17, %bb66  %tmp = phi i32 [ 0, %bb ], [ %tmp18, %bb17 ]67  %tmp12 = getelementptr i8, ptr %arg, i64 ptrtoint (ptr @global to i64)68  %tmp13 = bitcast ptr %tmp12 to ptr69  %tmp14 = load i32, ptr %tmp13, align 470  %tmp15 = icmp eq i32 %tmp14, 671  br i1 %tmp15, label %bb16, label %bb1772 73bb16:                                             ; preds = %bb1174  ret ptr %arg1075 76bb17:                                             ; preds = %bb1177  %tmp18 = add i32 %tmp, 278  br label %bb1179}80define hidden ptr @trunc_ptr_to_i32(ptr %arg, ptr %arg10) {81; PTR64_IDX64-LABEL: 'trunc_ptr_to_i32'82; PTR64_IDX64-NEXT:  Classifying expressions for: @trunc_ptr_to_i3283; PTR64_IDX64-NEXT:    %tmp = phi i32 [ 0, %bb ], [ %tmp18, %bb17 ]84; PTR64_IDX64-NEXT:    --> {0,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable }85; PTR64_IDX64-NEXT:    %tmp12 = getelementptr i8, ptr %arg, i32 ptrtoint (ptr @global to i32)86; PTR64_IDX64-NEXT:    --> ((sext i32 (trunc i64 (ptrtoint ptr @global to i64) to i32) to i64) + %arg) U: full-set S: full-set Exits: ((sext i32 (trunc i64 (ptrtoint ptr @global to i64) to i32) to i64) + %arg) LoopDispositions: { %bb11: Invariant }87; PTR64_IDX64-NEXT:    %tmp13 = bitcast ptr %tmp12 to ptr88; PTR64_IDX64-NEXT:    --> ((sext i32 (trunc i64 (ptrtoint ptr @global to i64) to i32) to i64) + %arg) U: full-set S: full-set Exits: ((sext i32 (trunc i64 (ptrtoint ptr @global to i64) to i32) to i64) + %arg) LoopDispositions: { %bb11: Invariant }89; PTR64_IDX64-NEXT:    %tmp14 = load i32, ptr %tmp13, align 490; PTR64_IDX64-NEXT:    --> %tmp14 U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb11: Variant }91; PTR64_IDX64-NEXT:    %tmp18 = add i32 %tmp, 292; PTR64_IDX64-NEXT:    --> {2,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable }93; PTR64_IDX64-NEXT:  Determining loop execution counts for: @trunc_ptr_to_i3294; PTR64_IDX64-NEXT:  Loop %bb11: Unpredictable backedge-taken count.95; PTR64_IDX64-NEXT:  Loop %bb11: Unpredictable constant max backedge-taken count.96; PTR64_IDX64-NEXT:  Loop %bb11: Unpredictable symbolic max backedge-taken count.97;98; PTR64_IDX32-LABEL: 'trunc_ptr_to_i32'99; PTR64_IDX32-NEXT:  Classifying expressions for: @trunc_ptr_to_i32100; PTR64_IDX32-NEXT:    %tmp = phi i32 [ 0, %bb ], [ %tmp18, %bb17 ]101; PTR64_IDX32-NEXT:    --> {0,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable }102; PTR64_IDX32-NEXT:    %tmp12 = getelementptr i8, ptr %arg, i32 ptrtoint (ptr @global to i32)103; PTR64_IDX32-NEXT:    --> (ptrtoint (ptr @global to i32) + %arg) U: full-set S: full-set Exits: (ptrtoint (ptr @global to i32) + %arg) LoopDispositions: { %bb11: Invariant }104; PTR64_IDX32-NEXT:    %tmp13 = bitcast ptr %tmp12 to ptr105; PTR64_IDX32-NEXT:    --> (ptrtoint (ptr @global to i32) + %arg) U: full-set S: full-set Exits: (ptrtoint (ptr @global to i32) + %arg) LoopDispositions: { %bb11: Invariant }106; PTR64_IDX32-NEXT:    %tmp14 = load i32, ptr %tmp13, align 4107; PTR64_IDX32-NEXT:    --> %tmp14 U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb11: Variant }108; PTR64_IDX32-NEXT:    %tmp18 = add i32 %tmp, 2109; PTR64_IDX32-NEXT:    --> {2,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable }110; PTR64_IDX32-NEXT:  Determining loop execution counts for: @trunc_ptr_to_i32111; PTR64_IDX32-NEXT:  Loop %bb11: Unpredictable backedge-taken count.112; PTR64_IDX32-NEXT:  Loop %bb11: Unpredictable constant max backedge-taken count.113; PTR64_IDX32-NEXT:  Loop %bb11: Unpredictable symbolic max backedge-taken count.114;115; PTR16_IDX16-LABEL: 'trunc_ptr_to_i32'116; PTR16_IDX16-NEXT:  Classifying expressions for: @trunc_ptr_to_i32117; PTR16_IDX16-NEXT:    %tmp = phi i32 [ 0, %bb ], [ %tmp18, %bb17 ]118; PTR16_IDX16-NEXT:    --> {0,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable }119; PTR16_IDX16-NEXT:    %tmp12 = getelementptr i8, ptr %arg, i32 ptrtoint (ptr @global to i32)120; PTR16_IDX16-NEXT:    --> ((ptrtoint ptr @global to i16) + %arg) U: full-set S: full-set Exits: ((ptrtoint ptr @global to i16) + %arg) LoopDispositions: { %bb11: Invariant }121; PTR16_IDX16-NEXT:    %tmp13 = bitcast ptr %tmp12 to ptr122; PTR16_IDX16-NEXT:    --> ((ptrtoint ptr @global to i16) + %arg) U: full-set S: full-set Exits: ((ptrtoint ptr @global to i16) + %arg) LoopDispositions: { %bb11: Invariant }123; PTR16_IDX16-NEXT:    %tmp14 = load i32, ptr %tmp13, align 4124; PTR16_IDX16-NEXT:    --> %tmp14 U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb11: Variant }125; PTR16_IDX16-NEXT:    %tmp18 = add i32 %tmp, 2126; PTR16_IDX16-NEXT:    --> {2,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable }127; PTR16_IDX16-NEXT:  Determining loop execution counts for: @trunc_ptr_to_i32128; PTR16_IDX16-NEXT:  Loop %bb11: Unpredictable backedge-taken count.129; PTR16_IDX16-NEXT:  Loop %bb11: Unpredictable constant max backedge-taken count.130; PTR16_IDX16-NEXT:  Loop %bb11: Unpredictable symbolic max backedge-taken count.131;132bb:133  br label %bb11134 135bb11:                                             ; preds = %bb17, %bb136  %tmp = phi i32 [ 0, %bb ], [ %tmp18, %bb17 ]137  %tmp12 = getelementptr i8, ptr %arg, i32 ptrtoint (ptr @global to i32)138  %tmp13 = bitcast ptr %tmp12 to ptr139  %tmp14 = load i32, ptr %tmp13, align 4140  %tmp15 = icmp eq i32 %tmp14, 6141  br i1 %tmp15, label %bb16, label %bb17142 143bb16:                                             ; preds = %bb11144  ret ptr %arg10145 146bb17:                                             ; preds = %bb11147  %tmp18 = add i32 %tmp, 2148  br label %bb11149}150define hidden ptr @trunc_ptr_to_i128(ptr %arg, ptr %arg10) {151; PTR64_IDX64-LABEL: 'trunc_ptr_to_i128'152; PTR64_IDX64-NEXT:  Classifying expressions for: @trunc_ptr_to_i128153; PTR64_IDX64-NEXT:    %tmp = phi i32 [ 0, %bb ], [ %tmp18, %bb17 ]154; PTR64_IDX64-NEXT:    --> {0,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable }155; PTR64_IDX64-NEXT:    %tmp12 = getelementptr i8, ptr %arg, i128 ptrtoint (ptr @global to i128)156; PTR64_IDX64-NEXT:    --> ((ptrtoint ptr @global to i64) + %arg) U: full-set S: full-set Exits: ((ptrtoint ptr @global to i64) + %arg) LoopDispositions: { %bb11: Invariant }157; PTR64_IDX64-NEXT:    %tmp13 = bitcast ptr %tmp12 to ptr158; PTR64_IDX64-NEXT:    --> ((ptrtoint ptr @global to i64) + %arg) U: full-set S: full-set Exits: ((ptrtoint ptr @global to i64) + %arg) LoopDispositions: { %bb11: Invariant }159; PTR64_IDX64-NEXT:    %tmp14 = load i32, ptr %tmp13, align 4160; PTR64_IDX64-NEXT:    --> %tmp14 U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb11: Variant }161; PTR64_IDX64-NEXT:    %tmp18 = add i32 %tmp, 2162; PTR64_IDX64-NEXT:    --> {2,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable }163; PTR64_IDX64-NEXT:  Determining loop execution counts for: @trunc_ptr_to_i128164; PTR64_IDX64-NEXT:  Loop %bb11: Unpredictable backedge-taken count.165; PTR64_IDX64-NEXT:  Loop %bb11: Unpredictable constant max backedge-taken count.166; PTR64_IDX64-NEXT:  Loop %bb11: Unpredictable symbolic max backedge-taken count.167;168; PTR64_IDX32-LABEL: 'trunc_ptr_to_i128'169; PTR64_IDX32-NEXT:  Classifying expressions for: @trunc_ptr_to_i128170; PTR64_IDX32-NEXT:    %tmp = phi i32 [ 0, %bb ], [ %tmp18, %bb17 ]171; PTR64_IDX32-NEXT:    --> {0,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable }172; PTR64_IDX32-NEXT:    %tmp12 = getelementptr i8, ptr %arg, i128 ptrtoint (ptr @global to i128)173; PTR64_IDX32-NEXT:    --> ((trunc i128 ptrtoint (ptr @global to i128) to i32) + %arg) U: full-set S: full-set Exits: ((trunc i128 ptrtoint (ptr @global to i128) to i32) + %arg) LoopDispositions: { %bb11: Invariant }174; PTR64_IDX32-NEXT:    %tmp13 = bitcast ptr %tmp12 to ptr175; PTR64_IDX32-NEXT:    --> ((trunc i128 ptrtoint (ptr @global to i128) to i32) + %arg) U: full-set S: full-set Exits: ((trunc i128 ptrtoint (ptr @global to i128) to i32) + %arg) LoopDispositions: { %bb11: Invariant }176; PTR64_IDX32-NEXT:    %tmp14 = load i32, ptr %tmp13, align 4177; PTR64_IDX32-NEXT:    --> %tmp14 U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb11: Variant }178; PTR64_IDX32-NEXT:    %tmp18 = add i32 %tmp, 2179; PTR64_IDX32-NEXT:    --> {2,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable }180; PTR64_IDX32-NEXT:  Determining loop execution counts for: @trunc_ptr_to_i128181; PTR64_IDX32-NEXT:  Loop %bb11: Unpredictable backedge-taken count.182; PTR64_IDX32-NEXT:  Loop %bb11: Unpredictable constant max backedge-taken count.183; PTR64_IDX32-NEXT:  Loop %bb11: Unpredictable symbolic max backedge-taken count.184;185; PTR16_IDX16-LABEL: 'trunc_ptr_to_i128'186; PTR16_IDX16-NEXT:  Classifying expressions for: @trunc_ptr_to_i128187; PTR16_IDX16-NEXT:    %tmp = phi i32 [ 0, %bb ], [ %tmp18, %bb17 ]188; PTR16_IDX16-NEXT:    --> {0,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable }189; PTR16_IDX16-NEXT:    %tmp12 = getelementptr i8, ptr %arg, i128 ptrtoint (ptr @global to i128)190; PTR16_IDX16-NEXT:    --> ((ptrtoint ptr @global to i16) + %arg) U: full-set S: full-set Exits: ((ptrtoint ptr @global to i16) + %arg) LoopDispositions: { %bb11: Invariant }191; PTR16_IDX16-NEXT:    %tmp13 = bitcast ptr %tmp12 to ptr192; PTR16_IDX16-NEXT:    --> ((ptrtoint ptr @global to i16) + %arg) U: full-set S: full-set Exits: ((ptrtoint ptr @global to i16) + %arg) LoopDispositions: { %bb11: Invariant }193; PTR16_IDX16-NEXT:    %tmp14 = load i32, ptr %tmp13, align 4194; PTR16_IDX16-NEXT:    --> %tmp14 U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb11: Variant }195; PTR16_IDX16-NEXT:    %tmp18 = add i32 %tmp, 2196; PTR16_IDX16-NEXT:    --> {2,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable }197; PTR16_IDX16-NEXT:  Determining loop execution counts for: @trunc_ptr_to_i128198; PTR16_IDX16-NEXT:  Loop %bb11: Unpredictable backedge-taken count.199; PTR16_IDX16-NEXT:  Loop %bb11: Unpredictable constant max backedge-taken count.200; PTR16_IDX16-NEXT:  Loop %bb11: Unpredictable symbolic max backedge-taken count.201;202bb:203  br label %bb11204 205bb11:                                             ; preds = %bb17, %bb206  %tmp = phi i32 [ 0, %bb ], [ %tmp18, %bb17 ]207  %tmp12 = getelementptr i8, ptr %arg, i128 ptrtoint (ptr @global to i128)208  %tmp13 = bitcast ptr %tmp12 to ptr209  %tmp14 = load i32, ptr %tmp13, align 4210  %tmp15 = icmp eq i32 %tmp14, 6211  br i1 %tmp15, label %bb16, label %bb17212 213bb16:                                             ; preds = %bb11214  ret ptr %arg10215 216bb17:                                             ; preds = %bb11217  %tmp18 = add i32 %tmp, 2218  br label %bb11219}220 221define void @zext_ptr_to_i32(i32 %arg, i32 %arg6) {222; PTR64_IDX64-LABEL: 'zext_ptr_to_i32'223; PTR64_IDX64-NEXT:  Classifying expressions for: @zext_ptr_to_i32224; PTR64_IDX64-NEXT:    %tmp = sub i32 %arg, ptrtoint (ptr @global to i32)225; PTR64_IDX64-NEXT:    --> ((-1 * (trunc i64 (ptrtoint ptr @global to i64) to i32)) + %arg) U: full-set S: full-set Exits: ((-1 * (trunc i64 (ptrtoint ptr @global to i64) to i32)) + %arg) LoopDispositions: { %bb7: Invariant }226; PTR64_IDX64-NEXT:    %tmp9 = select i1 %tmp8, i16 0, i16 1227; PTR64_IDX64-NEXT:    --> %tmp9 U: [0,2) S: [0,2) Exits: <<Unknown>> LoopDispositions: { %bb7: Variant }228; PTR64_IDX64-NEXT:  Determining loop execution counts for: @zext_ptr_to_i32229; PTR64_IDX64-NEXT:  Loop %bb7: Unpredictable backedge-taken count.230; PTR64_IDX64-NEXT:  Loop %bb7: Unpredictable constant max backedge-taken count.231; PTR64_IDX64-NEXT:  Loop %bb7: Unpredictable symbolic max backedge-taken count.232;233; PTR64_IDX32-LABEL: 'zext_ptr_to_i32'234; PTR64_IDX32-NEXT:  Classifying expressions for: @zext_ptr_to_i32235; PTR64_IDX32-NEXT:    %tmp = sub i32 %arg, ptrtoint (ptr @global to i32)236; PTR64_IDX32-NEXT:    --> ((-1 * ptrtoint (ptr @global to i32)) + %arg) U: full-set S: full-set Exits: ((-1 * ptrtoint (ptr @global to i32)) + %arg) LoopDispositions: { %bb7: Invariant }237; PTR64_IDX32-NEXT:    %tmp9 = select i1 %tmp8, i16 0, i16 1238; PTR64_IDX32-NEXT:    --> %tmp9 U: [0,2) S: [0,2) Exits: <<Unknown>> LoopDispositions: { %bb7: Variant }239; PTR64_IDX32-NEXT:  Determining loop execution counts for: @zext_ptr_to_i32240; PTR64_IDX32-NEXT:  Loop %bb7: Unpredictable backedge-taken count.241; PTR64_IDX32-NEXT:  Loop %bb7: Unpredictable constant max backedge-taken count.242; PTR64_IDX32-NEXT:  Loop %bb7: Unpredictable symbolic max backedge-taken count.243;244; PTR16_IDX16-LABEL: 'zext_ptr_to_i32'245; PTR16_IDX16-NEXT:  Classifying expressions for: @zext_ptr_to_i32246; PTR16_IDX16-NEXT:    %tmp = sub i32 %arg, ptrtoint (ptr @global to i32)247; PTR16_IDX16-NEXT:    --> ((-1 * (zext i16 (ptrtoint ptr @global to i16) to i32))<nsw> + %arg) U: full-set S: full-set Exits: ((-1 * (zext i16 (ptrtoint ptr @global to i16) to i32))<nsw> + %arg) LoopDispositions: { %bb7: Invariant }248; PTR16_IDX16-NEXT:    %tmp9 = select i1 %tmp8, i16 0, i16 1249; PTR16_IDX16-NEXT:    --> %tmp9 U: [0,2) S: [0,2) Exits: <<Unknown>> LoopDispositions: { %bb7: Variant }250; PTR16_IDX16-NEXT:  Determining loop execution counts for: @zext_ptr_to_i32251; PTR16_IDX16-NEXT:  Loop %bb7: Unpredictable backedge-taken count.252; PTR16_IDX16-NEXT:  Loop %bb7: Unpredictable constant max backedge-taken count.253; PTR16_IDX16-NEXT:  Loop %bb7: Unpredictable symbolic max backedge-taken count.254;255bb:256  br label %bb7257 258bb7:                                              ; preds = %bb7, %bb259  %tmp = sub i32 %arg, ptrtoint (ptr @global to i32)260  %tmp8 = icmp eq i32 %tmp, %arg6261  %tmp9 = select i1 %tmp8, i16 0, i16 1262  call void @use16(i16 %tmp9)263  br i1 %tmp8, label %bb7, label %bb10264 265bb10:                                             ; preds = %bb7266  ret void267}268 269define void @sext_to_i32(i32 %arg, i32 %arg6) {270; PTR64_IDX64-LABEL: 'sext_to_i32'271; PTR64_IDX64-NEXT:  Classifying expressions for: @sext_to_i32272; PTR64_IDX64-NEXT:    %ext = sext i16 ptrtoint (ptr @global to i16) to i32273; PTR64_IDX64-NEXT:    --> (sext i16 (trunc i64 (ptrtoint ptr @global to i64) to i16) to i32) U: [-32768,32768) S: [-32768,32768) Exits: (sext i16 (trunc i64 (ptrtoint ptr @global to i64) to i16) to i32) LoopDispositions: { %bb7: Invariant }274; PTR64_IDX64-NEXT:    %tmp = sub i32 %arg, %ext275; PTR64_IDX64-NEXT:    --> ((-1 * (sext i16 (trunc i64 (ptrtoint ptr @global to i64) to i16) to i32))<nsw> + %arg) U: full-set S: full-set Exits: ((-1 * (sext i16 (trunc i64 (ptrtoint ptr @global to i64) to i16) to i32))<nsw> + %arg) LoopDispositions: { %bb7: Invariant }276; PTR64_IDX64-NEXT:    %tmp9 = select i1 %tmp8, i16 0, i16 1277; PTR64_IDX64-NEXT:    --> %tmp9 U: [0,2) S: [0,2) Exits: <<Unknown>> LoopDispositions: { %bb7: Variant }278; PTR64_IDX64-NEXT:  Determining loop execution counts for: @sext_to_i32279; PTR64_IDX64-NEXT:  Loop %bb7: Unpredictable backedge-taken count.280; PTR64_IDX64-NEXT:  Loop %bb7: Unpredictable constant max backedge-taken count.281; PTR64_IDX64-NEXT:  Loop %bb7: Unpredictable symbolic max backedge-taken count.282;283; PTR64_IDX32-LABEL: 'sext_to_i32'284; PTR64_IDX32-NEXT:  Classifying expressions for: @sext_to_i32285; PTR64_IDX32-NEXT:    %ext = sext i16 ptrtoint (ptr @global to i16) to i32286; PTR64_IDX32-NEXT:    --> (sext i16 ptrtoint (ptr @global to i16) to i32) U: [-32768,32768) S: [-32768,32768) Exits: (sext i16 ptrtoint (ptr @global to i16) to i32) LoopDispositions: { %bb7: Invariant }287; PTR64_IDX32-NEXT:    %tmp = sub i32 %arg, %ext288; PTR64_IDX32-NEXT:    --> ((-1 * (sext i16 ptrtoint (ptr @global to i16) to i32))<nsw> + %arg) U: full-set S: full-set Exits: ((-1 * (sext i16 ptrtoint (ptr @global to i16) to i32))<nsw> + %arg) LoopDispositions: { %bb7: Invariant }289; PTR64_IDX32-NEXT:    %tmp9 = select i1 %tmp8, i16 0, i16 1290; PTR64_IDX32-NEXT:    --> %tmp9 U: [0,2) S: [0,2) Exits: <<Unknown>> LoopDispositions: { %bb7: Variant }291; PTR64_IDX32-NEXT:  Determining loop execution counts for: @sext_to_i32292; PTR64_IDX32-NEXT:  Loop %bb7: Unpredictable backedge-taken count.293; PTR64_IDX32-NEXT:  Loop %bb7: Unpredictable constant max backedge-taken count.294; PTR64_IDX32-NEXT:  Loop %bb7: Unpredictable symbolic max backedge-taken count.295;296; PTR16_IDX16-LABEL: 'sext_to_i32'297; PTR16_IDX16-NEXT:  Classifying expressions for: @sext_to_i32298; PTR16_IDX16-NEXT:    %ext = sext i16 ptrtoint (ptr @global to i16) to i32299; PTR16_IDX16-NEXT:    --> (sext i16 (ptrtoint ptr @global to i16) to i32) U: [-32768,32768) S: [-32768,32768) Exits: (sext i16 (ptrtoint ptr @global to i16) to i32) LoopDispositions: { %bb7: Invariant }300; PTR16_IDX16-NEXT:    %tmp = sub i32 %arg, %ext301; PTR16_IDX16-NEXT:    --> ((-1 * (sext i16 (ptrtoint ptr @global to i16) to i32))<nsw> + %arg) U: full-set S: full-set Exits: ((-1 * (sext i16 (ptrtoint ptr @global to i16) to i32))<nsw> + %arg) LoopDispositions: { %bb7: Invariant }302; PTR16_IDX16-NEXT:    %tmp9 = select i1 %tmp8, i16 0, i16 1303; PTR16_IDX16-NEXT:    --> %tmp9 U: [0,2) S: [0,2) Exits: <<Unknown>> LoopDispositions: { %bb7: Variant }304; PTR16_IDX16-NEXT:  Determining loop execution counts for: @sext_to_i32305; PTR16_IDX16-NEXT:  Loop %bb7: Unpredictable backedge-taken count.306; PTR16_IDX16-NEXT:  Loop %bb7: Unpredictable constant max backedge-taken count.307; PTR16_IDX16-NEXT:  Loop %bb7: Unpredictable symbolic max backedge-taken count.308;309bb:310  br label %bb7311 312bb7:                                              ; preds = %bb7, %bb313  %ext = sext i16 ptrtoint (ptr @global to i16) to i32314  %tmp = sub i32 %arg, %ext315  %tmp8 = icmp eq i32 %tmp, %arg6316  %tmp9 = select i1 %tmp8, i16 0, i16 1317  call void @use16(i16 %tmp9)318  br i1 %tmp8, label %bb7, label %bb10319 320bb10:                                             ; preds = %bb7321  ret void322}323 324define i64 @sext_like_noop(i32 %n) {325; PTR64_IDX64-LABEL: 'sext_like_noop'326; PTR64_IDX64-NEXT:  Classifying expressions for: @sext_like_noop327; PTR64_IDX64-NEXT:    %ii = sext i32 %i to i64328; PTR64_IDX64-NEXT:    --> (sext i32 {1,+,1}<nuw><%for.body> to i64) U: [-2147483648,2147483648) S: [-2147483648,2147483648) --> (sext i32 (-1 + (trunc i64 (ptrtoint ptr @sext_like_noop to i64) to i32)) to i64) U: [-2147483648,2147483648) S: [-2147483648,2147483648)329; PTR64_IDX64-NEXT:    %div = sdiv i64 55555, %ii330; PTR64_IDX64-NEXT:    --> %div U: full-set S: full-set331; PTR64_IDX64-NEXT:    %i = phi i32 [ %inc, %for.body ], [ 1, %entry ]332; PTR64_IDX64-NEXT:    --> {1,+,1}<nuw><%for.body> U: [1,0) S: [1,0) Exits: (-1 + (trunc i64 (ptrtoint ptr @sext_like_noop to i64) to i32)) LoopDispositions: { %for.body: Computable }333; PTR64_IDX64-NEXT:    %inc = add nuw i32 %i, 1334; PTR64_IDX64-NEXT:    --> {2,+,1}<nuw><%for.body> U: [2,0) S: [2,0) Exits: (trunc i64 (ptrtoint ptr @sext_like_noop to i64) to i32) LoopDispositions: { %for.body: Computable }335; PTR64_IDX64-NEXT:  Determining loop execution counts for: @sext_like_noop336; PTR64_IDX64-NEXT:  Loop %for.body: backedge-taken count is (-2 + (trunc i64 (ptrtoint ptr @sext_like_noop to i64) to i32))337; PTR64_IDX64-NEXT:  Loop %for.body: constant max backedge-taken count is i32 -1338; PTR64_IDX64-NEXT:  Loop %for.body: symbolic max backedge-taken count is (-2 + (trunc i64 (ptrtoint ptr @sext_like_noop to i64) to i32))339; PTR64_IDX64-NEXT:  Loop %for.body: Trip multiple is 1340;341; PTR64_IDX32-LABEL: 'sext_like_noop'342; PTR64_IDX32-NEXT:  Classifying expressions for: @sext_like_noop343; PTR64_IDX32-NEXT:    %ii = sext i32 %i to i64344; PTR64_IDX32-NEXT:    --> (sext i32 {1,+,1}<nuw><%for.body> to i64) U: [-2147483648,2147483648) S: [-2147483648,2147483648) --> (sext i32 (-1 + ptrtoint (ptr @sext_like_noop to i32)) to i64) U: [-2147483648,2147483648) S: [-2147483648,2147483648)345; PTR64_IDX32-NEXT:    %div = sdiv i64 55555, %ii346; PTR64_IDX32-NEXT:    --> %div U: full-set S: full-set347; PTR64_IDX32-NEXT:    %i = phi i32 [ %inc, %for.body ], [ 1, %entry ]348; PTR64_IDX32-NEXT:    --> {1,+,1}<nuw><%for.body> U: [1,0) S: [1,0) Exits: (-1 + ptrtoint (ptr @sext_like_noop to i32)) LoopDispositions: { %for.body: Computable }349; PTR64_IDX32-NEXT:    %inc = add nuw i32 %i, 1350; PTR64_IDX32-NEXT:    --> {2,+,1}<nuw><%for.body> U: [2,0) S: [2,0) Exits: ptrtoint (ptr @sext_like_noop to i32) LoopDispositions: { %for.body: Computable }351; PTR64_IDX32-NEXT:  Determining loop execution counts for: @sext_like_noop352; PTR64_IDX32-NEXT:  Loop %for.body: backedge-taken count is (-2 + ptrtoint (ptr @sext_like_noop to i32))353; PTR64_IDX32-NEXT:  Loop %for.body: constant max backedge-taken count is i32 -1354; PTR64_IDX32-NEXT:  Loop %for.body: symbolic max backedge-taken count is (-2 + ptrtoint (ptr @sext_like_noop to i32))355; PTR64_IDX32-NEXT:  Loop %for.body: Trip multiple is 1356;357; PTR16_IDX16-LABEL: 'sext_like_noop'358; PTR16_IDX16-NEXT:  Classifying expressions for: @sext_like_noop359; PTR16_IDX16-NEXT:    %ii = sext i32 %i to i64360; PTR16_IDX16-NEXT:    --> (sext i32 {1,+,1}<nuw><%for.body> to i64) U: [-2147483648,2147483648) S: [-2147483648,2147483648) --> (-1 + (zext i16 (ptrtoint ptr @sext_like_noop to i16) to i64))<nsw> U: [-1,65535) S: [-1,65535)361; PTR16_IDX16-NEXT:    %div = sdiv i64 55555, %ii362; PTR16_IDX16-NEXT:    --> %div U: full-set S: full-set363; PTR16_IDX16-NEXT:    %i = phi i32 [ %inc, %for.body ], [ 1, %entry ]364; PTR16_IDX16-NEXT:    --> {1,+,1}<nuw><%for.body> U: [1,0) S: [1,0) Exits: (-1 + (zext i16 (ptrtoint ptr @sext_like_noop to i16) to i32))<nsw> LoopDispositions: { %for.body: Computable }365; PTR16_IDX16-NEXT:    %inc = add nuw i32 %i, 1366; PTR16_IDX16-NEXT:    --> {2,+,1}<nuw><%for.body> U: [2,0) S: [2,0) Exits: (zext i16 (ptrtoint ptr @sext_like_noop to i16) to i32) LoopDispositions: { %for.body: Computable }367; PTR16_IDX16-NEXT:  Determining loop execution counts for: @sext_like_noop368; PTR16_IDX16-NEXT:  Loop %for.body: backedge-taken count is (-2 + (zext i16 (ptrtoint ptr @sext_like_noop to i16) to i32))<nsw>369; PTR16_IDX16-NEXT:  Loop %for.body: constant max backedge-taken count is i32 -1370; PTR16_IDX16-NEXT:  Loop %for.body: symbolic max backedge-taken count is (-2 + (zext i16 (ptrtoint ptr @sext_like_noop to i16) to i32))<nsw>371; PTR16_IDX16-NEXT:  Loop %for.body: Trip multiple is 1372;373entry:374  %cmp6 = icmp sgt i32 %n, 1375  br label %for.body376 377for.cond.cleanup:378  %ii = sext i32 %i to i64379  %div = sdiv i64 55555, %ii380  ret i64 %div381 382for.body:383  %i = phi i32 [ %inc, %for.body ], [ 1, %entry ]384  %inc = add nuw i32 %i, 1385  %exitcond = icmp eq i32 %inc, ptrtoint (ptr @sext_like_noop to i32)386  br i1 %exitcond, label %for.cond.cleanup, label %for.body387}388declare void @f(i64)389