summaryrefslogtreecommitdiff
path: root/tests/src/JIT/jit64/mcc/interop/mcc_i80.il
blob: 679188a8a45880dfaf31929d99ba16cdff557df0 (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
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.


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


.namespace MCCTest
{
  .class MyClass
  {
    .method assembly static pinvokeimpl("native_i8c" as "#1" cdecl) 
        vararg valuetype MCCTest.VType8 Sum(float64, int32, int64, float32, int16, float64) 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.r8     5
      ldc.i4     1
      ldc.i8     2
      ldc.r4     -1
      ldc.i4     -3
      conv.i2
      ldc.r8     8
      ldloc.s    v1
      ldloc.s    v2
      ldloc.s    v3
      ldloc.s    v4
      ldloc.s    v5
      ldloc.s    v6
      ldloc.s    v7
      ldloc.s    v8
      ldloc.s    v9
      ldloc.s    v10
      ldloc.s    v11
      ldloc.s    v12
      call   vararg valuetype MCCTest.VType8 MCCTest.MyClass::Sum(float64, int32, int64, float32, int16, float64, ..., 
																valuetype MCCTest.VType8, 
																valuetype MCCTest.VType8, 
																valuetype MCCTest.VType8, 
																valuetype MCCTest.VType8, 
																valuetype MCCTest.VType8, 
																valuetype MCCTest.VType8, 
																valuetype MCCTest.VType8, 
																valuetype MCCTest.VType8, 
																valuetype MCCTest.VType8, 
																valuetype MCCTest.VType8, 
																valuetype MCCTest.VType8, 
																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