[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