summaryrefslogtreecommitdiff
path: root/tests/src/JIT/Regression/JitBlue/GitHub_8460/GitHub_8460.cs
blob: f5c9aa281b2aa63441465d4f5995e2f3ddf2d56e (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
// 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.

using System;

namespace bug
{
    class Program
    {
        static int Pass = 100;
        static int Fail = -1;

        // This test is meant to check that in case of
        // GT_EQ/NE(shift, 0), JIT doesn't optimize out
        // 'test' instruction incorrectly, because shift
        // operations on xarch don't modify flags if the
        // shift count is zero.
        static int Main(string[] args)
        {
            // Absolute bits
            int bitCount = 0;
            while ((0 != (100 >> bitCount)) && (31 > bitCount))
            {
                bitCount++;
            }
            // Sign bit
            bitCount++;

            if (bitCount != 8)
            {
                return Fail;
            }

            return Pass;
        }
    }
}