brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.4 KiB · 2521f3e Raw
88 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=arm64-unknown-unknown -mcpu=cyclone -pre-RA-sched=list-hybrid < %s | FileCheck %s3; rdar://102322524; Prevent LSR of doing poor choice that cannot be folded in addressing mode5 6; Remove the -pre-RA-sched=list-hybrid option after fixing:7; <rdar://problem/12702735> [ARM64][coalescer] need better register8; coalescing for simple unit tests.9 10define i32 @test_inttoptr() nounwind {11; CHECK-LABEL: test_inttoptr:12; CHECK:       // %bb.0: // %entry13; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill14; CHECK-NEXT:    mov w8, #1288 // =0x50815; CHECK-NEXT:    mov x9, #4294967296 // =0x10000000016; CHECK-NEXT:    mov x10, #6442450944 // =0x18000000017; CHECK-NEXT:  .LBB0_1: // %while.body18; CHECK-NEXT:    // =>This Inner Loop Header: Depth=119; CHECK-NEXT:    ldr x11, [x9], #820; CHECK-NEXT:    str x11, [x10], #821; CHECK-NEXT:    subs x8, x8, #822; CHECK-NEXT:    b.pl .LBB0_123; CHECK-NEXT:  // %bb.2: // %while.end24; CHECK-NEXT:    mov x8, #6442450944 // =0x18000000025; CHECK-NEXT:    blr x826; CHECK-NEXT:    mov w0, #0 // =0x027; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload28; CHECK-NEXT:    ret29entry:30  br label %while.body31 32while.body:                                       ; preds = %while.body, %entry33  %len.06 = phi i64 [ 1288, %entry ], [ %sub, %while.body ]34  %pDst.05 = phi ptr [ inttoptr (i64 6442450944 to ptr), %entry ], [ %incdec.ptr1, %while.body ]35  %pSrc.04 = phi ptr [ inttoptr (i64 4294967296 to ptr), %entry ], [ %incdec.ptr, %while.body ]36  %incdec.ptr = getelementptr inbounds i64, ptr %pSrc.04, i64 137  %tmp = load volatile i64, ptr %pSrc.04, align 838  %incdec.ptr1 = getelementptr inbounds i64, ptr %pDst.05, i64 139  store volatile i64 %tmp, ptr %pDst.05, align 840  %sub = add i64 %len.06, -841  %cmp = icmp sgt i64 %sub, -142  br i1 %cmp, label %while.body, label %while.end43 44while.end:                                        ; preds = %while.body45  tail call void inttoptr (i64 6442450944 to ptr)() nounwind46  ret i32 047}48 49@g1 = external dso_local global i850@g2 = external dso_local global i851 52define ptr @test_globals() nounwind {53; CHECK-LABEL: test_globals:54; CHECK:       // %bb.0: // %entry55; CHECK-NEXT:    mov w8, #1288 // =0x50856; CHECK-NEXT:    adrp x9, g257; CHECK-NEXT:    add x9, x9, :lo12:g258; CHECK-NEXT:    adrp x10, g159; CHECK-NEXT:    add x10, x10, :lo12:g160; CHECK-NEXT:  .LBB1_1: // %while.body61; CHECK-NEXT:    // =>This Inner Loop Header: Depth=162; CHECK-NEXT:    ldr x11, [x9], #863; CHECK-NEXT:    str x11, [x10], #864; CHECK-NEXT:    subs x8, x8, #865; CHECK-NEXT:    b.pl .LBB1_166; CHECK-NEXT:  // %bb.2: // %while.end67; CHECK-NEXT:    adrp x0, g168; CHECK-NEXT:    add x0, x0, :lo12:g169; CHECK-NEXT:    ret70entry:71  br label %while.body72 73while.body:                                       ; preds = %while.body, %entry74  %len.06 = phi i64 [ 1288, %entry ], [ %sub, %while.body ]75  %pDst.05 = phi ptr [ @g1, %entry ], [ %incdec.ptr1, %while.body ]76  %pSrc.04 = phi ptr [ @g2, %entry ], [ %incdec.ptr, %while.body ]77  %incdec.ptr = getelementptr inbounds i64, ptr %pSrc.04, i64 178  %tmp = load volatile i64, ptr %pSrc.04, align 879  %incdec.ptr1 = getelementptr inbounds i64, ptr %pDst.05, i64 180  store volatile i64 %tmp, ptr %pDst.05, align 881  %sub = add i64 %len.06, -882  %cmp = icmp sgt i64 %sub, -183  br i1 %cmp, label %while.body, label %while.end84 85while.end:                                        ; preds = %while.body86  ret ptr @g187}88