[PATCH] D115114: [MSP430] Allow functions to be defined with MSP430_BUILTIN CC

LemonBoy via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Dec 5 06:27:53 PST 2021


LemonBoy created this revision.
LemonBoy added a reviewer: asl.
Herald added a subscriber: hiraditya.
LemonBoy requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Small patch to stop llc from triggering an error upon seeing a `cc94` function.
The included test ensures the arguments and return values are correctly placed in the registers mandated by the EABI P3 <https://reviews.llvm.org/P3>.3.5.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D115114

Files:
  llvm/lib/Target/MSP430/MSP430ISelLowering.cpp
  llvm/test/CodeGen/MSP430/cc_args.ll


Index: llvm/test/CodeGen/MSP430/cc_args.ll
===================================================================
--- llvm/test/CodeGen/MSP430/cc_args.ll
+++ llvm/test/CodeGen/MSP430/cc_args.ll
@@ -215,4 +215,24 @@
   ret i64 %3
 }
 
+define cc94 i64 @helper_i64(i64 %a, i64 %b) {
+; CHECK-LABEL: helper_i64:
+; CHECK: mov	r15, &g_i64_2+6
+; CHECK-NEXT: mov	r14, &g_i64_2+4
+; CHECK-NEXT: mov	r13, &g_i64_2+2
+; CHECK-NEXT: mov	r12, &g_i64_2
+; CHECK-NEXT: mov	r11, &g_i64+6
+; CHECK-NEXT: mov	r10, &g_i64+4
+; CHECK-NEXT: mov	r9, &g_i64+2
+; CHECK-NEXT: mov	r8, &g_i64
+; CHECK-NEXT: mov	#30600, r12
+; CHECK-NEXT: mov	#21862, r13
+; CHECK-NEXT: mov	#13124, r14
+; CHECK-NEXT: mov	#4386, r15
+; CHECK-NEXT: ret
+  store i64 %a, i64* @g_i64, align 2
+  store i64 %b, i64* @g_i64_2, align 2
+  ret i64 1234605616436508552
+}
+
 attributes #0 = { nounwind "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
Index: llvm/lib/Target/MSP430/MSP430ISelLowering.cpp
===================================================================
--- llvm/lib/Target/MSP430/MSP430ISelLowering.cpp
+++ llvm/lib/Target/MSP430/MSP430ISelLowering.cpp
@@ -571,6 +571,7 @@
   switch (CallConv) {
   default:
     report_fatal_error("Unsupported calling convention");
+  case CallingConv::MSP430_BUILTIN:
   case CallingConv::C:
   case CallingConv::Fast:
     return LowerCCCArguments(Chain, CallConv, isVarArg, Ins, dl, DAG, InVals);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D115114.391908.patch
Type: text/x-patch
Size: 1509 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211205/27002b81/attachment.bin>


More information about the llvm-commits mailing list