brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · 7844651 Raw
114 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=constraint-elimination -S %s | FileCheck %s3 4declare void @llvm.assume(i1)5 6define i1 @test(i8 %x, i8 %y) {7; CHECK-LABEL: @test(8; CHECK-NEXT:    [[ADD:%.*]] = add nuw nsw i8 [[X:%.*]], [[Y:%.*]]9; CHECK-NEXT:    [[CMP_0:%.*]] = icmp uge i8 [[ADD]], 1010; CHECK-NEXT:    tail call void @llvm.assume(i1 [[CMP_0]])11; CHECK-NEXT:    [[EXT:%.*]] = zext i8 [[X]] to i1612; CHECK-NEXT:    [[C_1:%.*]] = icmp uge i16 [[EXT]], 113; CHECK-NEXT:    [[RES:%.*]] = xor i1 true, [[C_1]]14; CHECK-NEXT:    ret i1 [[RES]]15;16  %add = add nuw nsw i8 %x, %y17  %cmp.0 = icmp uge i8 %add, 1018  tail call void @llvm.assume(i1 %cmp.0)19  %ext = zext i8 %x to i1620  %t.1 = icmp uge i16 %ext, 021  %c.1 = icmp uge i16 %ext, 122  %res = xor i1 %t.1, %c.123  ret i1 %res24}25 26define i1 @test2(i8 %x, i8 %y) {27; CHECK-LABEL: @test2(28; CHECK-NEXT:    [[ADD:%.*]] = add nuw nsw i8 [[X:%.*]], [[Y:%.*]]29; CHECK-NEXT:    [[CMP_0:%.*]] = icmp uge i8 [[ADD]], 030; CHECK-NEXT:    tail call void @llvm.assume(i1 [[CMP_0]])31; CHECK-NEXT:    [[EXT:%.*]] = zext i8 [[X]] to i1632; CHECK-NEXT:    [[ADD_1:%.*]] = add nuw nsw i16 [[EXT]], 133; CHECK-NEXT:    [[C_1:%.*]] = icmp uge i16 [[ADD_1]], 234; CHECK-NEXT:    [[RES_1:%.*]] = xor i1 true, [[C_1]]35; CHECK-NEXT:    [[RES_2:%.*]] = xor i1 [[RES_1]], false36; CHECK-NEXT:    [[C_2:%.*]] = icmp sge i16 [[ADD_1]], 137; CHECK-NEXT:    [[RES_3:%.*]] = xor i1 [[RES_2]], [[C_2]]38; CHECK-NEXT:    ret i1 [[RES_3]]39;40  %add = add nuw nsw i8 %x, %y41  %cmp.0 = icmp uge i8 %add, 042  tail call void @llvm.assume(i1 %cmp.0)43  %ext = zext i8 %x to i1644  %add.1 = add nuw nsw i16 %ext, 145  %t.1 = icmp uge i16 %add.1, 146  %c.1 = icmp uge i16 %add.1, 247  %f.1 = icmp ult i16 %add.1, 148  %res.1 = xor i1 %t.1, %c.149  %res.2 = xor i1 %res.1, %f.150  %c.2 = icmp sge i16 %add.1, 151  %res.3 = xor i1 %res.2, %c.252  ret i1 %res.353}54 55define i1 @gep_zext_idx(ptr %p, i8 %cnt, i8 %off) {56; CHECK-LABEL: @gep_zext_idx(57; CHECK-NEXT:  entry:58; CHECK-NEXT:    [[ADD:%.*]] = add nuw nsw i8 [[CNT:%.*]], [[OFF:%.*]]59; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[ADD]], 1060; CHECK-NEXT:    tail call void @llvm.assume(i1 [[CMP]])61; CHECK-NEXT:    [[EXT:%.*]] = zext i8 [[CNT]] to i1662; CHECK-NEXT:    [[ADD_PTR:%.*]] = getelementptr inbounds i32, ptr [[P:%.*]], i16 [[EXT]]63; CHECK-NEXT:    [[GEP_11:%.*]] = getelementptr inbounds i32, ptr [[P]], i16 1164; CHECK-NEXT:    [[C_1:%.*]] = icmp ugt ptr [[ADD_PTR]], [[GEP_11]]65; CHECK-NEXT:    [[RES_1:%.*]] = xor i1 true, false66; CHECK-NEXT:    [[RES_2:%.*]] = xor i1 [[RES_1]], [[C_1]]67; CHECK-NEXT:    ret i1 [[RES_2]]68;69entry:70  %add = add nuw nsw i8 %cnt, %off71  %cmp = icmp ugt i8 %add, 1072  tail call void @llvm.assume(i1 %cmp)73  %ext = zext i8 %cnt to i1674  %add.ptr = getelementptr inbounds i32, ptr %p, i16 %ext75  %t.1 = icmp uge ptr %add.ptr, %p76  %f.1 = icmp ult ptr %add.ptr, %p77  %gep.11 = getelementptr inbounds i32, ptr %p, i16 1178  %c.1 = icmp ugt ptr %add.ptr, %gep.1179  %res.1 = xor i1 %t.1, %f.180  %res.2 = xor i1 %res.1, %c.181  ret i1 %res.282}83 84define i1 @gep_zext_idx_adds(ptr %p, i8 %cnt, i8 %off) {85; CHECK-LABEL: @gep_zext_idx_adds(86; CHECK-NEXT:  entry:87; CHECK-NEXT:    [[ADD:%.*]] = add nuw nsw i8 [[CNT:%.*]], [[OFF:%.*]]88; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[ADD]], 1089; CHECK-NEXT:    tail call void @llvm.assume(i1 [[CMP]])90; CHECK-NEXT:    [[EXT:%.*]] = zext i8 [[CNT]] to i1691; CHECK-NEXT:    [[EXT_1:%.*]] = add nuw nsw i16 [[EXT]], 192; CHECK-NEXT:    [[ADD_PTR:%.*]] = getelementptr inbounds i32, ptr [[P:%.*]], i16 [[EXT_1]]93; CHECK-NEXT:    [[GEP_11:%.*]] = getelementptr inbounds i32, ptr [[P]], i16 1194; CHECK-NEXT:    [[C_1:%.*]] = icmp uge ptr [[ADD_PTR]], [[GEP_11]]95; CHECK-NEXT:    [[RES_1:%.*]] = xor i1 true, false96; CHECK-NEXT:    [[RES_2:%.*]] = xor i1 [[RES_1]], [[C_1]]97; CHECK-NEXT:    ret i1 [[RES_2]]98;99entry:100  %add = add nuw nsw i8 %cnt, %off101  %cmp = icmp uge i8 %add, 10102  tail call void @llvm.assume(i1 %cmp)103  %ext = zext i8 %cnt to i16104  %ext.1 = add nuw nsw i16 %ext, 1105  %add.ptr = getelementptr inbounds i32, ptr %p, i16 %ext.1106  %t.1 = icmp uge ptr %add.ptr, %p107  %f.1 = icmp ult ptr %add.ptr, %p108  %gep.11 = getelementptr inbounds i32, ptr %p, i16 11109  %c.1 = icmp uge ptr %add.ptr, %gep.11110  %res.1 = xor i1 %t.1, %f.1111  %res.2 = xor i1 %res.1, %c.1112  ret i1 %res.2113}114