brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 8810dd1 Raw
45 lines · plain
1; RUN: llc < %s -mtriple=xcore | FileCheck %s2 3declare void @llvm.xcore.setv.p1(ptr addrspace(1) %r, ptr %p)4declare ptr @llvm.xcore.waitevent()5declare ptr @llvm.xcore.checkevent(ptr)6declare void @llvm.xcore.clre()7 8define i32 @f(ptr addrspace(1) %r) nounwind {9; CHECK-LABEL: f:10entry:11; CHECK: clre12  call void @llvm.xcore.clre()13  call void @llvm.xcore.setv.p1(ptr addrspace(1) %r, ptr blockaddress(@f, %L1))14  call void @llvm.xcore.setv.p1(ptr addrspace(1) %r, ptr blockaddress(@f, %L2))15  %goto_addr = call ptr @llvm.xcore.waitevent()16; CHECK: waiteu17  indirectbr ptr %goto_addr, [label %L1, label %L2]18L1:19  br label %ret20L2:21  br label %ret22ret:23  %retval = phi i32 [1, %L1], [2, %L2]24  ret i32 %retval25}26 27define i32 @g(ptr addrspace(1) %r) nounwind {28; CHECK-LABEL: g:29entry:30; CHECK: clre31  call void @llvm.xcore.clre()32  call void @llvm.xcore.setv.p1(ptr addrspace(1) %r, ptr blockaddress(@f, %L1))33  %goto_addr = call ptr @llvm.xcore.checkevent(ptr blockaddress(@f, %L2))34; CHECK: setsr 135; CHECK: clrsr 136  indirectbr ptr %goto_addr, [label %L1, label %L2]37L1:38  br label %ret39L2:40  br label %ret41ret:42  %retval = phi i32 [1, %L1], [2, %L2]43  ret i32 %retval44}45