66 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=avr | FileCheck %s3 4@global = external global i85@progmem = external addrspace(1) global i86 7declare void @func() addrspace(1)8declare void @doCallback(ptr) addrspace(1)9 10define ptr @casttodata(ptr addrspace(1) %funcptr) addrspace(1) {11; CHECK-LABEL: casttodata:12; CHECK: ; %bb.0:13; CHECK-NEXT: ret14 %result = addrspacecast ptr addrspace(1) %funcptr to ptr15 ret ptr %result16}17 18define ptr addrspace(1) @casttofuncptr(ptr %data) addrspace(1) {19; CHECK-LABEL: casttofuncptr:20; CHECK: ; %bb.0:21; CHECK-NEXT: ret22 %result = addrspacecast ptr %data to ptr addrspace(1)23 ret ptr addrspace(1) %result24}25 26define ptr addrspace(1) @castglobal() addrspace(1) {27; CHECK-LABEL: castglobal:28; CHECK: ; %bb.0:29; CHECK-NEXT: ldi r24, lo8(global)30; CHECK-NEXT: ldi r25, hi8(global)31; CHECK-NEXT: ret32 %result = addrspacecast ptr @global to ptr addrspace(1)33 ret ptr addrspace(1) %result34}35 36define ptr @castprogmem() addrspace(1) {37; CHECK-LABEL: castprogmem:38; CHECK: ; %bb.0:39; CHECK-NEXT: ldi r24, lo8(progmem)40; CHECK-NEXT: ldi r25, hi8(progmem)41; CHECK-NEXT: ret42 %result = addrspacecast ptr addrspace(1) @progmem to ptr43 ret ptr %result44}45 46define ptr @castfunc() addrspace(1) {47; CHECK-LABEL: castfunc:48; CHECK: ; %bb.0:49; CHECK-NEXT: ldi r24, pm_lo8(func)50; CHECK-NEXT: ldi r25, pm_hi8(func)51; CHECK-NEXT: ret52 %result = addrspacecast ptr addrspace(1) @func to ptr53 ret ptr %result54}55 56define void @callCallback() addrspace(1) {57; CHECK-LABEL: callCallback:58; CHECK: ; %bb.0:59; CHECK-NEXT: ldi r24, pm_lo8(func)60; CHECK-NEXT: ldi r25, pm_hi8(func)61; CHECK-NEXT: rcall doCallback62; CHECK-NEXT: ret63 call addrspace(1) void @doCallback(ptr addrspacecast (ptr addrspace(1) @func to ptr))64 ret void65}66