summaryrefslogtreecommitdiff
path: root/tests/src/JIT/Regression/JitBlue/DevDiv_397793/DevDiv_397793.il
blob: 95d40b6bed4d4c3e3bca01b4ac6164fc40855768 (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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
// 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 ILGEN_MODULE{}

// This test originally failed compilation during CSE due to value numbers that were discarded during remorphing.
// The arguments to and return value from `ILGEN_METHOD` are not meaningful; it is enough that this function
// compiles successfully.

.class ILGEN_CLASS
{
    .method static float32 ILGEN_METHOD(int16, char, char, native int)
    {
        .maxstack  65535
        .locals init (int8, native unsigned int, int64, int8, bool, unsigned int64, char, float64, int64, native int, float32, int64, int64, unsigned int16)

        IL_0000: ldloc 0x000d
        IL_0004: not
        IL_0005: ldloc.s 0x06
        IL_0007: cgt.un
        IL_0009: ldloc.s 0x06
        IL_000b: clt.un
        IL_000d: conv.r4
        IL_000e: ldloc.s 0x08
        IL_0010: conv.r.un
        IL_0011: mul
        IL_0012: conv.i8
        IL_0013: ldloc.s 0x03
        IL_0015: conv.u1
        IL_0016: not
        IL_0017: ldloc.s 0x00
        IL_0019: ldloc.s 0x07
        IL_001b: neg
        IL_001c: conv.u1
        IL_001d: xor
        IL_001e: sub
        IL_001f: ldloc 0x000c
        IL_0023: neg
        IL_0024: conv.i8
        IL_0025: ldloc.s 0x07
        IL_0027: neg
        IL_0028: conv.u8
        IL_0029: conv.i8
        IL_002a: ldc.i4 0x2487c9b5
        IL_002f: conv.i8
        IL_0030: rem.un
        IL_0031: ldloc.s 0x09
        IL_0033: conv.i8
        IL_0034: ldloc.s 0x01
        IL_0036: neg
        IL_0037: not
        IL_0038: ldloc 0x0006
        IL_003c: mul
        IL_003d: shr.un
        IL_003e: add
        IL_003f: ldloc.s 0x0b
        IL_0041: conv.i4
        IL_0042: shr.un
        IL_0043: ldarg.s 0x03
        IL_0045: conv.i4
        IL_0046: ldloc.s 0x00
        IL_0048: clt
        IL_004a: neg
        IL_004b: ldloc.s 0x09
        IL_004d: pop
        IL_004e: conv.r.un
        IL_004f: conv.u8
        IL_0050: ldloc.s 0x05
        IL_0052: mul
        IL_0053: ldloc.s 0x0c
        IL_0055: conv.i8
        IL_0056: not
        IL_0057: cgt.un
        IL_0059: neg
        IL_005a: nop
        IL_005b: shl
        IL_005c: ldc.i8 0x6ddee7e52bcb7a50
        IL_0065: ldloc 0x0004
        IL_0069: shr.un
        IL_006a: pop
        IL_006b: and
        IL_006c: conv.u2
        IL_006d: add
        IL_006e: ldarg.s 0x02
        IL_0070: not
        IL_0071: neg
        IL_0072: pop
        IL_0073: ldarg.s 0x01
        IL_0075: ldloc 0x0008
        IL_0079: ldloc 0x000b
        IL_007d: clt
        IL_007f: conv.r.un
        IL_0080: pop
        IL_0081: ldloc 0x000c
        IL_0085: not
        IL_0086: ldloc.s 0x0c
        IL_0088: conv.u8
        IL_0089: mul
        IL_008a: ldloc 0x000b
        IL_008e: add
        IL_008f: ldloc 0x0002
        IL_0093: ldloc.s 0x0b
        IL_0095: rem
        IL_0096: ldc.i8 0xfe6f83985a745065
        IL_009f: add
        IL_00a0: neg
        IL_00a1: cgt.un
        IL_00a3: shr
        IL_00a4: conv.u8
        IL_00a5: nop
        IL_00a6: neg
        IL_00a7: neg
        IL_00a8: pop
        IL_00a9: shr
        IL_00aa: nop
        IL_00ab: conv.r.un
        IL_00ac: ret   
    }

    .method public static int32 Main()
    {
        .entrypoint

        .try
        {
            ldc.i4 0
            ldc.i4 0
            ldc.i4 0
            ldc.i4 0
            conv.i
            call float32 ILGEN_CLASS::ILGEN_METHOD(int16, char, char, native int)
            pop
            leave done
        }
        catch [mscorlib]System.Exception
        {
            pop
            leave done
        }

    done:
        ldc.i4 100
        ret
    }
}