mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-16 20:40:16 +00:00
Revert r182937 and r182877.
r182877 broke MCJIT tests on ARM and r182937 was working around another failure by r182877. This should make the ARM bots green. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182960 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
198f972077
commit
9e3e730417
lib/Target/ARM
test
CodeGen/ARM
fast-isel-GEP-coalesce.llfast-isel-binary.llfast-isel-br-const.llfast-isel-call-multi-reg-return.llfast-isel-call.llfast-isel-cmp-imm.llfast-isel-conversion.llfast-isel-crash.llfast-isel-crash2.llfast-isel-fold.llfast-isel-frameaddr.llfast-isel-icmp.llfast-isel-indirectbr.llfast-isel-intrinsic.llfast-isel-ldrh-strh-arm.llfast-isel-mvn.llfast-isel-pic.llfast-isel-pred.llfast-isel-ret.llfast-isel-select.llfast-isel-shifter.llfast-isel-static.llfast-isel-vararg.llfast-isel.ll
DebugInfo
@ -628,11 +628,6 @@ unsigned ARMFastISel::ARMMaterializeGV(const GlobalValue *GV, MVT VT) {
|
||||
(const TargetRegisterClass*)&ARM::GPRRegClass;
|
||||
unsigned DestReg = createResultReg(RC);
|
||||
|
||||
// FastISel TLS support on non-Darwin is broken, punt to SelectionDAG.
|
||||
const GlobalVariable *GVar = dyn_cast<GlobalVariable>(GV);
|
||||
bool IsThreadLocal = GVar && GVar->isThreadLocal();
|
||||
if (!Subtarget->isTargetDarwin() && IsThreadLocal) return 0;
|
||||
|
||||
// Use movw+movt when possible, it avoids constant pool entries.
|
||||
// Darwin targets don't support movt with Reloc::Static, see
|
||||
// ARMTargetLowering::LowerGlobalAddressDarwin. Other targets only support
|
||||
@ -2966,22 +2961,13 @@ bool ARMFastISel::FastLowerArguments() {
|
||||
namespace llvm {
|
||||
FastISel *ARM::createFastISel(FunctionLoweringInfo &funcInfo,
|
||||
const TargetLibraryInfo *libInfo) {
|
||||
// Completely untested on non-iOS.
|
||||
const TargetMachine &TM = funcInfo.MF->getTarget();
|
||||
|
||||
// Darwin and thumb1 only for now.
|
||||
const ARMSubtarget *Subtarget = &TM.getSubtarget<ARMSubtarget>();
|
||||
// Thumb2 support on iOS; ARM support on iOS, Linux and NaCl.
|
||||
bool UseFastISel = false;
|
||||
UseFastISel |= Subtarget->isTargetIOS() && !Subtarget->isThumb1Only();
|
||||
UseFastISel |= Subtarget->isTargetLinux() && !Subtarget->isThumb();
|
||||
UseFastISel |= Subtarget->isTargetNaCl() && !Subtarget->isThumb();
|
||||
if (UseFastISel) {
|
||||
// iOS always has a FP for backtracking, force other targets
|
||||
// to keep their FP when doing FastISel. The emitted code is
|
||||
// currently superior, and in cases like test-suite's lencod
|
||||
// FastISel isn't quite correct when FP is eliminated.
|
||||
TM.Options.NoFramePointerElim = true;
|
||||
if (Subtarget->isTargetIOS() && !Subtarget->isThumb1Only())
|
||||
return new ARMFastISel(funcInfo, libInfo);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-darwin | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-darwin | FileCheck %s --check-prefix=THUMB
|
||||
|
||||
%struct.A = type { i32, [2 x [2 x i32]], i8, [3 x [3 x [3 x i32]]] }
|
||||
|
@ -1,5 +1,4 @@
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
|
||||
|
||||
; Test add with non-legal types
|
||||
|
@ -1,5 +1,4 @@
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
|
||||
|
||||
define i32 @t1(i32 %a, i32 %b) nounwind uwtable ssp {
|
||||
|
@ -1,5 +1,4 @@
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
|
||||
|
||||
; Fast-isel can't handle non-double multi-reg retvals.
|
||||
|
@ -1,11 +1,8 @@
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -arm-long-calls | FileCheck %s --check-prefix=ARM-LONG
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi -arm-long-calls | FileCheck %s --check-prefix=ARM-LONG
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios -arm-long-calls | FileCheck %s --check-prefix=THUMB-LONG
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -mattr=-vfp2 | FileCheck %s --check-prefix=ARM-NOVFP
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi -mattr=-vfp2 | FileCheck %s --check-prefix=ARM-NOVFP
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios -mattr=-vfp2 | FileCheck %s --check-prefix=THUMB-NOVFP
|
||||
|
||||
; Note that some of these tests assume that relocations are either
|
||||
|
@ -1,5 +1,4 @@
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
|
||||
|
||||
define void @t1a(float %a) uwtable ssp {
|
||||
|
@ -1,5 +1,4 @@
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
|
||||
|
||||
; Test sitofp
|
||||
|
@ -1,5 +1,4 @@
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -mtriple=thumbv7-apple-darwin
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -mtriple=thumbv7-linux-gnueabi
|
||||
|
||||
%union.anon = type { <16 x i32> }
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -mtriple=thumbv7-apple-darwin
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -mtriple=thumbv7-linux-gnueabi
|
||||
; rdar://9515076
|
||||
; (Make sure this doesn't crash.)
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-darwin | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-darwin | FileCheck %s --check-prefix=THUMB
|
||||
|
||||
@a = global i8 1, align 1
|
||||
|
@ -46,7 +46,8 @@ entry:
|
||||
; LINUX-ARM: frameaddr_index1:
|
||||
; LINUX-ARM: push {r11}
|
||||
; LINUX-ARM: mov r11, sp
|
||||
; LINUX-ARM: ldr r0, [r11]
|
||||
; LINUX-ARM: mov r0, r11
|
||||
; LINUX-ARM: ldr r0, [r0]
|
||||
|
||||
; LINUX-THUMB2: frameaddr_index1:
|
||||
; LINUX-THUMB2: str r7, [sp, #-4]!
|
||||
@ -79,7 +80,8 @@ entry:
|
||||
; LINUX-ARM: frameaddr_index3:
|
||||
; LINUX-ARM: push {r11}
|
||||
; LINUX-ARM: mov r11, sp
|
||||
; LINUX-ARM: ldr r0, [r11]
|
||||
; LINUX-ARM: mov r0, r11
|
||||
; LINUX-ARM: ldr r0, [r0]
|
||||
; LINUX-ARM: ldr r0, [r0]
|
||||
; LINUX-ARM: ldr r0, [r0]
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
|
||||
|
||||
define i32 @icmp_i16_signed(i16 %a, i16 %b) nounwind {
|
||||
|
@ -1,5 +1,4 @@
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
|
||||
|
||||
define void @t1(i8* %x) {
|
||||
|
@ -1,8 +1,6 @@
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -arm-long-calls | FileCheck %s --check-prefix=ARM-LONG
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi -arm-long-calls | FileCheck %s --check-prefix=ARM-LONG
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios -arm-long-calls | FileCheck %s --check-prefix=THUMB-LONG
|
||||
|
||||
; Note that some of these tests assume that relocations are either
|
||||
@ -22,8 +20,8 @@ define void @t1() nounwind ssp {
|
||||
; ARM: uxtb r1, r1
|
||||
; ARM: bl {{_?}}memset
|
||||
; ARM-LONG: t1
|
||||
; ARM-LONG: {{(movw r3, :lower16:L_memset\$non_lazy_ptr)|(ldr r3, .LCPI)}}
|
||||
; ARM-LONG: {{(movt r3, :upper16:L_memset\$non_lazy_ptr)?}}
|
||||
; ARM-LONG: movw r3, :lower16:L_memset$non_lazy_ptr
|
||||
; ARM-LONG: movt r3, :upper16:L_memset$non_lazy_ptr
|
||||
; ARM-LONG: ldr r3, [r3]
|
||||
; ARM-LONG: blx r3
|
||||
; THUMB: t1
|
||||
@ -60,8 +58,8 @@ define void @t2() nounwind ssp {
|
||||
; ARM: ldr r1, [sp[[SLOT]]] @ 4-byte Reload
|
||||
; ARM: bl {{_?}}memcpy
|
||||
; ARM-LONG: t2
|
||||
; ARM-LONG: {{(movw r3, :lower16:L_memcpy\$non_lazy_ptr)|(ldr r3, .LCPI)}}
|
||||
; ARM-LONG: {{(movt r3, :upper16:L_memcpy\$non_lazy_ptr)?}}
|
||||
; ARM-LONG: movw r3, :lower16:L_memcpy$non_lazy_ptr
|
||||
; ARM-LONG: movt r3, :upper16:L_memcpy$non_lazy_ptr
|
||||
; ARM-LONG: ldr r3, [r3]
|
||||
; ARM-LONG: blx r3
|
||||
; THUMB: t2
|
||||
@ -98,8 +96,8 @@ define void @t3() nounwind ssp {
|
||||
; ARM: mov r0, r1
|
||||
; ARM: bl {{_?}}memmove
|
||||
; ARM-LONG: t3
|
||||
; ARM-LONG: {{(movw r3, :lower16:L_memmove\$non_lazy_ptr)|(ldr r3, .LCPI)}}
|
||||
; ARM-LONG: {{(movt r3, :upper16:L_memmove\$non_lazy_ptr)?}}
|
||||
; ARM-LONG: movw r3, :lower16:L_memmove$non_lazy_ptr
|
||||
; ARM-LONG: movt r3, :upper16:L_memmove$non_lazy_ptr
|
||||
; ARM-LONG: ldr r3, [r3]
|
||||
; ARM-LONG: blx r3
|
||||
; THUMB: t3
|
||||
|
@ -1,5 +1,4 @@
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM
|
||||
; rdar://10418009
|
||||
|
||||
define zeroext i16 @t1(i16* nocapture %a) nounwind uwtable readonly ssp {
|
||||
|
@ -1,5 +1,4 @@
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
|
||||
; rdar://10412592
|
||||
|
||||
|
@ -26,7 +26,7 @@ entry:
|
||||
; ARMv7-ELF: LoadGV
|
||||
; ARMv7-ELF: ldr r[[reg2:[0-9]+]],
|
||||
; ARMv7-ELF: ldr r[[reg3:[0-9]+]],
|
||||
; ARMv7-ELF: ldr r[[reg2]], [r[[reg3]], r[[reg2]]]
|
||||
; ARMv7-ELF: ldr r[[reg2]], [r[[reg2]], r[[reg3]]]
|
||||
%tmp = load i32* @g
|
||||
ret i32 %tmp
|
||||
}
|
||||
@ -55,7 +55,7 @@ entry:
|
||||
; ARMv7-ELF: LoadIndirectSymbol
|
||||
; ARMv7-ELF: ldr r[[reg5:[0-9]+]],
|
||||
; ARMv7-ELF: ldr r[[reg6:[0-9]+]],
|
||||
; ARMv7-ELF: ldr r[[reg5]], [r[[reg6]], r[[reg5]]]
|
||||
; ARMv7-ELF: ldr r[[reg5]], [r[[reg5]], r[[reg6]]]
|
||||
%tmp = load i32* @i
|
||||
ret i32 %tmp
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
; RUN: llc -O0 -verify-machineinstrs -mtriple=armv7-apple-darwin < %s
|
||||
; RUN: llc -O0 -verify-machineinstrs -mtriple=armv7-linux-gnueabi < %s
|
||||
|
||||
define i32 @main() nounwind ssp {
|
||||
entry:
|
||||
|
@ -1,5 +1,4 @@
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s
|
||||
|
||||
; Sign-extend of i1 currently not supported by fast-isel
|
||||
|
@ -1,5 +1,4 @@
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
|
||||
|
||||
define i32 @t1(i1 %c) nounwind readnone {
|
||||
|
@ -1,5 +1,4 @@
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM
|
||||
|
||||
define i32 @shl() nounwind ssp {
|
||||
entry:
|
||||
|
@ -1,7 +1,5 @@
|
||||
; RUN: llc < %s -mtriple=thumbv7-apple-darwin -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=static -arm-long-calls | FileCheck -check-prefix=LONG %s
|
||||
; RUN: llc < %s -mtriple=thumbv7-linux-gnueabi -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=static -arm-long-calls | FileCheck -check-prefix=LONG %s
|
||||
; RUN: llc < %s -mtriple=thumbv7-apple-darwin -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=static | FileCheck -check-prefix=NORM %s
|
||||
; RUN: llc < %s -mtriple=thumbv7-linux-gnueabi -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=static | FileCheck -check-prefix=NORM %s
|
||||
|
||||
define void @myadd(float* %sum, float* %addend) nounwind {
|
||||
entry:
|
||||
|
@ -1,47 +0,0 @@
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
|
||||
|
||||
define i32 @VarArg() nounwind {
|
||||
entry:
|
||||
%i = alloca i32, align 4
|
||||
%j = alloca i32, align 4
|
||||
%k = alloca i32, align 4
|
||||
%m = alloca i32, align 4
|
||||
%n = alloca i32, align 4
|
||||
%tmp = alloca i32, align 4
|
||||
%0 = load i32* %i, align 4
|
||||
%1 = load i32* %j, align 4
|
||||
%2 = load i32* %k, align 4
|
||||
%3 = load i32* %m, align 4
|
||||
%4 = load i32* %n, align 4
|
||||
; ARM: VarArg
|
||||
; ARM: mov [[FP:r[0-9]+]], sp
|
||||
; ARM: sub sp, sp, #32
|
||||
; ARM: movw r0, #5
|
||||
; ARM: ldr r1, {{\[}}[[FP]], #-4]
|
||||
; ARM: ldr r2, {{\[}}[[FP]], #-8]
|
||||
; ARM: ldr r3, {{\[}}[[FP]], #-12]
|
||||
; ARM: ldr [[Ra:r[0-9]+]], [sp, #16]
|
||||
; ARM: ldr [[Rb:[lr]+[0-9]*]], [sp, #12]
|
||||
; ARM: str [[Ra]], [sp]
|
||||
; ARM: str [[Rb]], [sp, #4]
|
||||
; ARM: bl {{_?CallVariadic}}
|
||||
; THUMB: sub sp, #32
|
||||
; THUMB: movs r0, #5
|
||||
; THUMB: movt r0, #0
|
||||
; THUMB: ldr r1, [sp, #28]
|
||||
; THUMB: ldr r2, [sp, #24]
|
||||
; THUMB: ldr r3, [sp, #20]
|
||||
; THUMB: ldr.w {{[a-z0-9]+}}, [sp, #16]
|
||||
; THUMB: ldr.w {{[a-z0-9]+}}, [sp, #12]
|
||||
; THUMB: str.w {{[a-z0-9]+}}, [sp]
|
||||
; THUMB: str.w {{[a-z0-9]+}}, [sp, #4]
|
||||
; THUMB: bl {{_?}}CallVariadic
|
||||
%call = call i32 (i32, ...)* @CallVariadic(i32 5, i32 %0, i32 %1, i32 %2, i32 %3, i32 %4)
|
||||
store i32 %call, i32* %tmp, align 4
|
||||
%5 = load i32* %tmp, align 4
|
||||
ret i32 %5
|
||||
}
|
||||
|
||||
declare i32 @CallVariadic(i32, ...)
|
@ -1,5 +1,4 @@
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM
|
||||
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
|
||||
|
||||
; Very basic fast-isel functionality.
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: llc -fast-isel=false -asm-verbose -O0 -o %t < %s
|
||||
; RUN: llc -asm-verbose -O0 -o %t < %s
|
||||
; RUN: grep DW_AT_APPLE_omit_frame_ptr %t
|
||||
; RUN: llc -disable-fp-elim -asm-verbose -O0 -o %t < %s
|
||||
; RUN: grep -v DW_AT_APPLE_omit_frame_ptr %t
|
||||
|
Loading…
x
Reference in New Issue
Block a user