summaryrefslogtreecommitdiff
path: root/tests/src/JIT/jit64/mcc/interop/native_i1c.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/JIT/jit64/mcc/interop/native_i1c.cpp')
-rw-r--r--tests/src/JIT/jit64/mcc/interop/native_i1c.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/tests/src/JIT/jit64/mcc/interop/native_i1c.cpp b/tests/src/JIT/jit64/mcc/interop/native_i1c.cpp
new file mode 100644
index 0000000000..0edeeeffa5
--- /dev/null
+++ b/tests/src/JIT/jit64/mcc/interop/native_i1c.cpp
@@ -0,0 +1,55 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+#include <stdarg.h>
+#include "native.h"
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wvarargs"
+
+MCC_API VType1 __cdecl sum(float first, ...) {
+ VType1 result;
+
+ int count = 0;
+ float sum = 0.0;
+ float val = first;
+ va_list args;
+
+ // initialize variable arguments.
+ va_start(args, first);
+ while (val != (float)-1) {
+ sum += val;
+ count++;
+ val = va_arg(args, float);
+ }
+ // reset variable arguments.
+ va_end(args);
+
+ result.count = (float)count;
+ result.sum = sum;
+ result.average = result.sum / result.count;
+
+ result.count1 = (float)count;
+ result.sum1 = sum;
+ result.average1 = result.sum1 / result.count1;
+
+ result.count2 = (float)count;
+ result.sum2 = sum;
+ result.average2 = result.sum2 / result.count2;
+
+ result.count3 = (float)count;
+ result.sum3 = sum;
+ result.average3 = result.sum3 / result.count3;
+
+ result.count4 = (float)count;
+ result.sum4 = sum;
+ result.average4 = result.sum4 / result.count4;
+
+ result.count5 = (float)count;
+ result.sum5 = sum;
+ result.average5 = result.sum5 / result.count5;
+
+ return result;
+}
+
+#pragma clang diagnostic pop \ No newline at end of file