brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · e87439f Raw
68 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 @use(i1)5 6; Make sure we do not crash when trying to inject info about vector values from SCEV.7define void @test_vector_iv(i32 %x, i1 %c) {8; CHECK-LABEL: @test_vector_iv(9; CHECK-NEXT:  entry:10; CHECK-NEXT:    br i1 [[C:%.*]], label [[PRE:%.*]], label [[BB2:%.*]]11; CHECK:       pre:12; CHECK-NEXT:    [[C_1:%.*]] = icmp ule i32 [[X:%.*]], 1013; CHECK-NEXT:    br i1 [[C_1]], label [[LOOP:%.*]], label [[BB2]]14; CHECK:       loop:15; CHECK-NEXT:    [[IV:%.*]] = phi <4 x i8> [ zeroinitializer, [[PRE]] ], [ [[IV_NEXT:%.*]], [[LOOP]] ]16; CHECK-NEXT:    call void @use(i1 true)17; CHECK-NEXT:    call void @use(i1 false)18; CHECK-NEXT:    [[C_2:%.*]] = icmp ule i32 [[X]], 919; CHECK-NEXT:    call void @use(i1 [[C_2]])20; CHECK-NEXT:    [[C_3:%.*]] = icmp ugt i32 [[X]], 921; CHECK-NEXT:    call void @use(i1 [[C_3]])22; CHECK-NEXT:    [[IV_NEXT]] = add nuw nsw <4 x i8> [[IV]], splat (i8 1)23; CHECK-NEXT:    [[E:%.*]] = extractelement <4 x i8> [[IV_NEXT]], i8 224; CHECK-NEXT:    [[EC:%.*]] = icmp eq i8 [[E]], 10025; CHECK-NEXT:    br i1 [[EC]], label [[EXIT:%.*]], label [[LOOP]]26; CHECK:       exit:27; CHECK-NEXT:    call void @use(i1 true)28; CHECK-NEXT:    ret void29; CHECK:       bb2:30; CHECK-NEXT:    [[C_5:%.*]] = icmp ugt i32 [[X]], 1031; CHECK-NEXT:    call void @use(i1 [[C_5]])32; CHECK-NEXT:    ret void33;34entry:35  br i1 %c, label %pre, label %bb236 37pre:38  %c.1 = icmp ule i32 %x, 1039  br i1 %c.1, label %loop, label %bb240 41loop:42  %iv = phi <4 x i8> [ zeroinitializer, %pre ], [ %iv.next, %loop ]43  %t.1 = icmp ule i32 %x, 1044  call void @use(i1 %t.1)45  %f.1 = icmp ugt i32 %x, 1046  call void @use(i1 %f.1)47 48  %c.2 = icmp ule i32 %x, 949  call void @use(i1 %c.2)50  %c.3 = icmp ugt i32 %x, 951  call void @use(i1 %c.3)52 53  %iv.next = add nuw nsw <4 x i8> %iv, <i8 1, i8 1, i8 1, i8 1>54  %e = extractelement <4 x i8> %iv.next, i8 255  %ec = icmp eq i8 %e, 10056  br i1 %ec, label %exit, label %loop57 58exit:59  %c.4 = icmp ule i32 %x, 1060  call void @use(i1 %c.4)61  ret void62 63bb2:64  %c.5 = icmp ugt i32 %x, 1065  call void @use(i1 %c.5)66  ret void67}68