brintos

brintos / llvm-project-archived public Read only

0
0
Text · 16.1 KiB · df7eb6d Raw
340 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=constraint-elimination -S %s | FileCheck %s3 4target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"5 6define i1 @test_outer_gep_last_index_no_overflow_all_inbounds_1(ptr %dst) {7; CHECK-LABEL: @test_outer_gep_last_index_no_overflow_all_inbounds_1(8; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds ptr, ptr [[DST:%.*]], i64 09; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds ptr, ptr [[DST]], i64 210; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST_0]], i64 1, i64 111; CHECK-NEXT:    [[C_1:%.*]] = icmp slt ptr [[GEP_1]], [[UPPER]]12; CHECK-NEXT:    ret i1 [[C_1]]13;14  %dst.0 = getelementptr inbounds ptr, ptr %dst, i64 015  %upper = getelementptr inbounds ptr, ptr %dst, i64 216  %gep.1 = getelementptr inbounds [2 x i32] , ptr %dst.0, i64 1, i64 117  %c.1 = icmp slt ptr %gep.1, %upper18  ret i1 %c.119}20 21define i1 @test_outer_gep_last_index_no_overflow_all_inbounds_2(ptr %dst) {22; CHECK-LABEL: @test_outer_gep_last_index_no_overflow_all_inbounds_2(23; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds ptr, ptr [[DST:%.*]], i64 024; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds ptr, ptr [[DST]], i64 325; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST_0]], i64 1, i64 126; CHECK-NEXT:    [[C_1:%.*]] = icmp slt ptr [[GEP_1]], [[UPPER]]27; CHECK-NEXT:    ret i1 [[C_1]]28;29  %dst.0 = getelementptr inbounds ptr, ptr %dst, i64 030  %upper = getelementptr inbounds ptr, ptr %dst, i64 331  %gep.1 = getelementptr inbounds [2 x i32] , ptr %dst.0, i64 1, i64 132  %c.1 = icmp slt ptr %gep.1, %upper33  ret i1 %c.134}35 36define i1 @test_outer_gep_last_index_overflow_all_inbounds(ptr %dst) {37; CHECK-LABEL: @test_outer_gep_last_index_overflow_all_inbounds(38; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds ptr, ptr [[DST:%.*]], i64 039; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds ptr, ptr [[DST]], i64 240; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST_0]], i64 1, i64 241; CHECK-NEXT:    [[C:%.*]] = icmp slt ptr [[GEP_1]], [[UPPER]]42; CHECK-NEXT:    ret i1 [[C]]43;44  %dst.0 = getelementptr inbounds ptr, ptr %dst, i64 045  %upper = getelementptr inbounds ptr, ptr %dst, i64 246  %gep.1 = getelementptr inbounds [2 x i32] , ptr %dst.0, i64 1, i64 247  %c = icmp slt ptr %gep.1, %upper48  ret i1 %c49}50 51define i1 @test_inner_gep_multiple_indices_ult_true_all_inbounds(ptr %dst) {52; CHECK-LABEL: @test_inner_gep_multiple_indices_ult_true_all_inbounds(53; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST:%.*]], i64 0, i64 054; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST]], i64 0, i64 255; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr inbounds i32, ptr [[DST_0]], i64 156; CHECK-NEXT:    [[C:%.*]] = icmp slt ptr [[GEP_1]], [[UPPER]]57; CHECK-NEXT:    ret i1 [[C]]58;59  %dst.0 = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 060  %upper = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 261  %gep.1 = getelementptr inbounds i32, ptr %dst.0, i64 162  %c = icmp slt ptr %gep.1, %upper63  ret i1 %c64}65 66define i1 @test_inner_gep_multiple_indices_uge_true_all_inbounds(ptr %dst) {67; CHECK-LABEL: @test_inner_gep_multiple_indices_uge_true_all_inbounds(68; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST:%.*]], i64 0, i64 069; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST]], i64 0, i64 270; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr inbounds i32, ptr [[DST_0]], i64 171; CHECK-NEXT:    [[C:%.*]] = icmp sge ptr [[GEP_1]], [[DST_0]]72; CHECK-NEXT:    ret i1 [[C]]73;74  %dst.0 = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 075  %upper = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 276  %gep.1 = getelementptr inbounds i32, ptr %dst.0, i64 177  %c = icmp sge ptr %gep.1, %dst.078  ret i1 %c79}80 81define i1 @test_inner_gep_multiple_indices_ult_false_all_inbounds(ptr %dst) {82; CHECK-LABEL: @test_inner_gep_multiple_indices_ult_false_all_inbounds(83; CHECK-NEXT:  entry:84; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST:%.*]], i64 0, i64 085; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST]], i64 0, i64 286; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr inbounds i32, ptr [[DST_0]], i64 287; CHECK-NEXT:    [[C:%.*]] = icmp slt ptr [[GEP_1]], [[UPPER]]88; CHECK-NEXT:    ret i1 [[C]]89;90entry:91  %dst.0 = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 092  %upper = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 293  %gep.1 = getelementptr inbounds i32, ptr %dst.0, i64 294  %c = icmp slt ptr %gep.1, %upper95  ret i1 %c96}97 98define i1 @test_inner_gep_multiple_indices_uge_true_all_inbounds_2(ptr %dst) {99; CHECK-LABEL: @test_inner_gep_multiple_indices_uge_true_all_inbounds_2(100; CHECK-NEXT:  entry:101; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST:%.*]], i64 0, i64 0102; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST]], i64 0, i64 2103; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr inbounds i32, ptr [[DST_0]], i64 2104; CHECK-NEXT:    [[C:%.*]] = icmp sge ptr [[GEP_1]], [[DST_0]]105; CHECK-NEXT:    ret i1 [[C]]106;107entry:108  %dst.0 = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 0109  %upper = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 2110  %gep.1 = getelementptr inbounds i32, ptr %dst.0, i64 2111  %c = icmp sge ptr %gep.1, %dst.0112  ret i1 %c113}114 115define i1 @test_inner_gep_multiple_indices_ult_true_inc_gep_all_inbounds_overflow(ptr %dst) {116; CHECK-LABEL: @test_inner_gep_multiple_indices_ult_true_inc_gep_all_inbounds_overflow(117; CHECK-NEXT:  entry:118; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST:%.*]], i64 0, i64 0119; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST]], i64 0, i64 6120; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr i32, ptr [[DST_0]], i64 2121; CHECK-NEXT:    [[C:%.*]] = icmp slt ptr [[GEP_1]], [[UPPER]]122; CHECK-NEXT:    ret i1 [[C]]123;124entry:125  %dst.0 = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 0126  %upper = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 6127  %gep.1 = getelementptr i32, ptr %dst.0, i64 2128  %c = icmp slt ptr %gep.1, %upper129  ret i1 %c130}131 132define i1 @test_inner_gep_multiple_indices_ult_true_inc_gep_not_inbounds(ptr %dst) {133; CHECK-LABEL: @test_inner_gep_multiple_indices_ult_true_inc_gep_not_inbounds(134; CHECK-NEXT:  entry:135; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST:%.*]], i64 0, i64 0136; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST]], i64 0, i64 2137; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr i32, ptr [[DST_0]], i64 1138; CHECK-NEXT:    [[C:%.*]] = icmp slt ptr [[GEP_1]], [[UPPER]]139; CHECK-NEXT:    ret i1 [[C]]140;141entry:142  %dst.0 = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 0143  %upper = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 2144  %gep.1 = getelementptr i32, ptr %dst.0, i64 1145  %c = icmp slt ptr %gep.1, %upper146  ret i1 %c147}148 149define i1 @test_inner_gep_multiple_indices_uge_true_inc_gep_not_inbounds(ptr %dst) {150; CHECK-LABEL: @test_inner_gep_multiple_indices_uge_true_inc_gep_not_inbounds(151; CHECK-NEXT:  entry:152; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST:%.*]], i64 0, i64 0153; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST]], i64 0, i64 2154; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr i32, ptr [[DST_0]], i64 1155; CHECK-NEXT:    [[C:%.*]] = icmp slt ptr [[GEP_1]], [[UPPER]]156; CHECK-NEXT:    ret i1 [[C]]157;158entry:159  %dst.0 = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 0160  %upper = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 2161  %gep.1 = getelementptr i32, ptr %dst.0, i64 1162  %c = icmp slt ptr %gep.1, %upper163  ret i1 %c164}165 166define i1 @test_inner_gep_multiple_indices_ult_false_inc_gep_not_inbounds(ptr %dst) {167; CHECK-LABEL: @test_inner_gep_multiple_indices_ult_false_inc_gep_not_inbounds(168; CHECK-NEXT:  entry:169; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST:%.*]], i64 0, i64 0170; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST]], i64 0, i64 2171; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr i32, ptr [[DST_0]], i64 2172; CHECK-NEXT:    [[C:%.*]] = icmp slt ptr [[GEP_1]], [[UPPER]]173; CHECK-NEXT:    ret i1 [[C]]174;175entry:176  %dst.0 = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 0177  %upper = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 2178  %gep.1 = getelementptr i32, ptr %dst.0, i64 2179  %c = icmp slt ptr %gep.1, %upper180  ret i1 %c181}182 183define i1 @test_inner_gep_multiple_indices_ult_true_inc_gep_not_inbounds_overflow(ptr %dst) {184; CHECK-LABEL: @test_inner_gep_multiple_indices_ult_true_inc_gep_not_inbounds_overflow(185; CHECK-NEXT:  entry:186; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST:%.*]], i64 0, i64 0187; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST]], i64 0, i64 5188; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr i32, ptr [[DST_0]], i64 2189; CHECK-NEXT:    [[C:%.*]] = icmp slt ptr [[GEP_1]], [[UPPER]]190; CHECK-NEXT:    ret i1 [[C]]191;192entry:193  %dst.0 = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 0194  %upper = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 5195  %gep.1 = getelementptr i32, ptr %dst.0, i64 2196  %c = icmp slt ptr %gep.1, %upper197  ret i1 %c198}199 200define i1 @test_inner_gep_multi_index(ptr %dst) {201; CHECK-LABEL: @test_inner_gep_multi_index(202; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds ptr, ptr [[DST:%.*]], i64 0203; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds ptr, ptr [[DST]], i64 2204; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST_0]], i64 1, i64 1205; CHECK-NEXT:    [[C_1:%.*]] = icmp slt ptr [[GEP_1]], [[UPPER]]206; CHECK-NEXT:    ret i1 [[C_1]]207;208  %dst.0 = getelementptr inbounds ptr, ptr %dst, i64 0209  %upper = getelementptr inbounds ptr, ptr %dst, i64 2210  %gep.1 = getelementptr inbounds [2 x i32] , ptr %dst.0, i64 1, i64 1211  %c.1 = icmp slt ptr %gep.1, %upper212  ret i1 %c.1213}214 215define i1 @test_inner_gep_multi_index_outer_gep_last_index_no_overflow_all_inbounds(ptr %dst) {216; CHECK-LABEL: @test_inner_gep_multi_index_outer_gep_last_index_no_overflow_all_inbounds(217; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST:%.*]], i64 0, i64 0218; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds ptr, ptr [[DST]], i64 2219; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST_0]], i64 1, i64 1220; CHECK-NEXT:    [[C_1:%.*]] = icmp slt ptr [[GEP_1]], [[UPPER]]221; CHECK-NEXT:    ret i1 [[C_1]]222;223  %dst.0 = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 0224  %upper = getelementptr inbounds ptr, ptr %dst, i64 2225  %gep.1 = getelementptr inbounds [2 x i32] , ptr %dst.0, i64 1, i64 1226  %c.1 = icmp slt ptr %gep.1, %upper227  ret i1 %c.1228}229 230define i1 @test_inner_gep_multi_index_no_overflow_all_inbounds_1(ptr %dst) {231; CHECK-LABEL: @test_inner_gep_multi_index_no_overflow_all_inbounds_1(232; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST:%.*]], i64 0, i64 1233; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds i32, ptr [[DST]], i64 2234; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr inbounds i32, ptr [[DST_0]], i64 1235; CHECK-NEXT:    [[C_1:%.*]] = icmp slt ptr [[GEP_1]], [[UPPER]]236; CHECK-NEXT:    ret i1 [[C_1]]237;238  %dst.0 = getelementptr inbounds [2 x i32], ptr %dst, i64 0, i64 1239  %upper = getelementptr inbounds i32, ptr %dst, i64 2240  %gep.1 = getelementptr inbounds i32, ptr %dst.0, i64 1241  %c.1 = icmp slt ptr %gep.1, %upper242  ret i1 %c.1243}244 245define i1 @test_inner_gep_multi_index_no_overflow_all_inbounds_2(ptr %dst) {246; CHECK-LABEL: @test_inner_gep_multi_index_no_overflow_all_inbounds_2(247; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST:%.*]], i64 1, i64 0248; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds i32, ptr [[DST]], i64 2249; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr inbounds i32, ptr [[DST_0]], i64 1250; CHECK-NEXT:    [[C_1:%.*]] = icmp slt ptr [[GEP_1]], [[UPPER]]251; CHECK-NEXT:    ret i1 [[C_1]]252;253  %dst.0 = getelementptr inbounds [2 x i32], ptr %dst, i64 1, i64 0254  %upper = getelementptr inbounds i32, ptr %dst, i64 2255  %gep.1 = getelementptr inbounds i32, ptr %dst.0, i64 1256  %c.1 = icmp slt ptr %gep.1, %upper257  ret i1 %c.1258}259 260define i1 @test_inner_gep_multi_index_no_overflow_all_inbounds_3(ptr %dst) {261; CHECK-LABEL: @test_inner_gep_multi_index_no_overflow_all_inbounds_3(262; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST:%.*]], i64 1, i64 0263; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds i32, ptr [[DST]], i64 3264; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr inbounds i32, ptr [[DST_0]], i64 1265; CHECK-NEXT:    [[C_1:%.*]] = icmp slt ptr [[GEP_1]], [[UPPER]]266; CHECK-NEXT:    ret i1 [[C_1]]267;268  %dst.0 = getelementptr inbounds [2 x i32], ptr %dst, i64 1, i64 0269  %upper = getelementptr inbounds i32, ptr %dst, i64 3270  %gep.1 = getelementptr inbounds i32, ptr %dst.0, i64 1271  %c.1 = icmp slt ptr %gep.1, %upper272  ret i1 %c.1273}274 275define i1 @test_inner_gep_multi_index_no_overflow_all_inbounds_4(ptr %dst) {276; CHECK-LABEL: @test_inner_gep_multi_index_no_overflow_all_inbounds_4(277; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST:%.*]], i64 1, i64 0278; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds i32, ptr [[DST]], i64 4279; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr inbounds i32, ptr [[DST_0]], i64 1280; CHECK-NEXT:    [[C_1:%.*]] = icmp slt ptr [[GEP_1]], [[UPPER]]281; CHECK-NEXT:    ret i1 [[C_1]]282;283  %dst.0 = getelementptr inbounds [2 x i32], ptr %dst, i64 1, i64 0284  %upper = getelementptr inbounds i32, ptr %dst, i64 4285  %gep.1 = getelementptr inbounds i32, ptr %dst.0, i64 1286  %c.1 = icmp slt ptr %gep.1, %upper287  ret i1 %c.1288}289 290define i1 @test_inner_gep_multi_index_no_overflow_all_inbounds_5(i64 %off, ptr %dst) {291; CHECK-LABEL: @test_inner_gep_multi_index_no_overflow_all_inbounds_5(292; CHECK-NEXT:    [[OFF_ULT:%.*]] = icmp sle i64 [[OFF:%.*]], 2293; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST:%.*]], i64 2, i64 0294; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds i32, ptr [[DST]], i64 5295; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr inbounds i32, ptr [[DST_0]], i64 1296; CHECK-NEXT:    [[C_1:%.*]] = icmp sle ptr [[GEP_1]], [[UPPER]]297; CHECK-NEXT:    ret i1 [[C_1]]298;299  %off.ult = icmp sle i64 %off, 2300  %dst.0 = getelementptr inbounds [2 x i32], ptr %dst, i64 2, i64 0301  %upper = getelementptr inbounds i32, ptr %dst, i64 5302  %gep.1 = getelementptr inbounds i32, ptr %dst.0, i64 1303  %c.1 = icmp sle ptr %gep.1, %upper304  ret i1 %c.1305}306 307define i1 @test_inner_gep_multi_index_no_overflow_all_inbounds_6(i64 %off, ptr %dst) {308; CHECK-LABEL: @test_inner_gep_multi_index_no_overflow_all_inbounds_6(309; CHECK-NEXT:    [[OFF_ULT:%.*]] = icmp sle i64 [[OFF:%.*]], 2310; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST:%.*]], i64 2, i64 0311; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds i32, ptr [[DST]], i64 5312; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr inbounds i32, ptr [[DST_0]], i64 1313; CHECK-NEXT:    [[C_1:%.*]] = icmp slt ptr [[GEP_1]], [[UPPER]]314; CHECK-NEXT:    ret i1 [[C_1]]315;316  %off.ult = icmp sle i64 %off, 2317  %dst.0 = getelementptr inbounds [2 x i32], ptr %dst, i64 2, i64 0318  %upper = getelementptr inbounds i32, ptr %dst, i64 5319  %gep.1 = getelementptr inbounds i32, ptr %dst.0, i64 1320  %c.1 = icmp slt ptr %gep.1, %upper321  ret i1 %c.1322}323 324define i1 @test_inner_gep_multi_index_no_overflow_all_inbounds_7(i64 %off, ptr %dst) {325; CHECK-LABEL: @test_inner_gep_multi_index_no_overflow_all_inbounds_7(326; CHECK-NEXT:    [[OFF_ULT:%.*]] = icmp sle i64 [[OFF:%.*]], 2327; CHECK-NEXT:    [[DST_0:%.*]] = getelementptr inbounds [2 x i32], ptr [[DST:%.*]], i64 2, i64 0328; CHECK-NEXT:    [[UPPER:%.*]] = getelementptr inbounds i32, ptr [[DST]], i64 [[OFF]]329; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr inbounds i32, ptr [[DST_0]], i64 1330; CHECK-NEXT:    [[C_1:%.*]] = icmp slt ptr [[GEP_1]], [[UPPER]]331; CHECK-NEXT:    ret i1 [[C_1]]332;333  %off.ult = icmp sle i64 %off, 2334  %dst.0 = getelementptr inbounds [2 x i32], ptr %dst, i64 2, i64 0335  %upper = getelementptr inbounds i32, ptr %dst, i64 %off336  %gep.1 = getelementptr inbounds i32, ptr %dst.0, i64 1337  %c.1 = icmp slt ptr %gep.1, %upper338  ret i1 %c.1339}340