1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=avr | FileCheck %s 3 4@global = external global i8 5@progmem = external addrspace(1) global i8 6 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: ret 14 %result = addrspacecast ptr addrspace(1) %funcptr to ptr 15 ret ptr %result 16} 17 18define ptr addrspace(1) @casttofuncptr(ptr %data) addrspace(1) { 19; CHECK-LABEL: casttofuncptr: 20; CHECK: ; %bb.0: 21; CHECK-NEXT: ret 22 %result = addrspacecast ptr %data to ptr addrspace(1) 23 ret ptr addrspace(1) %result 24} 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: ret 32 %result = addrspacecast ptr @global to ptr addrspace(1) 33 ret ptr addrspace(1) %result 34} 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: ret 42 %result = addrspacecast ptr addrspace(1) @progmem to ptr 43 ret ptr %result 44} 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: ret 52 %result = addrspacecast ptr addrspace(1) @func to ptr 53 ret ptr %result 54} 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 doCallback 62; CHECK-NEXT: ret 63 call addrspace(1) void @doCallback(ptr addrspacecast (ptr addrspace(1) @func to ptr)) 64 ret void 65} 66