brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · bedc569 Raw
92 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=constraint-elimination -S %s | FileCheck %s3 4define i1 @test_slt() {5; CHECK-LABEL: @test_slt(6; CHECK-NEXT:  entry:7; CHECK-NEXT:    [[RES_1:%.*]] = xor i1 true, false8; CHECK-NEXT:    [[RES_2:%.*]] = xor i1 [[RES_1]], false9; CHECK-NEXT:    [[RES_3:%.*]] = xor i1 [[RES_2]], false10; CHECK-NEXT:    [[RES_4:%.*]] = xor i1 [[RES_3]], true11; CHECK-NEXT:    ret i1 [[RES_4]]12;13entry:14  %t.0 = icmp slt i8 10, 1115  %f.0 = icmp slt i8 10, 1016  %res.1 = xor i1 %t.0, %f.017  %f.1 = icmp slt i8 10, 918  %res.2 = xor i1 %res.1, %f.119  %f.2 = icmp slt i8 10, -1020  %res.3 = xor i1 %res.2, %f.221  %t.1 = icmp slt i8 10, 1122  %res.4 = xor i1 %res.3, %t.123  ret i1 %res.424}25 26define i1 @test_sgt() {27; CHECK-LABEL: @test_sgt(28; CHECK-NEXT:  entry:29; CHECK-NEXT:    [[RES_1:%.*]] = xor i1 true, false30; CHECK-NEXT:    [[RES_2:%.*]] = xor i1 [[RES_1]], false31; CHECK-NEXT:    [[RES_3:%.*]] = xor i1 [[RES_2]], false32; CHECK-NEXT:    [[RES_4:%.*]] = xor i1 [[RES_3]], true33; CHECK-NEXT:    ret i1 [[RES_4]]34;35entry:36  %t.0 = icmp sgt i8 11, 1037  %f.0 = icmp sgt i8 10, 1038  %res.1 = xor i1 %t.0, %f.039  %f.1 = icmp sgt i8 9, 1040  %res.2 = xor i1 %res.1, %f.141  %f.2 = icmp sgt i8 -10, 1042  %res.3 = xor i1 %res.2, %f.243  %t.1 = icmp sgt i8 -1, -244  %res.4 = xor i1 %res.3, %t.145  ret i1 %res.446}47 48; Test cases where lhs - rhs results in constant offset.49define i1 @test_slt_gep_1(ptr %base) {50; CHECK-LABEL: @test_slt_gep_1(51; CHECK-NEXT:  entry:52; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr inbounds i8, ptr [[BASE:%.*]], i8 153; CHECK-NEXT:    [[T_0:%.*]] = icmp slt ptr [[BASE]], [[GEP_1]]54; CHECK-NEXT:    [[GEP_0:%.*]] = getelementptr inbounds i8, ptr [[BASE]], i8 055; CHECK-NEXT:    [[RES_1:%.*]] = xor i1 [[T_0]], false56; CHECK-NEXT:    [[C_1:%.*]] = icmp slt ptr [[GEP_1]], [[BASE]]57; CHECK-NEXT:    [[RES_2:%.*]] = xor i1 [[RES_1]], [[C_1]]58; CHECK-NEXT:    ret i1 [[RES_2]]59;60entry:61  %gep.1 = getelementptr inbounds i8, ptr %base, i8 162  %t.0 = icmp slt ptr %base, %gep.163  %gep.0 = getelementptr inbounds i8, ptr %base, i8 064  %f.0 = icmp slt ptr %base, %gep.065  %res.1 = xor i1 %t.0, %f.066  %c.1 = icmp slt ptr %gep.1, %base67  %res.2 = xor i1 %res.1, %c.168  ret i1 %res.269}70 71define i1 @test_slt_gep_2(ptr %base) {72; CHECK-LABEL: @test_slt_gep_2(73; CHECK-NEXT:    [[GEP_SUB_1:%.*]] = getelementptr inbounds i8, ptr [[BASE:%.*]], i8 -174; CHECK-NEXT:    [[C_1:%.*]] = icmp slt ptr [[BASE]], [[GEP_SUB_1]]75; CHECK-NEXT:    ret i1 [[C_1]]76;77  %gep.sub.1 = getelementptr inbounds i8, ptr %base, i8 -178  %c.1 = icmp slt ptr %base, %gep.sub.179  ret i1 %c.180}81 82define i1 @test_slt_gep_3(ptr %base) {83; CHECK-LABEL: @test_slt_gep_3(84; CHECK-NEXT:    [[GEP_1_NOINBOUNDS:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i8 185; CHECK-NEXT:    [[C_1:%.*]] = icmp slt ptr [[BASE]], [[GEP_1_NOINBOUNDS]]86; CHECK-NEXT:    ret i1 [[C_1]]87;88  %gep.1.noinbounds = getelementptr i8, ptr %base, i8 189  %c.1 = icmp slt ptr %base, %gep.1.noinbounds90  ret i1 %c.191}92