brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.5 KiB · 6eb0d20 Raw
193 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 22; RUN: opt -passes='print<scalar-evolution>' -disable-output %s 2>&1 | FileCheck %s3 4@glob.i32.align2 = global i32 zeroinitializer, align 25@glob.i32.align8 = global i32 zeroinitializer, align 86@glob.i32.align16 = global i32 zeroinitializer, align 167@array4xi32 = global [4 x i32] zeroinitializer, align 168 9define i64 @ptrtoint_align_2_size_4_add_5() {10; CHECK-LABEL: 'ptrtoint_align_2_size_4_add_5'11; CHECK-NEXT:  Classifying expressions for: @ptrtoint_align_2_size_4_add_512; CHECK-NEXT:    %add = add i64 ptrtoint (ptr @glob.i32.align2 to i64), 513; CHECK-NEXT:    --> (5 + (ptrtoint ptr @glob.i32.align2 to i64))<nuw> U: [7,0) S: [5,0)14; CHECK-NEXT:  Determining loop execution counts for: @ptrtoint_align_2_size_4_add_515;16entry:17  %add = add i64 ptrtoint (ptr @glob.i32.align2 to i64), 518  ret i64 %add19}20 21define i64 @ptrtoint_align_2_size_4_add_6() {22; CHECK-LABEL: 'ptrtoint_align_2_size_4_add_6'23; CHECK-NEXT:  Classifying expressions for: @ptrtoint_align_2_size_4_add_624; CHECK-NEXT:    %add = add i64 ptrtoint (ptr @glob.i32.align2 to i64), 625; CHECK-NEXT:    --> (6 + (ptrtoint ptr @glob.i32.align2 to i64)) U: [0,-1) S: [-9223372036854775808,9223372036854775807)26; CHECK-NEXT:  Determining loop execution counts for: @ptrtoint_align_2_size_4_add_627;28entry:29  %add = add i64 ptrtoint (ptr @glob.i32.align2 to i64), 630  ret i64 %add31}32 33define i64 @ptrtoint_align_8_size_4_add_7() {34; CHECK-LABEL: 'ptrtoint_align_8_size_4_add_7'35; CHECK-NEXT:  Classifying expressions for: @ptrtoint_align_8_size_4_add_736; CHECK-NEXT:    %add = add i64 ptrtoint (ptr @glob.i32.align8 to i64), 737; CHECK-NEXT:    --> (7 + (ptrtoint ptr @glob.i32.align8 to i64))<nuw><nsw> U: [15,0) S: [-9223372036854775801,-9223372036854775808)38; CHECK-NEXT:  Determining loop execution counts for: @ptrtoint_align_8_size_4_add_739;40entry:41  %add = add i64 ptrtoint (ptr @glob.i32.align8 to i64), 742  ret i64 %add43}44 45define i64 @ptrtoint_align_8_size_4_add_8() {46; CHECK-LABEL: 'ptrtoint_align_8_size_4_add_8'47; CHECK-NEXT:  Classifying expressions for: @ptrtoint_align_8_size_4_add_848; CHECK-NEXT:    %add = add i64 ptrtoint (ptr @glob.i32.align8 to i64), 849; CHECK-NEXT:    --> (8 + (ptrtoint ptr @glob.i32.align8 to i64)) U: [0,-7) S: [-9223372036854775808,9223372036854775801)50; CHECK-NEXT:  Determining loop execution counts for: @ptrtoint_align_8_size_4_add_851;52entry:53  %add = add i64 ptrtoint (ptr @glob.i32.align8 to i64), 854  ret i64 %add55}56 57define i64 @ptrtoint_align_16_size_4_add_15() {58; CHECK-LABEL: 'ptrtoint_align_16_size_4_add_15'59; CHECK-NEXT:  Classifying expressions for: @ptrtoint_align_16_size_4_add_1560; CHECK-NEXT:    %add = add i64 ptrtoint (ptr @glob.i32.align16 to i64), 1561; CHECK-NEXT:    --> (15 + (ptrtoint ptr @glob.i32.align16 to i64))<nuw><nsw> U: [31,0) S: [-9223372036854775793,-9223372036854775808)62; CHECK-NEXT:  Determining loop execution counts for: @ptrtoint_align_16_size_4_add_1563;64entry:65  %add = add i64 ptrtoint (ptr @glob.i32.align16 to i64), 1566  ret i64 %add67}68 69define i64 @ptrtoint_align_16_size_4_add_16() {70; CHECK-LABEL: 'ptrtoint_align_16_size_4_add_16'71; CHECK-NEXT:  Classifying expressions for: @ptrtoint_align_16_size_4_add_1672; CHECK-NEXT:    %add = add i64 ptrtoint (ptr @glob.i32.align16 to i64), 1673; CHECK-NEXT:    --> (16 + (ptrtoint ptr @glob.i32.align16 to i64)) U: [0,-15) S: [-9223372036854775808,9223372036854775793)74; CHECK-NEXT:  Determining loop execution counts for: @ptrtoint_align_16_size_4_add_1675;76entry:77  %add = add i64 ptrtoint (ptr @glob.i32.align16 to i64), 1678  ret i64 %add79}80 81define i64 @ptrtoint_align_16_size_16_add_16() {82; CHECK-LABEL: 'ptrtoint_align_16_size_16_add_16'83; CHECK-NEXT:  Classifying expressions for: @ptrtoint_align_16_size_16_add_1684; CHECK-NEXT:    %add = add i64 ptrtoint (ptr @array4xi32 to i64), 1685; CHECK-NEXT:    --> (16 + (ptrtoint ptr @array4xi32 to i64))<nuw> U: [32,-15) S: [-9223372036854775808,9223372036854775793)86; CHECK-NEXT:  Determining loop execution counts for: @ptrtoint_align_16_size_16_add_1687;88entry:89  %add = add i64 ptrtoint (ptr @array4xi32 to i64), 1690  ret i64 %add91}92 93define i64 @ptrtoint_align_16_size_16_add_31() {94; CHECK-LABEL: 'ptrtoint_align_16_size_16_add_31'95; CHECK-NEXT:  Classifying expressions for: @ptrtoint_align_16_size_16_add_3196; CHECK-NEXT:    %add = add i64 ptrtoint (ptr @array4xi32 to i64), 3197; CHECK-NEXT:    --> (31 + (ptrtoint ptr @array4xi32 to i64))<nuw> U: [47,0) S: [31,0)98; CHECK-NEXT:  Determining loop execution counts for: @ptrtoint_align_16_size_16_add_3199;100entry:101  %add = add i64 ptrtoint (ptr @array4xi32 to i64), 31102  ret i64 %add103}104 105define i64 @ptrtoint_align_16_size_16_add_32() {106; CHECK-LABEL: 'ptrtoint_align_16_size_16_add_32'107; CHECK-NEXT:  Classifying expressions for: @ptrtoint_align_16_size_16_add_32108; CHECK-NEXT:    %add = add i64 ptrtoint (ptr @array4xi32 to i64), 32109; CHECK-NEXT:    --> (32 + (ptrtoint ptr @array4xi32 to i64)) U: [0,-15) S: [-9223372036854775808,9223372036854775793)110; CHECK-NEXT:  Determining loop execution counts for: @ptrtoint_align_16_size_16_add_32111;112entry:113  %add = add i64 ptrtoint (ptr @array4xi32 to i64), 32114  ret i64 %add115}116 117define i64 @ptrtoint_align_16_size_16_add_33() {118; CHECK-LABEL: 'ptrtoint_align_16_size_16_add_33'119; CHECK-NEXT:  Classifying expressions for: @ptrtoint_align_16_size_16_add_33120; CHECK-NEXT:    %add = add i64 ptrtoint (ptr @array4xi32 to i64), 33121; CHECK-NEXT:    --> (33 + (ptrtoint ptr @array4xi32 to i64)) U: [49,2) S: [-9223372036854775775,-9223372036854775790)122; CHECK-NEXT:  Determining loop execution counts for: @ptrtoint_align_16_size_16_add_33123;124entry:125  %add = add i64 ptrtoint (ptr @array4xi32 to i64), 33126  ret i64 %add127}128 129define i64 @ptrtoint_align_16_size_16_add_16_umax_sub() {130; CHECK-LABEL: 'ptrtoint_align_16_size_16_add_16_umax_sub'131; CHECK-NEXT:  Classifying expressions for: @ptrtoint_align_16_size_16_add_16_umax_sub132; CHECK-NEXT:    %add.16 = add i64 ptrtoint (ptr @array4xi32 to i64), 16133; CHECK-NEXT:    --> (16 + (ptrtoint ptr @array4xi32 to i64))<nuw> U: [32,-15) S: [-9223372036854775808,9223372036854775793)134; CHECK-NEXT:    %umax = call i64 @llvm.umax.i64(i64 ptrtoint (ptr @array4xi32 to i64), i64 %add.16)135; CHECK-NEXT:    --> (16 + (ptrtoint ptr @array4xi32 to i64))<nuw> U: [32,-15) S: [-9223372036854775808,9223372036854775793)136; CHECK-NEXT:    %add = add i64 %umax, 16137; CHECK-NEXT:    --> (32 + (ptrtoint ptr @array4xi32 to i64)) U: [0,-15) S: [-9223372036854775808,9223372036854775793)138; CHECK-NEXT:    %sub = sub i64 %add, ptrtoint (ptr @array4xi32 to i64)139; CHECK-NEXT:    --> 32 U: [32,33) S: [32,33)140; CHECK-NEXT:  Determining loop execution counts for: @ptrtoint_align_16_size_16_add_16_umax_sub141;142entry:143  %add.16 = add i64 ptrtoint (ptr @array4xi32 to i64), 16144  %umax = call i64 @llvm.umax.i64(i64 ptrtoint (ptr @array4xi32 to i64), i64 %add.16)145  %add = add i64 %umax, 16146  %sub = sub i64 %add, ptrtoint (ptr @array4xi32 to i64)147  ret i64 %sub148}149 150define i64 @ptrtoint_align_16_size_16_add_31_umax_sub() {151; CHECK-LABEL: 'ptrtoint_align_16_size_16_add_31_umax_sub'152; CHECK-NEXT:  Classifying expressions for: @ptrtoint_align_16_size_16_add_31_umax_sub153; CHECK-NEXT:    %add.31 = add i64 ptrtoint (ptr @array4xi32 to i64), 31154; CHECK-NEXT:    --> (31 + (ptrtoint ptr @array4xi32 to i64))<nuw> U: [47,0) S: [31,0)155; CHECK-NEXT:    %umax = call i64 @llvm.umax.i64(i64 ptrtoint (ptr @array4xi32 to i64), i64 %add.31)156; CHECK-NEXT:    --> (31 + (ptrtoint ptr @array4xi32 to i64))<nuw> U: [47,0) S: [31,0)157; CHECK-NEXT:    %add = add i64 %umax, 16158; CHECK-NEXT:    --> (47 + (ptrtoint ptr @array4xi32 to i64)) U: [63,16) S: [-9223372036854775761,-9223372036854775776)159; CHECK-NEXT:    %sub = sub i64 %add, ptrtoint (ptr @array4xi32 to i64)160; CHECK-NEXT:    --> 47 U: [47,48) S: [47,48)161; CHECK-NEXT:  Determining loop execution counts for: @ptrtoint_align_16_size_16_add_31_umax_sub162;163entry:164  %add.31 = add i64 ptrtoint (ptr @array4xi32 to i64), 31165  %umax = call i64 @llvm.umax.i64(i64 ptrtoint (ptr @array4xi32 to i64), i64 %add.31)166  %add = add i64 %umax, 16167  %sub = sub i64 %add, ptrtoint (ptr @array4xi32 to i64)168  ret i64 %sub169}170 171define i64 @ptrtoint_align_16_size_16_add_32_umax_sub() {172; CHECK-LABEL: 'ptrtoint_align_16_size_16_add_32_umax_sub'173; CHECK-NEXT:  Classifying expressions for: @ptrtoint_align_16_size_16_add_32_umax_sub174; CHECK-NEXT:    %add.32 = add i64 ptrtoint (ptr @array4xi32 to i64), 32175; CHECK-NEXT:    --> (32 + (ptrtoint ptr @array4xi32 to i64)) U: [0,-15) S: [-9223372036854775808,9223372036854775793)176; CHECK-NEXT:    %umax = call i64 @llvm.umax.i64(i64 ptrtoint (ptr @array4xi32 to i64), i64 %add.32)177; CHECK-NEXT:    --> ((32 + (ptrtoint ptr @array4xi32 to i64)) umax (ptrtoint ptr @array4xi32 to i64)) U: [16,-15) S: [-9223372036854775808,9223372036854775793)178; CHECK-NEXT:    %add = add i64 %umax, 16179; CHECK-NEXT:    --> (16 + ((32 + (ptrtoint ptr @array4xi32 to i64)) umax (ptrtoint ptr @array4xi32 to i64))) U: [0,-15) S: [-9223372036854775808,9223372036854775793)180; CHECK-NEXT:    %sub = sub i64 %add, ptrtoint (ptr @array4xi32 to i64)181; CHECK-NEXT:    --> (16 + (-1 * (ptrtoint ptr @array4xi32 to i64)) + ((32 + (ptrtoint ptr @array4xi32 to i64)) umax (ptrtoint ptr @array4xi32 to i64))) U: [0,-15) S: [-9223372036854775808,9223372036854775793)182; CHECK-NEXT:  Determining loop execution counts for: @ptrtoint_align_16_size_16_add_32_umax_sub183;184entry:185  %add.32 = add i64 ptrtoint (ptr @array4xi32 to i64), 32186  %umax = call i64 @llvm.umax.i64(i64 ptrtoint (ptr @array4xi32 to i64), i64 %add.32)187  %add = add i64 %umax, 16188  %sub = sub i64 %add, ptrtoint (ptr @array4xi32 to i64)189  ret i64 %sub190}191 192declare i64 @llvm.umax.i64(i64, i64)193