brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.9 KiB · 49de509 Raw
219 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-apple-macosx | FileCheck %s3 4define i32 @test_01(ptr %p, i64 %len, i32 %x) {5; CHECK-LABEL: test_01:6; CHECK:       ## %bb.0: ## %entry7; CHECK-NEXT:    .p2align 48; CHECK-NEXT:  LBB0_1: ## %loop9; CHECK-NEXT:    ## =>This Inner Loop Header: Depth=110; CHECK-NEXT:    subq $1, %rsi11; CHECK-NEXT:    jb LBB0_412; CHECK-NEXT:  ## %bb.2: ## %backedge13; CHECK-NEXT:    ## in Loop: Header=BB0_1 Depth=114; CHECK-NEXT:    cmpl %edx, (%rdi,%rsi,4)15; CHECK-NEXT:    jne LBB0_116; CHECK-NEXT:  ## %bb.3: ## %failure17; CHECK-NEXT:    ud218; CHECK-NEXT:  LBB0_4: ## %exit19; CHECK-NEXT:    movl $-1, %eax20; CHECK-NEXT:    retq21entry:22  br label %loop23 24loop:                                             ; preds = %backedge, %entry25  %iv = phi i64 [ %iv.next, %backedge ], [ %len, %entry ]26  %iv.next = add nsw i64 %iv, -127  %cond_1 = icmp eq i64 %iv, 028  br i1 %cond_1, label %exit, label %backedge29 30backedge:                                         ; preds = %loop31  %addr = getelementptr inbounds i32, ptr %p, i64 %iv.next32  %loaded = load atomic i32, ptr %addr unordered, align 433  %cond_2 = icmp eq i32 %loaded, %x34  br i1 %cond_2, label %failure, label %loop35 36exit:                                             ; preds = %loop37  ret i32 -138 39failure:                                          ; preds = %backedge40  unreachable41}42 43; Similar to test_01, but we use offsetted pointer as base.44define i32 @test_01a(ptr %p, i64 %len, i32 %x) {45; CHECK-LABEL: test_01a:46; CHECK:       ## %bb.0: ## %entry47; CHECK-NEXT:    .p2align 448; CHECK-NEXT:  LBB1_1: ## %loop49; CHECK-NEXT:    ## =>This Inner Loop Header: Depth=150; CHECK-NEXT:    subq $1, %rsi51; CHECK-NEXT:    jb LBB1_452; CHECK-NEXT:  ## %bb.2: ## %backedge53; CHECK-NEXT:    ## in Loop: Header=BB1_1 Depth=154; CHECK-NEXT:    cmpl %edx, -24(%rdi,%rsi,4)55; CHECK-NEXT:    jne LBB1_156; CHECK-NEXT:  ## %bb.3: ## %failure57; CHECK-NEXT:    ud258; CHECK-NEXT:  LBB1_4: ## %exit59; CHECK-NEXT:    movl $-1, %eax60; CHECK-NEXT:    retq61entry:62  %base = getelementptr inbounds i32, ptr %p, i64 -663  br label %loop64 65loop:                                             ; preds = %backedge, %entry66  %iv = phi i64 [ %iv.next, %backedge ], [ %len, %entry ]67  %iv.next = add nsw i64 %iv, -168  %cond_1 = icmp eq i64 %iv, 069  br i1 %cond_1, label %exit, label %backedge70 71backedge:                                         ; preds = %loop72  %addr = getelementptr inbounds i32, ptr %base, i64 %iv.next73  %loaded = load atomic i32, ptr %addr unordered, align 474  %cond_2 = icmp eq i32 %loaded, %x75  br i1 %cond_2, label %failure, label %loop76 77exit:                                             ; preds = %loop78  ret i32 -179 80failure:                                          ; preds = %backedge81  unreachable82}83 84define i32 @test_02(ptr %p, i64 %len, i32 %x) {85; CHECK-LABEL: test_02:86; CHECK:       ## %bb.0: ## %entry87; CHECK-NEXT:    .p2align 488; CHECK-NEXT:  LBB2_1: ## %loop89; CHECK-NEXT:    ## =>This Inner Loop Header: Depth=190; CHECK-NEXT:    subq $1, %rsi91; CHECK-NEXT:    jb LBB2_492; CHECK-NEXT:  ## %bb.2: ## %backedge93; CHECK-NEXT:    ## in Loop: Header=BB2_1 Depth=194; CHECK-NEXT:    cmpl %edx, (%rdi,%rsi,4)95; CHECK-NEXT:    jne LBB2_196; CHECK-NEXT:  ## %bb.3: ## %failure97; CHECK-NEXT:    ud298; CHECK-NEXT:  LBB2_4: ## %exit99; CHECK-NEXT:    movl $-1, %eax100; CHECK-NEXT:    retq101entry:102  %start = add i64 %len, -1103  br label %loop104 105loop:                                             ; preds = %backedge, %entry106  %iv = phi i64 [ %iv.next, %backedge ], [ %start, %entry ]107  %iv.next = add nsw i64 %iv, -1108  %iv.offset = add i64 %iv, 1109  %iv.next.offset = add i64 %iv.next, 1110  %cond_1 = icmp eq i64 %iv.offset, 0111  br i1 %cond_1, label %exit, label %backedge112 113backedge:                                         ; preds = %loop114  %addr = getelementptr inbounds i32, ptr %p, i64 %iv.next.offset115  %loaded = load atomic i32, ptr %addr unordered, align 4116  %cond_2 = icmp eq i32 %loaded, %x117  br i1 %cond_2, label %failure, label %loop118 119exit:                                             ; preds = %loop120  ret i32 -1121 122failure:                                          ; preds = %backedge123  unreachable124}125 126define i32 @test_03(ptr %p, i64 %len, i32 %x) {127; CHECK-LABEL: test_03:128; CHECK:       ## %bb.0: ## %entry129; CHECK-NEXT:    .p2align 4130; CHECK-NEXT:  LBB3_1: ## %loop131; CHECK-NEXT:    ## =>This Inner Loop Header: Depth=1132; CHECK-NEXT:    subq $1, %rsi133; CHECK-NEXT:    jb LBB3_4134; CHECK-NEXT:  ## %bb.2: ## %backedge135; CHECK-NEXT:    ## in Loop: Header=BB3_1 Depth=1136; CHECK-NEXT:    cmpl %edx, (%rdi,%rsi,4)137; CHECK-NEXT:    jne LBB3_1138; CHECK-NEXT:  ## %bb.3: ## %failure139; CHECK-NEXT:    ud2140; CHECK-NEXT:  LBB3_4: ## %exit141; CHECK-NEXT:    movl $-1, %eax142; CHECK-NEXT:    retq143entry:144  %start = add i64 %len, -100145  br label %loop146 147loop:                                             ; preds = %backedge, %entry148  %iv = phi i64 [ %iv.next, %backedge ], [ %start, %entry ]149  %iv.next = add nsw i64 %iv, -1150  %iv.offset = add i64 %iv, 100151  %iv.next.offset = add i64 %iv.next, 100152  %cond_1 = icmp eq i64 %iv.offset, 0153  br i1 %cond_1, label %exit, label %backedge154 155backedge:                                         ; preds = %loop156  %addr = getelementptr inbounds i32, ptr %p, i64 %iv.next.offset157  %loaded = load atomic i32, ptr %addr unordered, align 4158  %cond_2 = icmp eq i32 %loaded, %x159  br i1 %cond_2, label %failure, label %loop160 161exit:                                             ; preds = %loop162  ret i32 -1163 164failure:                                          ; preds = %backedge165  unreachable166}167 168define void @test_04(i32 %arg) {169; CHECK-LABEL: test_04:170; CHECK:       ## %bb.0: ## %bb171; CHECK-NEXT:    ud2172bb:173  br label %bb1174 175bb1:                                              ; preds = %bb10, %bb176  %tmp = phi i64 [ 1, %bb ], [ %tmp2, %bb10 ]177  %tmp2 = add nuw nsw i64 %tmp, 1178  br i1 poison, label %bb21, label %bb7179 180bb7:                                              ; preds = %bb1181  %tmp8 = add nsw i64 %tmp, -1182  %tmp9 = getelementptr inbounds i32, ptr addrspace(1) undef, i64 %tmp8183  store atomic i32 undef, ptr addrspace(1) %tmp9 unordered, align 4184  br label %bb11185 186bb10:                                             ; preds = %bb16187  br label %bb1188 189bb11:                                             ; preds = %bb16, %bb7190  switch i32 %arg, label %bb19 [191    i32 0, label %bb17192    i32 1, label %bb16193    i32 2, label %bb15194    i32 3, label %bb14195    i32 4, label %bb12196  ]197 198bb12:                                             ; preds = %bb11199  unreachable200 201bb14:                                             ; preds = %bb11202  unreachable203 204bb15:                                             ; preds = %bb11205  unreachable206 207bb16:                                             ; preds = %bb11208  br i1 poison, label %bb10, label %bb11209 210bb17:                                             ; preds = %bb11211  unreachable212 213bb19:                                             ; preds = %bb11214  unreachable215 216bb21:                                             ; preds = %bb1217  unreachable218}219