94 lines · plain
1; RUN: llc -mtriple=xcore < %s | FileCheck %s2 3declare i32 @llvm.xcore.int.p1(ptr addrspace(1) %r)4declare i32 @llvm.xcore.inct.p1(ptr addrspace(1) %r)5declare i32 @llvm.xcore.testct.p1(ptr addrspace(1) %r)6declare i32 @llvm.xcore.testwct.p1(ptr addrspace(1) %r)7declare i32 @llvm.xcore.getts.p1(ptr addrspace(1) %r)8declare void @llvm.xcore.outt.p1(ptr addrspace(1) %r, i32 %value)9declare void @llvm.xcore.outct.p1(ptr addrspace(1) %r, i32 %value)10declare void @llvm.xcore.chkct.p1(ptr addrspace(1) %r, i32 %value)11declare void @llvm.xcore.setpt.p1(ptr addrspace(1) %r, i32 %value)12 13define i32 @int(ptr addrspace(1) %r) nounwind {14; CHECK-LABEL: int:15; CHECK: int r0, res[r0]16; CHECK-NEXT: retsp 017 %result = call i32 @llvm.xcore.int.p1(ptr addrspace(1) %r)18 %trunc = and i32 %result, 25519 ret i32 %trunc20}21 22define i32 @inct(ptr addrspace(1) %r) nounwind {23; CHECK-LABEL: inct:24; CHECK: inct r0, res[r0]25; CHECK-NEXT: retsp 026 %result = call i32 @llvm.xcore.inct.p1(ptr addrspace(1) %r)27 %trunc = and i32 %result, 25528 ret i32 %trunc29}30 31define i32 @testct(ptr addrspace(1) %r) nounwind {32; CHECK-LABEL: testct:33; CHECK: testct r0, res[r0]34; CHECK-NEXT: retsp 035 %result = call i32 @llvm.xcore.testct.p1(ptr addrspace(1) %r)36 %trunc = and i32 %result, 137 ret i32 %trunc38}39 40define i32 @testwct(ptr addrspace(1) %r) nounwind {41; CHECK-LABEL: testwct:42; CHECK: testwct r0, res[r0]43; CHECK-NEXT: retsp 044 %result = call i32 @llvm.xcore.testwct.p1(ptr addrspace(1) %r)45 %trunc = and i32 %result, 746 ret i32 %trunc47}48 49define i32 @getts(ptr addrspace(1) %r) nounwind {50; CHECK-LABEL: getts:51; CHECK: getts r0, res[r0]52; CHECK-NEXT: retsp 053 %result = call i32 @llvm.xcore.getts.p1(ptr addrspace(1) %r)54 %trunc = and i32 %result, 6553555 ret i32 %result56}57 58define void @outt(ptr addrspace(1) %r, i32 %value) nounwind {59; CHECK-LABEL: outt:60; CHECK-NOT: zext61; CHECK: outt res[r0], r162; CHECK-NEXT: retsp 063 %trunc = and i32 %value, 25564 call void @llvm.xcore.outt.p1(ptr addrspace(1) %r, i32 %trunc)65 ret void66}67 68define void @outct(ptr addrspace(1) %r, i32 %value) nounwind {69; CHECK-LABEL: outct:70; CHECK-NOT: zext71; CHECK: outct res[r0], r172 %trunc = and i32 %value, 25573 call void @llvm.xcore.outct.p1(ptr addrspace(1) %r, i32 %trunc)74 ret void75}76 77define void @chkct(ptr addrspace(1) %r, i32 %value) nounwind {78; CHECK-LABEL: chkct:79; CHECK-NOT: zext80; CHECK: chkct res[r0], r181 %trunc = and i32 %value, 25582 call void @llvm.xcore.chkct.p1(ptr addrspace(1) %r, i32 %trunc)83 ret void84}85 86define void @setpt(ptr addrspace(1) %r, i32 %value) nounwind {87; CHECK-LABEL: setpt:88; CHECK-NOT: zext89; CHECK: setpt res[r0], r190 %trunc = and i32 %value, 6553591 call void @llvm.xcore.setpt.p1(ptr addrspace(1) %r, i32 %trunc)92 ret void93}94