summaryrefslogtreecommitdiff
path: root/tests/src/JIT/jit64/mcc/interop/mcc_i84.il
blob: d2a02fb7ff91b640bd7219a0b4589e7fb49b57d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.


.assembly extern mscorlib {}
.assembly MCCTest {}
.module mcc_i84.exe


.namespace MCCTest
{
  .class MyClass
  {
    .method assembly static pinvokeimpl("native_i8s" as "#1" stdcall) 
        valuetype MCCTest.VType8 Sum(unsigned int64, valuetype MCCTest.VType8, float64,	valuetype MCCTest.VType8, float32, valuetype MCCTest.VType8,
									int32, valuetype MCCTest.VType8, unsigned int16, valuetype MCCTest.VType8, unsigned int32, valuetype MCCTest.VType8, 
									float32, valuetype MCCTest.VType8, int64, valuetype MCCTest.VType8, float32, valuetype MCCTest.VType8,
									float64, valuetype MCCTest.VType8, float32, valuetype MCCTest.VType8, int16, valuetype MCCTest.VType8) cil managed preservesig {
    }

    .method private static int32 Main(string[] args)
    {
      .entrypoint
      .maxstack  64
      .locals init	(
        [0] valuetype MCCTest.VType8 res,
        [1] valuetype MCCTest.VType8 v1,
        [2] valuetype MCCTest.VType8 v2,
        [3] valuetype MCCTest.VType8 v3,
        [4] valuetype MCCTest.VType8 v4,
        [5] valuetype MCCTest.VType8 v5,
        [6] valuetype MCCTest.VType8 v6,
        [7] valuetype MCCTest.VType8 v7,
        [8] valuetype MCCTest.VType8 v8,
        [9] valuetype MCCTest.VType8 v9,
        [10] valuetype MCCTest.VType8 v10,
        [11] valuetype MCCTest.VType8 v11,
        [12] valuetype MCCTest.VType8 v12,
        [13] int32 rc
      )
      
      // Initialize v1 thru v12
      ldloca.s   v1
      call       instance void MCCTest.VType8::Init()
      ldloca.s   v2
      call       instance void MCCTest.VType8::Init()
      ldloca.s   v3
      call       instance void MCCTest.VType8::Init()
      ldloca.s   v4
      call       instance void MCCTest.VType8::Init()
      ldloca.s   v5
      call       instance void MCCTest.VType8::Init()
      ldloca.s   v6
      call       instance void MCCTest.VType8::Init()
      ldloca.s   v7
      call       instance void MCCTest.VType8::Init()
      ldloca.s   v8
      call       instance void MCCTest.VType8::Init()
      ldloca.s   v9
      call       instance void MCCTest.VType8::Init()
      ldloca.s   v10
      call       instance void MCCTest.VType8::Init()
      ldloca.s   v11
      call       instance void MCCTest.VType8::Init()
      ldloca.s   v12
      call       instance void MCCTest.VType8::Init()
      
      ldc.i8     1
      ldloc.s    v1
      ldc.r8     2
      ldloc.s    v2
      ldc.r4     3
      ldloc.s    v3
      ldc.i4     4
      ldloc.s    v4
      ldc.i8     5
      conv.u2
      ldloc.s    v5
      ldc.i4     6
      ldloc.s    v6
      ldc.r4     7
      ldloc.s    v7
      ldc.i8     8
      ldloc.s    v8
      ldc.r4     9
      ldloc.s    v9
      ldc.r8     10
      ldloc.s    v10
      ldc.r4     11
      ldloc.s    v11
      ldc.i8     12
      conv.i2
      ldloc.s    v12
      call       valuetype MCCTest.VType8 MCCTest.MyClass::Sum(	unsigned int64,	valuetype MCCTest.VType8, 
																float64,		valuetype MCCTest.VType8,
																float32,		valuetype MCCTest.VType8,
																int32,			valuetype MCCTest.VType8,
																unsigned int16,	valuetype MCCTest.VType8,
																unsigned int32,	valuetype MCCTest.VType8,
																float32,		valuetype MCCTest.VType8,
																int64,			valuetype MCCTest.VType8,
																float32,		valuetype MCCTest.VType8,
																float64,		valuetype MCCTest.VType8,
																float32,		valuetype MCCTest.VType8,
																int16,			valuetype MCCTest.VType8)

      stloc.s    res

      // Check Result
      ldloc.s    res
      ldc.i4     12
      call       int32 MCCTest.Common::CheckResult(valuetype MCCTest.VType8, int32)
      stloc.s    rc
      
      ldloc.s    rc
      ret
    } // end of method MyClass::Main

  } // end of class MyClass

} // end of namespace MCCTest