brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.2 KiB · d09b06b Raw
248 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py2; RUN: opt -disable-output "-passes=print<scalar-evolution>" < %s 2>&1 | FileCheck %s3 4define ptr @pointer_select_two_objects(i1 %cond, ptr %first_obj, ptr %second_obj) {5; CHECK-LABEL: 'pointer_select_two_objects'6; CHECK-NEXT:  Classifying expressions for: @pointer_select_two_objects7; CHECK-NEXT:    %r = select i1 %cond, ptr %first_obj, ptr %second_obj8; CHECK-NEXT:    --> %r U: full-set S: full-set9; CHECK-NEXT:  Determining loop execution counts for: @pointer_select_two_objects10;11  %r = select i1 %cond, ptr %first_obj, ptr %second_obj12  ret ptr %r13}14 15;--16 17define ptr @pointer_select_same_object_constant_offsets(i1 %cond, ptr %obj) {18; CHECK-LABEL: 'pointer_select_same_object_constant_offsets'19; CHECK-NEXT:  Classifying expressions for: @pointer_select_same_object_constant_offsets20; CHECK-NEXT:    %true_ptr = getelementptr i8, ptr %obj, i64 4221; CHECK-NEXT:    --> (42 + %obj) U: full-set S: full-set22; CHECK-NEXT:    %false_ptr = getelementptr i8, ptr %obj, i64 2423; CHECK-NEXT:    --> (24 + %obj) U: full-set S: full-set24; CHECK-NEXT:    %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr25; CHECK-NEXT:    --> %r U: full-set S: full-set26; CHECK-NEXT:  Determining loop execution counts for: @pointer_select_same_object_constant_offsets27;28  %true_ptr = getelementptr i8, ptr %obj, i64 4229  %false_ptr = getelementptr i8, ptr %obj, i64 2430  %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr31  ret ptr %r32}33 34define ptr @pointer_select_same_object_variable_offsets(i1 %cond, ptr %obj, i64 %true_off, i64 %false_off) {35; CHECK-LABEL: 'pointer_select_same_object_variable_offsets'36; CHECK-NEXT:  Classifying expressions for: @pointer_select_same_object_variable_offsets37; CHECK-NEXT:    %true_ptr = getelementptr i8, ptr %obj, i64 %true_off38; CHECK-NEXT:    --> (%true_off + %obj) U: full-set S: full-set39; CHECK-NEXT:    %false_ptr = getelementptr i8, ptr %obj, i64 %false_off40; CHECK-NEXT:    --> (%false_off + %obj) U: full-set S: full-set41; CHECK-NEXT:    %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr42; CHECK-NEXT:    --> %r U: full-set S: full-set43; CHECK-NEXT:  Determining loop execution counts for: @pointer_select_same_object_variable_offsets44;45  %true_ptr = getelementptr i8, ptr %obj, i64 %true_off46  %false_ptr = getelementptr i8, ptr %obj, i64 %false_off47  %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr48  ret ptr %r49}50 51define ptr @pointer_select_same_object_constant_offset_vs_variable_offset(i1 %cond, ptr %obj, i64 %false_off) {52; CHECK-LABEL: 'pointer_select_same_object_constant_offset_vs_variable_offset'53; CHECK-NEXT:  Classifying expressions for: @pointer_select_same_object_constant_offset_vs_variable_offset54; CHECK-NEXT:    %true_ptr = getelementptr i8, ptr %obj, i64 4255; CHECK-NEXT:    --> (42 + %obj) U: full-set S: full-set56; CHECK-NEXT:    %false_ptr = getelementptr i8, ptr %obj, i64 %false_off57; CHECK-NEXT:    --> (%false_off + %obj) U: full-set S: full-set58; CHECK-NEXT:    %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr59; CHECK-NEXT:    --> %r U: full-set S: full-set60; CHECK-NEXT:  Determining loop execution counts for: @pointer_select_same_object_constant_offset_vs_variable_offset61;62  %true_ptr = getelementptr i8, ptr %obj, i64 4263  %false_ptr = getelementptr i8, ptr %obj, i64 %false_off64  %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr65  ret ptr %r66}67 68define ptr @pointer_select_same_object_variable_offset_vs_constant_offset(i1 %cond, ptr %obj, i64 %true_off) {69; CHECK-LABEL: 'pointer_select_same_object_variable_offset_vs_constant_offset'70; CHECK-NEXT:  Classifying expressions for: @pointer_select_same_object_variable_offset_vs_constant_offset71; CHECK-NEXT:    %true_ptr = getelementptr i8, ptr %obj, i64 %true_off72; CHECK-NEXT:    --> (%true_off + %obj) U: full-set S: full-set73; CHECK-NEXT:    %false_ptr = getelementptr i8, ptr %obj, i64 4274; CHECK-NEXT:    --> (42 + %obj) U: full-set S: full-set75; CHECK-NEXT:    %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr76; CHECK-NEXT:    --> %r U: full-set S: full-set77; CHECK-NEXT:  Determining loop execution counts for: @pointer_select_same_object_variable_offset_vs_constant_offset78;79  %true_ptr = getelementptr i8, ptr %obj, i64 %true_off80  %false_ptr = getelementptr i8, ptr %obj, i64 4281  %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr82  ret ptr %r83}84 85;--86 87define ptr @pointer_select_same_object_with_constant_base_offset__constant_offsets(i1 %cond, ptr %obj.base) {88; CHECK-LABEL: 'pointer_select_same_object_with_constant_base_offset__constant_offsets'89; CHECK-NEXT:  Classifying expressions for: @pointer_select_same_object_with_constant_base_offset__constant_offsets90; CHECK-NEXT:    %obj = getelementptr i8, ptr %obj.base, i64 1291; CHECK-NEXT:    --> (12 + %obj.base) U: full-set S: full-set92; CHECK-NEXT:    %true_ptr = getelementptr i8, ptr %obj, i64 4293; CHECK-NEXT:    --> (54 + %obj.base) U: full-set S: full-set94; CHECK-NEXT:    %false_ptr = getelementptr i8, ptr %obj, i64 2495; CHECK-NEXT:    --> (36 + %obj.base) U: full-set S: full-set96; CHECK-NEXT:    %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr97; CHECK-NEXT:    --> %r U: full-set S: full-set98; CHECK-NEXT:  Determining loop execution counts for: @pointer_select_same_object_with_constant_base_offset__constant_offsets99;100  %obj = getelementptr i8, ptr %obj.base, i64 12101  %true_ptr = getelementptr i8, ptr %obj, i64 42102  %false_ptr = getelementptr i8, ptr %obj, i64 24103  %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr104  ret ptr %r105}106 107define ptr @pointer_select_same_object_with_constant_base_offset__variable_offsets(i1 %cond, ptr %obj.base, i64 %true_off, i64 %false_off) {108; CHECK-LABEL: 'pointer_select_same_object_with_constant_base_offset__variable_offsets'109; CHECK-NEXT:  Classifying expressions for: @pointer_select_same_object_with_constant_base_offset__variable_offsets110; CHECK-NEXT:    %obj = getelementptr i8, ptr %obj.base, i64 12111; CHECK-NEXT:    --> (12 + %obj.base) U: full-set S: full-set112; CHECK-NEXT:    %true_ptr = getelementptr i8, ptr %obj, i64 %true_off113; CHECK-NEXT:    --> (12 + %true_off + %obj.base) U: full-set S: full-set114; CHECK-NEXT:    %false_ptr = getelementptr i8, ptr %obj, i64 %false_off115; CHECK-NEXT:    --> (12 + %false_off + %obj.base) U: full-set S: full-set116; CHECK-NEXT:    %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr117; CHECK-NEXT:    --> %r U: full-set S: full-set118; CHECK-NEXT:  Determining loop execution counts for: @pointer_select_same_object_with_constant_base_offset__variable_offsets119;120  %obj = getelementptr i8, ptr %obj.base, i64 12121  %true_ptr = getelementptr i8, ptr %obj, i64 %true_off122  %false_ptr = getelementptr i8, ptr %obj, i64 %false_off123  %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr124  ret ptr %r125}126 127define ptr @pointer_select_same_object_with_constant_base_offset__constant_offset_vs_variable_offset(i1 %cond, ptr %obj.base, i64 %false_off) {128; CHECK-LABEL: 'pointer_select_same_object_with_constant_base_offset__constant_offset_vs_variable_offset'129; CHECK-NEXT:  Classifying expressions for: @pointer_select_same_object_with_constant_base_offset__constant_offset_vs_variable_offset130; CHECK-NEXT:    %obj = getelementptr i8, ptr %obj.base, i64 12131; CHECK-NEXT:    --> (12 + %obj.base) U: full-set S: full-set132; CHECK-NEXT:    %true_ptr = getelementptr i8, ptr %obj, i64 42133; CHECK-NEXT:    --> (54 + %obj.base) U: full-set S: full-set134; CHECK-NEXT:    %false_ptr = getelementptr i8, ptr %obj, i64 %false_off135; CHECK-NEXT:    --> (12 + %false_off + %obj.base) U: full-set S: full-set136; CHECK-NEXT:    %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr137; CHECK-NEXT:    --> %r U: full-set S: full-set138; CHECK-NEXT:  Determining loop execution counts for: @pointer_select_same_object_with_constant_base_offset__constant_offset_vs_variable_offset139;140  %obj = getelementptr i8, ptr %obj.base, i64 12141  %true_ptr = getelementptr i8, ptr %obj, i64 42142  %false_ptr = getelementptr i8, ptr %obj, i64 %false_off143  %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr144  ret ptr %r145}146 147define ptr @pointer_select_same_object_with_constant_base_offset__variable_offset_vs_constant_offset(i1 %cond, ptr %obj.base, i64 %true_off) {148; CHECK-LABEL: 'pointer_select_same_object_with_constant_base_offset__variable_offset_vs_constant_offset'149; CHECK-NEXT:  Classifying expressions for: @pointer_select_same_object_with_constant_base_offset__variable_offset_vs_constant_offset150; CHECK-NEXT:    %obj = getelementptr i8, ptr %obj.base, i64 12151; CHECK-NEXT:    --> (12 + %obj.base) U: full-set S: full-set152; CHECK-NEXT:    %true_ptr = getelementptr i8, ptr %obj, i64 %true_off153; CHECK-NEXT:    --> (12 + %true_off + %obj.base) U: full-set S: full-set154; CHECK-NEXT:    %false_ptr = getelementptr i8, ptr %obj, i64 42155; CHECK-NEXT:    --> (54 + %obj.base) U: full-set S: full-set156; CHECK-NEXT:    %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr157; CHECK-NEXT:    --> %r U: full-set S: full-set158; CHECK-NEXT:  Determining loop execution counts for: @pointer_select_same_object_with_constant_base_offset__variable_offset_vs_constant_offset159;160  %obj = getelementptr i8, ptr %obj.base, i64 12161  %true_ptr = getelementptr i8, ptr %obj, i64 %true_off162  %false_ptr = getelementptr i8, ptr %obj, i64 42163  %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr164  ret ptr %r165}166 167;--168 169define ptr @pointer_select_same_object_with_variable_base_offset__constant_offsets(i1 %cond, ptr %obj.base, i64 %base_offset) {170; CHECK-LABEL: 'pointer_select_same_object_with_variable_base_offset__constant_offsets'171; CHECK-NEXT:  Classifying expressions for: @pointer_select_same_object_with_variable_base_offset__constant_offsets172; CHECK-NEXT:    %obj = getelementptr i8, ptr %obj.base, i64 %base_offset173; CHECK-NEXT:    --> (%base_offset + %obj.base) U: full-set S: full-set174; CHECK-NEXT:    %true_ptr = getelementptr i8, ptr %obj, i64 42175; CHECK-NEXT:    --> (42 + %base_offset + %obj.base) U: full-set S: full-set176; CHECK-NEXT:    %false_ptr = getelementptr i8, ptr %obj, i64 24177; CHECK-NEXT:    --> (24 + %base_offset + %obj.base) U: full-set S: full-set178; CHECK-NEXT:    %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr179; CHECK-NEXT:    --> %r U: full-set S: full-set180; CHECK-NEXT:  Determining loop execution counts for: @pointer_select_same_object_with_variable_base_offset__constant_offsets181;182  %obj = getelementptr i8, ptr %obj.base, i64 %base_offset183  %true_ptr = getelementptr i8, ptr %obj, i64 42184  %false_ptr = getelementptr i8, ptr %obj, i64 24185  %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr186  ret ptr %r187}188 189define ptr @pointer_select_same_object_with_variable_base_offset__variable_offsets(i1 %cond, ptr %obj.base, i64 %base_offset, i64 %true_off, i64 %false_off) {190; CHECK-LABEL: 'pointer_select_same_object_with_variable_base_offset__variable_offsets'191; CHECK-NEXT:  Classifying expressions for: @pointer_select_same_object_with_variable_base_offset__variable_offsets192; CHECK-NEXT:    %obj = getelementptr i8, ptr %obj.base, i64 %base_offset193; CHECK-NEXT:    --> (%base_offset + %obj.base) U: full-set S: full-set194; CHECK-NEXT:    %true_ptr = getelementptr i8, ptr %obj, i64 %true_off195; CHECK-NEXT:    --> (%base_offset + %true_off + %obj.base) U: full-set S: full-set196; CHECK-NEXT:    %false_ptr = getelementptr i8, ptr %obj, i64 %false_off197; CHECK-NEXT:    --> (%base_offset + %false_off + %obj.base) U: full-set S: full-set198; CHECK-NEXT:    %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr199; CHECK-NEXT:    --> %r U: full-set S: full-set200; CHECK-NEXT:  Determining loop execution counts for: @pointer_select_same_object_with_variable_base_offset__variable_offsets201;202  %obj = getelementptr i8, ptr %obj.base, i64 %base_offset203  %true_ptr = getelementptr i8, ptr %obj, i64 %true_off204  %false_ptr = getelementptr i8, ptr %obj, i64 %false_off205  %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr206  ret ptr %r207}208 209define ptr @pointer_select_same_object_with_variable_base_offset__constant_offset_vs_variable_offset(i1 %cond, ptr %obj.base, i64 %base_offset, i64 %false_off) {210; CHECK-LABEL: 'pointer_select_same_object_with_variable_base_offset__constant_offset_vs_variable_offset'211; CHECK-NEXT:  Classifying expressions for: @pointer_select_same_object_with_variable_base_offset__constant_offset_vs_variable_offset212; CHECK-NEXT:    %obj = getelementptr i8, ptr %obj.base, i64 %base_offset213; CHECK-NEXT:    --> (%base_offset + %obj.base) U: full-set S: full-set214; CHECK-NEXT:    %true_ptr = getelementptr i8, ptr %obj, i64 42215; CHECK-NEXT:    --> (42 + %base_offset + %obj.base) U: full-set S: full-set216; CHECK-NEXT:    %false_ptr = getelementptr i8, ptr %obj, i64 %false_off217; CHECK-NEXT:    --> (%base_offset + %false_off + %obj.base) U: full-set S: full-set218; CHECK-NEXT:    %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr219; CHECK-NEXT:    --> %r U: full-set S: full-set220; CHECK-NEXT:  Determining loop execution counts for: @pointer_select_same_object_with_variable_base_offset__constant_offset_vs_variable_offset221;222  %obj = getelementptr i8, ptr %obj.base, i64 %base_offset223  %true_ptr = getelementptr i8, ptr %obj, i64 42224  %false_ptr = getelementptr i8, ptr %obj, i64 %false_off225  %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr226  ret ptr %r227}228 229define ptr @pointer_select_same_object_with_variable_base_offset__variable_offset_vs_constant_offset(i1 %cond, ptr %obj.base, i64 %base_offset, i64 %true_off) {230; CHECK-LABEL: 'pointer_select_same_object_with_variable_base_offset__variable_offset_vs_constant_offset'231; CHECK-NEXT:  Classifying expressions for: @pointer_select_same_object_with_variable_base_offset__variable_offset_vs_constant_offset232; CHECK-NEXT:    %obj = getelementptr i8, ptr %obj.base, i64 %base_offset233; CHECK-NEXT:    --> (%base_offset + %obj.base) U: full-set S: full-set234; CHECK-NEXT:    %true_ptr = getelementptr i8, ptr %obj, i64 %true_off235; CHECK-NEXT:    --> (%base_offset + %true_off + %obj.base) U: full-set S: full-set236; CHECK-NEXT:    %false_ptr = getelementptr i8, ptr %obj, i64 42237; CHECK-NEXT:    --> (42 + %base_offset + %obj.base) U: full-set S: full-set238; CHECK-NEXT:    %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr239; CHECK-NEXT:    --> %r U: full-set S: full-set240; CHECK-NEXT:  Determining loop execution counts for: @pointer_select_same_object_with_variable_base_offset__variable_offset_vs_constant_offset241;242  %obj = getelementptr i8, ptr %obj.base, i64 %base_offset243  %true_ptr = getelementptr i8, ptr %obj, i64 %true_off244  %false_ptr = getelementptr i8, ptr %obj, i64 42245  %r = select i1 %cond, ptr %true_ptr, ptr %false_ptr246  ret ptr %r247}248