brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 501925e Raw
52 lines · plain
1; RUN: llc -mtriple=arm-eabi %s -o /dev/null2; RUN: llc -mtriple=thumbv6m-eabi -mattr=+execute-only %s -o - -filetype=obj | \3; RUN:   llvm-objdump -d --no-leading-addr --no-show-raw-insn - | FileCheck %s4 5define void @test1() {6; CHECK-LABEL: <test1>:7;; are we using correct prologue immediate materialization pattern for8;; execute only9; CHECK: sub     sp, #0x10010%tmp = alloca [ 64 x i32 ] , align 411    ret void12}13 14define void @test2() {15; CHECK-LABEL: <test2>:16;; are we using correct prologue immediate materialization pattern for17;; execute-only18; CHECK:      movs    [[REG:r[0-9]+]], #0xff19; CHECK-NEXT: lsls    [[REG]], [[REG]], #0x820; CHECK-NEXT: adds    [[REG]], #0xff21; CHECK-NEXT: lsls    [[REG]], [[REG]], #0x822; CHECK-NEXT: adds    [[REG]], #0xef23; CHECK-NEXT: lsls    [[REG]], [[REG]], #0x824; CHECK-NEXT: adds    [[REG]], #0xb825    %tmp = alloca [ 4168 x i8 ] , align 426    ret void27}28 29define i32 @test3() {30;; are we using correct prologue immediate materialization pattern for31;; execute-only32; CHECK-LABEL: <test3>:33; CHECK: movs [[REG:r[0-9]+]], #0xcf34; CHECK-NEXT: lsls    [[REG]], [[REG]], #0x835; CHECK-NEXT: adds    [[REG]], #0xff36; CHECK-NEXT: lsls    [[REG]], [[REG]], #0x837; CHECK-NEXT: adds    [[REG]], #0xff38; CHECK-NEXT: lsls    [[REG]], [[REG]], #0x839; CHECK-NEXT: adds    [[REG]], #0xf440	%retval = alloca i32, align 441	%tmp = alloca i32, align 442	%a = alloca [u0x30000001 x i8], align 1643	store i32 0, ptr %tmp44;; are we choosing correct store/tSTRspi pattern for execute-only45; CHECK:      movs    [[REG:r[0-9]+]], #0x3046; CHECK-NEXT: lsls    [[REG]], [[REG]], #0x1847; CHECK-NEXT: add     [[REG]], sp48; CHECK-NEXT: str     {{r[0-9]+}}, [[[REG]], #0x4]49	%tmp1 = load i32, ptr %tmp50        ret i32 %tmp151}52