brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · 9e3d63b Raw
96 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_ult() {5; CHECK-LABEL: @test_ult(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]], true10; CHECK-NEXT:    ret i1 [[RES_3]]11;12entry:13  %t.0 = icmp ult i8 10, 1114  %f.0 = icmp ult i8 10, 1015  %res.1 = xor i1 %t.0, %f.016  %f.1 = icmp ult i8 10, 917  %res.2 = xor i1 %res.1, %f.118  %t.1 = icmp ult i8 10, -1019  %res.3 = xor i1 %res.2, %t.120  ret i1 %res.321}22 23; Test cases where lhs - rhs results in constant offset.24define i1 @test_ult_gep_1(ptr %base) {25; CHECK-LABEL: @test_ult_gep_1(26; CHECK-NEXT:  entry:27; CHECK-NEXT:    [[GEP_1:%.*]] = getelementptr inbounds i8, ptr [[BASE:%.*]], i8 128; CHECK-NEXT:    [[GEP_0:%.*]] = getelementptr inbounds i8, ptr [[BASE]], i8 029; CHECK-NEXT:    [[RES_1:%.*]] = xor i1 true, false30; CHECK-NEXT:    [[RES_2:%.*]] = xor i1 [[RES_1]], false31; CHECK-NEXT:    ret i1 [[RES_2]]32;33entry:34  %gep.1 = getelementptr inbounds i8, ptr %base, i8 135  %t.0 = icmp ult ptr %base, %gep.136  %gep.0 = getelementptr inbounds i8, ptr %base, i8 037  %f.0 = icmp ult ptr %base, %gep.038  %res.1 = xor i1 %t.0, %f.039  %f.1 = icmp ult ptr %gep.1, %base40  %res.2 = xor i1 %res.1, %f.141  ret i1 %res.242}43 44define i1 @test_ult_gep_2(ptr %base) {45; CHECK-LABEL: @test_ult_gep_2(46; CHECK-NEXT:    [[GEP_SUB_1:%.*]] = getelementptr inbounds i8, ptr [[BASE:%.*]], i8 -147; CHECK-NEXT:    ret i1 false48;49  %gep.sub.1 = getelementptr inbounds i8, ptr %base, i8 -150  %c.1 = icmp ult ptr %base, %gep.sub.151  ret i1 %c.152}53 54define i1 @test_ult_gep_3(ptr %base) {55; CHECK-LABEL: @test_ult_gep_3(56; CHECK-NEXT:    [[GEP_1_NOINBOUNDS:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i8 157; CHECK-NEXT:    [[C_1:%.*]] = icmp ult ptr [[BASE]], [[GEP_1_NOINBOUNDS]]58; CHECK-NEXT:    ret i1 [[C_1]]59;60  %gep.1.noinbounds = getelementptr i8, ptr %base, i8 161  %c.1 = icmp ult ptr %base, %gep.1.noinbounds62  ret i1 %c.163}64 65define i1 @test_eq() {66; CHECK-LABEL: @test_eq(67; CHECK-NEXT:  entry:68; CHECK-NEXT:    [[RES_1:%.*]] = xor i1 true, false69; CHECK-NEXT:    [[RES_2:%.*]] = xor i1 [[RES_1]], false70; CHECK-NEXT:    ret i1 [[RES_2]]71;72entry:73  %f.0 = icmp eq i8 10, 1174  %t.0 = icmp eq i8 10, 1075  %res.1 = xor i1 %t.0, %f.076  %f.1 = icmp eq i8 10, 977  %res.2 = xor i1 %res.1, %f.178  ret i1 %res.279}80 81define i1 @test_ne() {82; CHECK-LABEL: @test_ne(83; CHECK-NEXT:  entry:84; CHECK-NEXT:    [[RES_1:%.*]] = xor i1 true, false85; CHECK-NEXT:    [[RES_2:%.*]] = xor i1 [[RES_1]], true86; CHECK-NEXT:    ret i1 [[RES_2]]87;88entry:89  %t.0 = icmp ne i8 10, 1190  %f.0 = icmp ne i8 10, 1091  %res.1 = xor i1 %t.0, %f.092  %t.1 = icmp ne i8 10, 993  %res.2 = xor i1 %res.1, %t.194  ret i1 %res.295}96