Skip to content

Commit 6120962

Browse files
author
Richard Osborne
committed
Add XCore intrinsic for setpsc.
llvm-svn: 127821
1 parent 033a4bc commit 6120962

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

llvm/include/llvm/IntrinsicsXCore.td

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ let TargetPrefix = "xcore" in { // All intrinsics start with "llvm.xcore.".
5757
[NoCapture<0>, NoCapture<1>]>;
5858
def int_xcore_setrdy : Intrinsic<[],[llvm_anyptr_ty, llvm_anyptr_ty],
5959
[NoCapture<0>, NoCapture<1>]>;
60+
def int_xcore_setpsc : Intrinsic<[],[llvm_anyptr_ty, llvm_i32_ty],
61+
[NoCapture<0>]>;
6062

6163
// Intrinsics for events.
6264
def int_xcore_waitevent : Intrinsic<[llvm_ptr_ty],[], [IntrReadMem]>;

llvm/lib/Target/XCore/XCoreInstrInfo.td

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -838,7 +838,7 @@ def SETD_2r : _F2R<(outs), (ins GRRegs:$r, GRRegs:$val),
838838
[(int_xcore_setd GRRegs:$r, GRRegs:$val)]>;
839839

840840
// Two operand long
841-
// TODO setpsc, endin, peek,
841+
// TODO endin, peek,
842842
// getd, testlcl, tinitlr
843843
def BITREV_l2r : _FL2R<(outs GRRegs:$dst), (ins GRRegs:$src),
844844
"bitrev $dst, $src",
@@ -876,6 +876,10 @@ def SETRDY_l2r : _FL2R<(outs), (ins GRRegs:$src1, GRRegs:$src2),
876876
"setrdy res[$src1], $src2",
877877
[(int_xcore_setrdy GRRegs:$src1, GRRegs:$src2)]>;
878878

879+
def SETPSC_l2r : _FL2R<(outs), (ins GRRegs:$src1, GRRegs:$src2),
880+
"setpsc res[$src1], $src2",
881+
[(int_xcore_setpsc GRRegs:$src1, GRRegs:$src2)]>;
882+
879883
// One operand short
880884
// TODO edu, eeu, waitet, waitef, tstart, msync, mjoin, clrtp
881885
// setdp, setcp, setev, kcall

llvm/test/CodeGen/XCore/resources.ll

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ declare void @llvm.xcore.setv.p1i8(i8 addrspace(1)* %r, i8* %p)
2121
declare void @llvm.xcore.eeu.p1i8(i8 addrspace(1)* %r)
2222
declare void @llvm.xcore.setclk.p1i8.p1i8(i8 addrspace(1)* %a, i8 addrspace(1)* %b)
2323
declare void @llvm.xcore.setrdy.p1i8.p1i8(i8 addrspace(1)* %a, i8 addrspace(1)* %b)
24+
declare void @llvm.xcore.setpsc.p1i8(i8 addrspace(1)* %r, i32 %value)
2425

2526
define i8 addrspace(1)* @getr() {
2627
; CHECK: getr:
@@ -190,3 +191,10 @@ define void @setrdy(i8 addrspace(1)* %a, i8 addrspace(1)* %b) {
190191
call void @llvm.xcore.setrdy.p1i8.p1i8(i8 addrspace(1)* %a, i8 addrspace(1)* %b)
191192
ret void
192193
}
194+
195+
define void @setpsc(i8 addrspace(1)* %r, i32 %value) {
196+
; CHECK: setpsc
197+
; CHECK: setpsc res[r0], r1
198+
call void @llvm.xcore.setpsc.p1i8(i8 addrspace(1)* %r, i32 %value)
199+
ret void
200+
}

0 commit comments

Comments
 (0)