Add XCore intrinsic for clre instruction.
authorRichard Osborne <richard@xmos.com>
Wed, 23 Feb 2011 18:52:05 +0000 (18:52 +0000)
committerRichard Osborne <richard@xmos.com>
Wed, 23 Feb 2011 18:52:05 +0000 (18:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126322 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/IntrinsicsXCore.td
lib/Target/XCore/XCoreInstrInfo.td
test/CodeGen/XCore/events.ll

index 85fa00d6665a13cda91db5971e7497109587981c..76a069e5643a9d6b565b32ec13cd9c09ebbd9e11 100644 (file)
@@ -50,4 +50,5 @@ let TargetPrefix = "xcore" in {  // All intrinsics start with "llvm.xcore.".
 
   // Intrinsics for events.
   def int_xcore_waitevent : Intrinsic<[llvm_ptr_ty],[], [IntrReadMem]>;
+  def int_xcore_clre : Intrinsic<[],[],[]>;
 }
index 90a725220f2799e9ec50549bc97958559f722238..d9bd2a44becf2cb00ca3966896e1b62b6f97ac58 100644 (file)
@@ -895,10 +895,12 @@ def SETV_1r : _F1R<(outs), (ins GRRegs:$r),
                [(int_xcore_setv GRRegs:$r, R11)]>;
 
 // Zero operand short
-// TODO clre, ssync, freet, ldspc, stspc, ldssr, stssr, ldsed, stsed,
+// TODO ssync, freet, ldspc, stspc, ldssr, stssr, ldsed, stsed,
 // stet, geted, getet, getkep, getksp, setkep, getid, kret, dcall, dret,
 // dentsp, drestsp
 
+def CLRE_0R : _F0R<(outs), (ins), "clre", [(int_xcore_clre)]>;
+
 let Defs = [R11] in
 def GETID_0R : _F0R<(outs), (ins),
                  "get r11, id",
index 32b5a60977cc0aaabc5f75dbc009aac659bc9c16..4fc2f26d1b6be07623c775f12d65563bfc9d51cb 100644 (file)
@@ -2,10 +2,13 @@
 
 declare void @llvm.xcore.setv.p1i8(i8 addrspace(1)* %r, i8* %p)
 declare i8* @llvm.xcore.waitevent()
+declare void @llvm.xcore.clre()
 
 define i32 @f(i8 addrspace(1)* %r) nounwind {
 ; CHECK: f:
 entry:
+; CHECK: clre
+  call void @llvm.xcore.clre()
   call void @llvm.xcore.setv.p1i8(i8 addrspace(1)* %r, i8* blockaddress(@f, %L1))
   call void @llvm.xcore.setv.p1i8(i8 addrspace(1)* %r, i8* blockaddress(@f, %L2))
   %goto_addr = call i8* @llvm.xcore.waitevent()