1 ; RUN: llc -march=xcore < %s | FileCheck %s
3 declare i8 addrspace(1)* @llvm.xcore.getr.p1i8(i32 %type)
4 declare void @llvm.xcore.freer.p1i8(i8 addrspace(1)* %r)
5 declare i32 @llvm.xcore.in.p1i8(i8 addrspace(1)* %r)
6 declare i32 @llvm.xcore.int.p1i8(i8 addrspace(1)* %r)
7 declare i32 @llvm.xcore.inct.p1i8(i8 addrspace(1)* %r)
8 declare void @llvm.xcore.out.p1i8(i8 addrspace(1)* %r, i32 %value)
9 declare void @llvm.xcore.outt.p1i8(i8 addrspace(1)* %r, i32 %value)
10 declare void @llvm.xcore.outct.p1i8(i8 addrspace(1)* %r, i32 %value)
11 declare void @llvm.xcore.chkct.p1i8(i8 addrspace(1)* %r, i32 %value)
12 declare i32 @llvm.xcore.testct.p1i8(i8 addrspace(1)* %r)
13 declare i32 @llvm.xcore.testwct.p1i8(i8 addrspace(1)* %r)
14 declare void @llvm.xcore.setd.p1i8(i8 addrspace(1)* %r, i32 %value)
15 declare void @llvm.xcore.setc.p1i8(i8 addrspace(1)* %r, i32 %value)
16 declare i32 @llvm.xcore.inshr.p1i8(i8 addrspace(1)* %r, i32 %value)
17 declare i32 @llvm.xcore.outshr.p1i8(i8 addrspace(1)* %r, i32 %value)
18 declare void @llvm.xcore.setpt.p1i8(i8 addrspace(1)* %r, i32 %value)
19 declare i32 @llvm.xcore.getts.p1i8(i8 addrspace(1)* %r)
20 declare void @llvm.xcore.syncr.p1i8(i8 addrspace(1)* %r)
21 declare void @llvm.xcore.settw.p1i8(i8 addrspace(1)* %r, i32 %value)
22 declare void @llvm.xcore.setv.p1i8(i8 addrspace(1)* %r, i8* %p)
23 declare void @llvm.xcore.setev.p1i8(i8 addrspace(1)* %r, i8* %p)
24 declare void @llvm.xcore.edu.p1i8(i8 addrspace(1)* %r)
25 declare void @llvm.xcore.eeu.p1i8(i8 addrspace(1)* %r)
26 declare void @llvm.xcore.setclk.p1i8.p1i8(i8 addrspace(1)* %a, i8 addrspace(1)* %b)
27 declare void @llvm.xcore.setrdy.p1i8.p1i8(i8 addrspace(1)* %a, i8 addrspace(1)* %b)
28 declare void @llvm.xcore.setpsc.p1i8(i8 addrspace(1)* %r, i32 %value)
29 declare i32 @llvm.xcore.peek.p1i8(i8 addrspace(1)* %r)
30 declare i32 @llvm.xcore.endin.p1i8(i8 addrspace(1)* %r)
32 define i8 addrspace(1)* @getr() {
35 %result = call i8 addrspace(1)* @llvm.xcore.getr.p1i8(i32 5)
36 ret i8 addrspace(1)* %result
39 define void @freer(i8 addrspace(1)* %r) {
41 ; CHECK: freer res[r0]
42 call void @llvm.xcore.freer.p1i8(i8 addrspace(1)* %r)
46 define i32 @in(i8 addrspace(1)* %r) {
48 ; CHECK: in r0, res[r0]
49 %result = call i32 @llvm.xcore.in.p1i8(i8 addrspace(1)* %r)
53 define i32 @int(i8 addrspace(1)* %r) {
55 ; CHECK: int r0, res[r0]
56 %result = call i32 @llvm.xcore.int.p1i8(i8 addrspace(1)* %r)
60 define i32 @inct(i8 addrspace(1)* %r) {
62 ; CHECK: inct r0, res[r0]
63 %result = call i32 @llvm.xcore.inct.p1i8(i8 addrspace(1)* %r)
67 define void @out(i8 addrspace(1)* %r, i32 %value) {
69 ; CHECK: out res[r0], r1
70 call void @llvm.xcore.out.p1i8(i8 addrspace(1)* %r, i32 %value)
74 define void @outt(i8 addrspace(1)* %r, i32 %value) {
76 ; CHECK: outt res[r0], r1
77 call void @llvm.xcore.outt.p1i8(i8 addrspace(1)* %r, i32 %value)
81 define void @outct(i8 addrspace(1)* %r, i32 %value) {
83 ; CHECK: outct res[r0], r1
84 call void @llvm.xcore.outct.p1i8(i8 addrspace(1)* %r, i32 %value)
88 define void @outcti(i8 addrspace(1)* %r) {
89 ; CHECK-LABEL: outcti:
90 ; CHECK: outct res[r0], 11
91 call void @llvm.xcore.outct.p1i8(i8 addrspace(1)* %r, i32 11)
95 define void @chkct(i8 addrspace(1)* %r, i32 %value) {
97 ; CHECK: chkct res[r0], r1
98 call void @llvm.xcore.chkct.p1i8(i8 addrspace(1)* %r, i32 %value)
102 define void @chkcti(i8 addrspace(1)* %r) {
103 ; CHECK-LABEL: chkcti:
104 ; CHECK: chkct res[r0], 11
105 call void @llvm.xcore.chkct.p1i8(i8 addrspace(1)* %r, i32 11)
109 define void @setd(i8 addrspace(1)* %r, i32 %value) {
111 ; CHECK: setd res[r0], r1
112 call void @llvm.xcore.setd.p1i8(i8 addrspace(1)* %r, i32 %value)
116 define void @setc(i8 addrspace(1)* %r, i32 %value) {
118 ; CHECK: setc res[r0], r1
119 call void @llvm.xcore.setc.p1i8(i8 addrspace(1)* %r, i32 %value)
123 define void @setci(i8 addrspace(1)* %r) {
124 ; CHECK-LABEL: setci:
125 ; CHECK: setc res[r0], 2
126 call void @llvm.xcore.setc.p1i8(i8 addrspace(1)* %r, i32 2)
130 define i32 @inshr(i32 %value, i8 addrspace(1)* %r) {
131 ; CHECK-LABEL: inshr:
132 ; CHECK: inshr r0, res[r1]
133 %result = call i32 @llvm.xcore.inshr.p1i8(i8 addrspace(1)* %r, i32 %value)
137 define i32 @outshr(i32 %value, i8 addrspace(1)* %r) {
138 ; CHECK-LABEL: outshr:
139 ; CHECK: outshr res[r1], r0
140 %result = call i32 @llvm.xcore.outshr.p1i8(i8 addrspace(1)* %r, i32 %value)
144 define void @setpt(i8 addrspace(1)* %r, i32 %value) {
145 ; CHECK-LABEL: setpt:
146 ; CHECK: setpt res[r0], r1
147 call void @llvm.xcore.setpt.p1i8(i8 addrspace(1)* %r, i32 %value)
151 define i32 @getts(i8 addrspace(1)* %r) {
152 ; CHECK-LABEL: getts:
153 ; CHECK: getts r0, res[r0]
154 %result = call i32 @llvm.xcore.getts.p1i8(i8 addrspace(1)* %r)
158 define void @syncr(i8 addrspace(1)* %r) {
159 ; CHECK-LABEL: syncr:
160 ; CHECK: syncr res[r0]
161 call void @llvm.xcore.syncr.p1i8(i8 addrspace(1)* %r)
165 define void @settw(i8 addrspace(1)* %r, i32 %value) {
166 ; CHECK-LABEL: settw:
167 ; CHECK: settw res[r0], r1
168 call void @llvm.xcore.settw.p1i8(i8 addrspace(1)* %r, i32 %value)
172 define void @setv(i8 addrspace(1)* %r, i8* %p) {
175 ; CHECK-NEXT: setv res[r0], r11
176 call void @llvm.xcore.setv.p1i8(i8 addrspace(1)* %r, i8* %p)
180 define void @setev(i8 addrspace(1)* %r, i8* %p) {
181 ; CHECK-LABEL: setev:
183 ; CHECK-NEXT: setev res[r0], r11
184 call void @llvm.xcore.setev.p1i8(i8 addrspace(1)* %r, i8* %p)
188 define void @edu(i8 addrspace(1)* %r) {
191 call void @llvm.xcore.edu.p1i8(i8 addrspace(1)* %r)
195 define void @eeu(i8 addrspace(1)* %r) {
198 call void @llvm.xcore.eeu.p1i8(i8 addrspace(1)* %r)
202 define void @setclk(i8 addrspace(1)* %a, i8 addrspace(1)* %b) {
204 ; CHECK: setclk res[r0], r1
205 call void @llvm.xcore.setclk.p1i8.p1i8(i8 addrspace(1)* %a, i8 addrspace(1)* %b)
209 define void @setrdy(i8 addrspace(1)* %a, i8 addrspace(1)* %b) {
211 ; CHECK: setrdy res[r0], r1
212 call void @llvm.xcore.setrdy.p1i8.p1i8(i8 addrspace(1)* %a, i8 addrspace(1)* %b)
216 define void @setpsc(i8 addrspace(1)* %r, i32 %value) {
218 ; CHECK: setpsc res[r0], r1
219 call void @llvm.xcore.setpsc.p1i8(i8 addrspace(1)* %r, i32 %value)
223 define i32 @peek(i8 addrspace(1)* %r) {
225 ; CHECK: peek r0, res[r0]
226 %result = call i32 @llvm.xcore.peek.p1i8(i8 addrspace(1)* %r)
230 define i32 @endin(i8 addrspace(1)* %r) {
231 ; CHECK-LABEL: endin:
232 ; CHECK: endin r0, res[r0]
233 %result = call i32 @llvm.xcore.endin.p1i8(i8 addrspace(1)* %r)
237 define i32 @testct(i8 addrspace(1)* %r) {
238 ; CHECK-LABEL: testct:
239 ; CHECK: testct r0, res[r0]
240 %result = call i32 @llvm.xcore.testct.p1i8(i8 addrspace(1)* %r)
244 define i32 @testwct(i8 addrspace(1)* %r) {
245 ; CHECK-LABEL: testwct:
246 ; CHECK: testwct r0, res[r0]
247 %result = call i32 @llvm.xcore.testwct.p1i8(i8 addrspace(1)* %r)