xref: /llvm-project/llvm/test/CodeGen/AArch64/machine-sink-cache-invalidation.ll (revision 4e0bd3fab4b6a54342c9bed14f205895da3cf0d9)
17510f32fSAmara Emerson; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3
29d353878SMomchil Velikov; RUN: llc < %s -mtriple=aarch64 -aarch64-enable-sink-fold=true -global-isel | FileCheck %s
37510f32fSAmara Emerson
47510f32fSAmara Emersontarget datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
57510f32fSAmara Emersontarget triple = "arm64-apple-macosx13.5.0"
67510f32fSAmara Emerson
77510f32fSAmara Emerson; Check we don't crash here with a use-after-free.
87510f32fSAmara Emerson
97510f32fSAmara Emersondefine i32 @nsis_BZ2_bzDecompress(ptr %pos.i, i1 %cmp661.not3117.i, i1 %exitcond.not.i) {
107510f32fSAmara Emerson; CHECK-LABEL: nsis_BZ2_bzDecompress:
117510f32fSAmara Emerson; CHECK:       // %bb.0: // %entry
12*4e0bd3faSPengcheng Wang; CHECK-NEXT:    mov x8, xzr
137510f32fSAmara Emerson; CHECK-NEXT:    b .LBB0_2
147510f32fSAmara Emerson; CHECK-NEXT:  .LBB0_1: // %while.end671.i
157510f32fSAmara Emerson; CHECK-NEXT:    // in Loop: Header=BB0_2 Depth=1
16*4e0bd3faSPengcheng Wang; CHECK-NEXT:    strb w9, [x0]
177510f32fSAmara Emerson; CHECK-NEXT:    tbnz w2, #0, .LBB0_4
187510f32fSAmara Emerson; CHECK-NEXT:  .LBB0_2: // %for.body653.i
197510f32fSAmara Emerson; CHECK-NEXT:    // =>This Inner Loop Header: Depth=1
20*4e0bd3faSPengcheng Wang; CHECK-NEXT:    ldrb w9, [x0]
217510f32fSAmara Emerson; CHECK-NEXT:    tbnz w1, #0, .LBB0_1
227510f32fSAmara Emerson; CHECK-NEXT:  // %bb.3: // %while.body663.i
237510f32fSAmara Emerson; CHECK-NEXT:    // in Loop: Header=BB0_2 Depth=1
24*4e0bd3faSPengcheng Wang; CHECK-NEXT:    ldrb w10, [x8]
25*4e0bd3faSPengcheng Wang; CHECK-NEXT:    strb wzr, [x0, x10]
267510f32fSAmara Emerson; CHECK-NEXT:    b .LBB0_1
277510f32fSAmara Emerson; CHECK-NEXT:  .LBB0_4: // %for.end677.i
287510f32fSAmara Emerson; CHECK-NEXT:    mov w0, wzr
297510f32fSAmara Emerson; CHECK-NEXT:    ret
307510f32fSAmara Emersonentry:
317510f32fSAmara Emerson  br label %for.body653.i
327510f32fSAmara Emerson
337510f32fSAmara Emersonfor.body653.i:                                    ; preds = %while.end671.i, %entry
347510f32fSAmara Emerson  %0 = load i8, ptr null, align 1
357510f32fSAmara Emerson  %idxprom657.i2 = zext i8 %0 to i64
367510f32fSAmara Emerson  %1 = load i8, ptr %pos.i, align 1
377510f32fSAmara Emerson  br i1 %cmp661.not3117.i, label %while.end671.i, label %while.body663.i
387510f32fSAmara Emerson
397510f32fSAmara Emersonwhile.body663.i:                                  ; preds = %for.body653.i
407510f32fSAmara Emerson  %arrayidx669.i = getelementptr [6 x i8], ptr %pos.i, i64 0, i64 %idxprom657.i2
417510f32fSAmara Emerson  store i8 0, ptr %arrayidx669.i, align 1
427510f32fSAmara Emerson  br label %while.end671.i
437510f32fSAmara Emerson
447510f32fSAmara Emersonwhile.end671.i:                                   ; preds = %while.body663.i, %for.body653.i
457510f32fSAmara Emerson  store i8 %1, ptr %pos.i, align 1
467510f32fSAmara Emerson  br i1 %exitcond.not.i, label %for.end677.i, label %for.body653.i
477510f32fSAmara Emerson
487510f32fSAmara Emersonfor.end677.i:                                     ; preds = %while.end671.i
497510f32fSAmara Emerson  ret i32 0
507510f32fSAmara Emerson}
517510f32fSAmara Emerson
52