[AVR] Improve the 'icall-func-pointer-correct-addr-space.ll' test

Patch by Carl Peto.

llvm-svn: 308856
This commit is contained in:
Dylan McKay 2017-07-23 23:00:55 +00:00
parent 67fe74b122
commit 94c636b7aa
1 changed files with 20 additions and 8 deletions

View File

@ -1,15 +1,27 @@
; RUN: llc -mattr=lpm,lpmw < %s -march=avr | FileCheck %s
declare void @callback(i16 zeroext)
@callbackPtr = common global void (i16)* null, align 8
@myValuePtr = common global i16* null, align 8
; CHECK-LABEL: foo
define void @foo() {
@externalConstant = external global i16, align 2
declare void @externalFunction(i16 signext)
declare void @bar(i8 signext, void (i16)*, i16*)
; CHECK-LABEL: loadCallbackPtr
define void @loadCallbackPtr() {
entry:
; CHECK: ldi r{{[0-9]+}}, pm_lo8(callback)
; CHECK-NEXT: ldi r{{[0-9]+}}, pm_hi8(callback)
call void @bar(i8 zeroext undef, void (i16)* @callback)
; CHECK: ldi r{{[0-9]+}}, pm_lo8(externalFunction)
; CHECK-NEXT: ldi r{{[0-9]+}}, pm_hi8(externalFunction)
store void (i16)* @externalFunction, void (i16)** @callbackPtr, align 8
ret void
}
declare void @bar(i8 zeroext, void (i16)*)
; CHECK-LABEL: loadValuePtr
define void @loadValuePtr() {
entry:
; CHECK: ldi r{{[0-9]+}}, lo8(externalConstant)
; CHECK-NEXT: ldi r{{[0-9]+}}, hi8(externalConstant)
store i16* @externalConstant, i16** @myValuePtr, align 8
ret void
}