258 lines · plain
1; RUN: llc -mtriple=xcore < %s | FileCheck %s2 3declare ptr addrspace(1) @llvm.xcore.getr.p1(i32 %type)4declare void @llvm.xcore.freer.p1(ptr addrspace(1) %r)5declare i32 @llvm.xcore.in.p1(ptr addrspace(1) %r)6declare i32 @llvm.xcore.int.p1(ptr addrspace(1) %r)7declare i32 @llvm.xcore.inct.p1(ptr addrspace(1) %r)8declare void @llvm.xcore.out.p1(ptr addrspace(1) %r, i32 %value)9declare void @llvm.xcore.outt.p1(ptr addrspace(1) %r, i32 %value)10declare void @llvm.xcore.outct.p1(ptr addrspace(1) %r, i32 %value)11declare void @llvm.xcore.chkct.p1(ptr addrspace(1) %r, i32 %value)12declare i32 @llvm.xcore.testct.p1(ptr addrspace(1) %r)13declare i32 @llvm.xcore.testwct.p1(ptr addrspace(1) %r)14declare void @llvm.xcore.setd.p1(ptr addrspace(1) %r, i32 %value)15declare void @llvm.xcore.setc.p1(ptr addrspace(1) %r, i32 %value)16declare i32 @llvm.xcore.inshr.p1(ptr addrspace(1) %r, i32 %value)17declare i32 @llvm.xcore.outshr.p1(ptr addrspace(1) %r, i32 %value)18declare void @llvm.xcore.clrpt.p1(ptr addrspace(1) %r)19declare void @llvm.xcore.setpt.p1(ptr addrspace(1) %r, i32 %value)20declare i32 @llvm.xcore.getts.p1(ptr addrspace(1) %r)21declare void @llvm.xcore.syncr.p1(ptr addrspace(1) %r)22declare void @llvm.xcore.settw.p1(ptr addrspace(1) %r, i32 %value)23declare void @llvm.xcore.setv.p1(ptr addrspace(1) %r, ptr %p)24declare void @llvm.xcore.setev.p1(ptr addrspace(1) %r, ptr %p)25declare void @llvm.xcore.edu.p1(ptr addrspace(1) %r)26declare void @llvm.xcore.eeu.p1(ptr addrspace(1) %r)27declare void @llvm.xcore.setclk.p1.p1(ptr addrspace(1) %a, ptr addrspace(1) %b)28declare void @llvm.xcore.setrdy.p1.p1(ptr addrspace(1) %a, ptr addrspace(1) %b)29declare void @llvm.xcore.setpsc.p1(ptr addrspace(1) %r, i32 %value)30declare i32 @llvm.xcore.peek.p1(ptr addrspace(1) %r)31declare i32 @llvm.xcore.endin.p1(ptr addrspace(1) %r)32 33define ptr addrspace(1) @getr() {34; CHECK-LABEL: getr:35; CHECK: getr r0, 536 %result = call ptr addrspace(1) @llvm.xcore.getr.p1(i32 5)37 ret ptr addrspace(1) %result38}39 40define void @freer(ptr addrspace(1) %r) {41; CHECK-LABEL: freer:42; CHECK: freer res[r0]43 call void @llvm.xcore.freer.p1(ptr addrspace(1) %r)44 ret void45}46 47define i32 @in(ptr addrspace(1) %r) {48; CHECK-LABEL: in:49; CHECK: in r0, res[r0]50 %result = call i32 @llvm.xcore.in.p1(ptr addrspace(1) %r)51 ret i32 %result52}53 54define i32 @int(ptr addrspace(1) %r) {55; CHECK-LABEL: int:56; CHECK: int r0, res[r0]57 %result = call i32 @llvm.xcore.int.p1(ptr addrspace(1) %r)58 ret i32 %result59}60 61define i32 @inct(ptr addrspace(1) %r) {62; CHECK-LABEL: inct:63; CHECK: inct r0, res[r0]64 %result = call i32 @llvm.xcore.inct.p1(ptr addrspace(1) %r)65 ret i32 %result66}67 68define void @out(ptr addrspace(1) %r, i32 %value) {69; CHECK-LABEL: out:70; CHECK: out res[r0], r171 call void @llvm.xcore.out.p1(ptr addrspace(1) %r, i32 %value)72 ret void73}74 75define void @outt(ptr addrspace(1) %r, i32 %value) {76; CHECK-LABEL: outt:77; CHECK: outt res[r0], r178 call void @llvm.xcore.outt.p1(ptr addrspace(1) %r, i32 %value)79 ret void80}81 82define void @outct(ptr addrspace(1) %r, i32 %value) {83; CHECK-LABEL: outct:84; CHECK: outct res[r0], r185 call void @llvm.xcore.outct.p1(ptr addrspace(1) %r, i32 %value)86 ret void87}88 89define void @outcti(ptr addrspace(1) %r) {90; CHECK-LABEL: outcti:91; CHECK: outct res[r0], 1192 call void @llvm.xcore.outct.p1(ptr addrspace(1) %r, i32 11)93 ret void94}95 96define void @chkct(ptr addrspace(1) %r, i32 %value) {97; CHECK-LABEL: chkct:98; CHECK: chkct res[r0], r199 call void @llvm.xcore.chkct.p1(ptr addrspace(1) %r, i32 %value)100 ret void101}102 103define void @chkcti(ptr addrspace(1) %r) {104; CHECK-LABEL: chkcti:105; CHECK: chkct res[r0], 11106 call void @llvm.xcore.chkct.p1(ptr addrspace(1) %r, i32 11)107 ret void108}109 110define void @setd(ptr addrspace(1) %r, i32 %value) {111; CHECK-LABEL: setd:112; CHECK: setd res[r0], r1113 call void @llvm.xcore.setd.p1(ptr addrspace(1) %r, i32 %value)114 ret void115}116 117define void @setc(ptr addrspace(1) %r, i32 %value) {118; CHECK-LABEL: setc:119; CHECK: setc res[r0], r1120 call void @llvm.xcore.setc.p1(ptr addrspace(1) %r, i32 %value)121 ret void122}123 124define void @setci(ptr addrspace(1) %r) {125; CHECK-LABEL: setci:126; CHECK: setc res[r0], 2127 call void @llvm.xcore.setc.p1(ptr addrspace(1) %r, i32 2)128 ret void129}130 131define i32 @inshr(i32 %value, ptr addrspace(1) %r) {132; CHECK-LABEL: inshr:133; CHECK: inshr r0, res[r1]134 %result = call i32 @llvm.xcore.inshr.p1(ptr addrspace(1) %r, i32 %value)135 ret i32 %result136}137 138define i32 @outshr(i32 %value, ptr addrspace(1) %r) {139; CHECK-LABEL: outshr:140; CHECK: outshr res[r1], r0141 %result = call i32 @llvm.xcore.outshr.p1(ptr addrspace(1) %r, i32 %value)142 ret i32 %result143}144 145define void @clrpt(ptr addrspace(1) %r) {146; CHECK-LABEL: clrpt:147; CHECK: clrpt res[r0]148 call void @llvm.xcore.clrpt.p1(ptr addrspace(1) %r)149 ret void150}151 152define void @setpt(ptr addrspace(1) %r, i32 %value) {153; CHECK-LABEL: setpt:154; CHECK: setpt res[r0], r1155 call void @llvm.xcore.setpt.p1(ptr addrspace(1) %r, i32 %value)156 ret void157}158 159define i32 @getts(ptr addrspace(1) %r) {160; CHECK-LABEL: getts:161; CHECK: getts r0, res[r0]162 %result = call i32 @llvm.xcore.getts.p1(ptr addrspace(1) %r)163 ret i32 %result164}165 166define void @syncr(ptr addrspace(1) %r) {167; CHECK-LABEL: syncr:168; CHECK: syncr res[r0]169 call void @llvm.xcore.syncr.p1(ptr addrspace(1) %r)170 ret void171}172 173define void @settw(ptr addrspace(1) %r, i32 %value) {174; CHECK-LABEL: settw:175; CHECK: settw res[r0], r1176 call void @llvm.xcore.settw.p1(ptr addrspace(1) %r, i32 %value)177 ret void178}179 180define void @setv(ptr addrspace(1) %r, ptr %p) {181; CHECK-LABEL: setv:182; CHECK: mov r11, r1183; CHECK-NEXT: setv res[r0], r11184 call void @llvm.xcore.setv.p1(ptr addrspace(1) %r, ptr %p)185 ret void186}187 188define void @setev(ptr addrspace(1) %r, ptr %p) {189; CHECK-LABEL: setev:190; CHECK: mov r11, r1191; CHECK-NEXT: setev res[r0], r11192 call void @llvm.xcore.setev.p1(ptr addrspace(1) %r, ptr %p)193 ret void194}195 196define void @edu(ptr addrspace(1) %r) {197; CHECK-LABEL: edu:198; CHECK: edu res[r0]199 call void @llvm.xcore.edu.p1(ptr addrspace(1) %r)200 ret void201}202 203define void @eeu(ptr addrspace(1) %r) {204; CHECK-LABEL: eeu:205; CHECK: eeu res[r0]206 call void @llvm.xcore.eeu.p1(ptr addrspace(1) %r)207 ret void208}209 210define void @setclk(ptr addrspace(1) %a, ptr addrspace(1) %b) {211; CHECK: setclk212; CHECK: setclk res[r0], r1213 call void @llvm.xcore.setclk.p1.p1(ptr addrspace(1) %a, ptr addrspace(1) %b)214 ret void215}216 217define void @setrdy(ptr addrspace(1) %a, ptr addrspace(1) %b) {218; CHECK: setrdy219; CHECK: setrdy res[r0], r1220 call void @llvm.xcore.setrdy.p1.p1(ptr addrspace(1) %a, ptr addrspace(1) %b)221 ret void222}223 224define void @setpsc(ptr addrspace(1) %r, i32 %value) {225; CHECK: setpsc226; CHECK: setpsc res[r0], r1227 call void @llvm.xcore.setpsc.p1(ptr addrspace(1) %r, i32 %value)228 ret void229}230 231define i32 @peek(ptr addrspace(1) %r) {232; CHECK-LABEL: peek:233; CHECK: peek r0, res[r0]234 %result = call i32 @llvm.xcore.peek.p1(ptr addrspace(1) %r)235 ret i32 %result236}237 238define i32 @endin(ptr addrspace(1) %r) {239; CHECK-LABEL: endin:240; CHECK: endin r0, res[r0]241 %result = call i32 @llvm.xcore.endin.p1(ptr addrspace(1) %r)242 ret i32 %result243}244 245define i32 @testct(ptr addrspace(1) %r) {246; CHECK-LABEL: testct:247; CHECK: testct r0, res[r0]248 %result = call i32 @llvm.xcore.testct.p1(ptr addrspace(1) %r)249 ret i32 %result250}251 252define i32 @testwct(ptr addrspace(1) %r) {253; CHECK-LABEL: testwct:254; CHECK: testwct r0, res[r0]255 %result = call i32 @llvm.xcore.testwct.p1(ptr addrspace(1) %r)256 ret i32 %result257}258