diff options
author | SingleAccretion <62474226+SingleAccretion@users.noreply.github.com> | 2021-03-10 00:32:05 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-10 00:32:05 +0300 |
commit | 9ae7e7ebf52cbe624b19db38b8d404056b725c33 (patch) | |
tree | cc3b0fc75ec2228ecb6256152256f9b225f1fa2c /src/tests | |
parent | d9a7eba84072e2b87c8259849d4563fd40850a76 (diff) |
Do not block folding of unsigned (and unordered) comparisons in value numbering (#48568)
* Do not block folding of unsigned comparisons in value numbering
* Handle unordered FP comparisons in ValueNumStore::EvalComparison
* Added coverage of evaluating unordered FP comparisons of constants in value numbering
* Do not block evaluation of unordered comparisons with NaNs in ValueNumStore::VNForFunc
* Added coverage of early folding logic for cgt.un.r4
* Added coverage of early folding logic for cgt.un.r8
* Added coverage of early folding logic for clt.un.r4
* Added coverage of early folding logic for clt.un.r8
* Improve placement of comments
* Added coverage of early folding logic for bge.un.r4
* Added coverage of early folding logic for bge.un.r8
* Added coverage of early folding logic for bgt.un.r4
* Added coverage of early folding logic for bgt.un.r8
* Added coverage of early folding logic for ble.un.r4
* Added coverage of early folding logic for ble.un.r8
* Added coverage of early folding logic for blt.un.r4
* Added coverage of early folding logic for blt.un.r8
* Added coverage of early folding logic for bne.un.r4
* Added coverage of early folding logic for bne.un.r8
Diffstat (limited to 'src/tests')
16 files changed, 8212 insertions, 1321 deletions
diff --git a/src/tests/JIT/Directed/ConstantFolding/value_numbering_unordered_comparisons_of_constants.cs b/src/tests/JIT/Directed/ConstantFolding/value_numbering_unordered_comparisons_of_constants.cs new file mode 100644 index 00000000000..1904ebbd2a2 --- /dev/null +++ b/src/tests/JIT/Directed/ConstantFolding/value_numbering_unordered_comparisons_of_constants.cs @@ -0,0 +1,766 @@ +using System; +using System.Runtime.CompilerServices; + +public class ValueNumberingUnorderedComparisonsOfConstants +{ + private static readonly double _quietDoubleNaN = BitConverter.Int64BitsToDouble(unchecked((long)0xfff8000000000001)); + private static readonly float _quietFloatNaN = BitConverter.Int32BitsToSingle(unchecked((int)0xffc00001)); + + private static int _counter = 100; + + public static int Main() + { + // The conditions of the loops get reversed and duplicated. + // As part of this a comparison like a > b, which is really !IsNaN(a) && !IsNaN(b) && a > b + // Gets turned into IsNaN(a) || IsNaN(b) || a <= b. + // We are testing that the constant folding of these new unordered comparisons in VN is correct. + + TestDoubleComparisonsEvaluatingToTrue(); + TestSingleComparisonsEvaluatingToTrue(); + TestDoubleComparisonsEvaluatingToFalse(); + TestSingleComparisonsEvaluatingToFalse(); + + return _counter; + } + + // We rely on these static readonly fields being constants at compile time. + // This means that by the time the test methods are being compiled, the static constructor must have run. + [ModuleInitializer] + internal static void InitializeNaNs() => RuntimeHelpers.RunClassConstructor(typeof(ValueNumberingUnorderedComparisonsOfConstants).TypeHandle); + + private static void TestDoubleComparisonsEvaluatingToTrue() + { + // The following inverted conditions must be folded to "true". + // Meaning the loop body must never execute. + + // Basic scenarios + // VNF_LT_UN + for (double i = 1.0; i >= 2.0; i++) + _counter++; + // VNF_LE_UN + for (double i = -3.0; i > 4.0; i++) + _counter++; + for (double i = 5.0; i > 5.0; i++) + _counter++; + for (double i = 0.0; i > -0.0; i++) + _counter++; + // VNF_GT_UN + for (double i = 6.0; i <= -7.0; i++) + _counter++; + // VNF_GE_UN + for (double i = 8.0; i < -9.0; i++) + _counter++; + for (double i = 10.0; i < 10.0; i++) + _counter++; + for (double i = -0.0; i < 0.0; i++) + _counter++; + + // Positive infinities on the lhs + // VNF_GT_UN + for (double i = double.PositiveInfinity; i <= 11.0; i++) + _counter++; + // VNF_GE_UN + for (double i = double.PositiveInfinity; i < 12.0; i++) + _counter++; + + // Positive infinities on the rhs + // VNF_LT_UN + for (double i = 13.0; i >= double.PositiveInfinity; i++) + _counter++; + // VNF_LE_UN + for (double i = -14.0; i > double.PositiveInfinity; i++) + _counter++; + + // Positive infinities on both sides + // VNF_LE_UN + for (double i = double.PositiveInfinity; i > double.PositiveInfinity; i++) + _counter++; + // VNF_GE_UN + for (double i = double.PositiveInfinity; i < double.PositiveInfinity; i++) + _counter++; + + // Negative infinities on the lhs + // VNF_LT_UN + for (double i = double.NegativeInfinity; i >= 15.0; i++) + _counter++; + // VNF_LE_UN + for (double i = double.NegativeInfinity; i > 16.0; i++) + _counter++; + + // Negative infinities on the rhs + // VNF_GT_UN + for (double i = 17.0; i <= double.NegativeInfinity; i++) + _counter++; + // VNF_GE_UN + for (double i = 18.0; i < double.NegativeInfinity; i++) + _counter++; + + // Negative infinities on both sides + // VNF_LE_UN + for (double i = double.NegativeInfinity; i > double.NegativeInfinity; i++) + _counter++; + // VNF_GE_UN + for (double i = double.NegativeInfinity; i < double.NegativeInfinity; i++) + _counter++; + + // NaN on the lhs + // VNF_LT_UN + for (double i = double.NaN; i >= 19.0; i++) + _counter++; + for (double i = double.NaN; i >= double.PositiveInfinity; i++) + _counter++; + for (double i = double.NaN; i >= double.NegativeInfinity; i++) + _counter++; + for (double i = _quietDoubleNaN; i >= 19.0; i++) + _counter++; + for (double i = _quietDoubleNaN; i >= double.PositiveInfinity; i++) + _counter++; + for (double i = _quietDoubleNaN; i >= double.NegativeInfinity; i++) + _counter++; + // VNF_LE_UN + for (double i = double.NaN; i > 20.0; i++) + _counter++; + for (double i = double.NaN; i > double.PositiveInfinity; i++) + _counter++; + for (double i = double.NaN; i > double.NegativeInfinity; i++) + _counter++; + for (double i = _quietDoubleNaN; i > 20.0; i++) + _counter++; + for (double i = _quietDoubleNaN; i > double.PositiveInfinity; i++) + _counter++; + for (double i = _quietDoubleNaN; i > double.NegativeInfinity; i++) + _counter++; + // VNF_GT_UN + for (double i = double.NaN; i <= -21.0; i++) + _counter++; + for (double i = double.NaN; i <= double.PositiveInfinity; i++) + _counter++; + for (double i = double.NaN; i <= double.NegativeInfinity; i++) + _counter++; + for (double i = _quietDoubleNaN; i <= -21.0; i++) + _counter++; + for (double i = _quietDoubleNaN; i <= double.PositiveInfinity; i++) + _counter++; + for (double i = _quietDoubleNaN; i <= double.NegativeInfinity; i++) + _counter++; + // VNF_GE_UN + for (double i = double.NaN; i < 22.0; i++) + _counter++; + for (double i = double.NaN; i < double.PositiveInfinity; i++) + _counter++; + for (double i = double.NaN; i < double.NegativeInfinity; i++) + _counter++; + for (double i = _quietDoubleNaN; i < 22.0; i++) + _counter++; + for (double i = _quietDoubleNaN; i < double.PositiveInfinity; i++) + _counter++; + for (double i = _quietDoubleNaN; i < double.NegativeInfinity; i++) + _counter++; + + // NaN on the rhs + // VNF_LT_UN + for (double i = 23.0; i >= double.NaN; i++) + _counter++; + for (double i = double.NegativeInfinity; i >= double.NaN; i++) + _counter++; + for (double i = double.PositiveInfinity; i >= double.NaN; i++) + _counter++; + for (double i = 23.0; i >= _quietDoubleNaN; i++) + _counter++; + for (double i = double.NegativeInfinity; i >= _quietDoubleNaN; i++) + _counter++; + for (double i = double.PositiveInfinity; i >= _quietDoubleNaN; i++) + _counter++; + // VNF_LE_UN + for (double i = -24.0; i > double.NaN; i++) + _counter++; + for (double i = double.NegativeInfinity; i > double.NaN; i++) + _counter++; + for (double i = double.PositiveInfinity; i > double.NaN; i++) + _counter++; + for (double i = -24.0; i > _quietDoubleNaN; i++) + _counter++; + for (double i = double.NegativeInfinity; i > _quietDoubleNaN; i++) + _counter++; + for (double i = double.PositiveInfinity; i > _quietDoubleNaN; i++) + _counter++; + // VNF_GT_UN + for (double i = 25.0; i <= double.NaN; i++) + _counter++; + for (double i = double.NegativeInfinity; i <= double.NaN; i++) + _counter++; + for (double i = double.PositiveInfinity; i <= double.NaN; i++) + _counter++; + for (double i = 25.0; i <= _quietDoubleNaN; i++) + _counter++; + for (double i = double.NegativeInfinity; i <= _quietDoubleNaN; i++) + _counter++; + for (double i = double.PositiveInfinity; i <= _quietDoubleNaN; i++) + _counter++; + // VNF_GE_UN + for (double i = 26.0; i < double.NaN; i++) + _counter++; + for (double i = double.NegativeInfinity; i < double.NaN; i++) + _counter++; + for (double i = double.PositiveInfinity; i < double.NaN; i++) + _counter++; + for (double i = 26.0; i < _quietDoubleNaN; i++) + _counter++; + for (double i = double.NegativeInfinity; i < _quietDoubleNaN; i++) + _counter++; + for (double i = double.PositiveInfinity; i < _quietDoubleNaN; i++) + _counter++; + + // NaN on both sides + // VNF_LT_UN + for (double i = double.NaN; i >= double.NaN; i++) + _counter++; + for (double i = double.NaN; i >= _quietDoubleNaN; i++) + _counter++; + for (double i = _quietDoubleNaN; i >= double.NaN; i++) + _counter++; + for (double i = _quietDoubleNaN; i >= _quietDoubleNaN; i++) + _counter++; + // VNF_LE_UN + for (double i = double.NaN; i > double.NaN; i++) + _counter++; + for (double i = double.NaN; i > _quietDoubleNaN; i++) + _counter++; + for (double i = _quietDoubleNaN; i > double.NaN; i++) + _counter++; + for (double i = _quietDoubleNaN; i > _quietDoubleNaN; i++) + _counter++; + // VNF_GT_UN + for (double i = double.NaN; i <= double.NaN; i++) + _counter++; + for (double i = double.NaN; i <= _quietDoubleNaN; i++) + _counter++; + for (double i = _quietDoubleNaN; i <= double.NaN; i++) + _counter++; + for (double i = _quietDoubleNaN; i <= _quietDoubleNaN; i++) + _counter++; + // VNF_GE_UN + for (double i = double.NaN; i < double.NaN; i++) + _counter++; + for (double i = double.NaN; i < _quietDoubleNaN; i++) + _counter++; + for (double i = _quietDoubleNaN; i < double.NaN; i++) + _counter++; + for (double i = _quietDoubleNaN; i < _quietDoubleNaN; i++) + _counter++; + } + + private static void TestSingleComparisonsEvaluatingToTrue() + { + // The following inverted conditions must be folded to "true". + // Meaning the loop body must never execute. + + // Basic scenarios + // VNF_LT_UN + for (float i = 27.0f; i >= 28.0f; i++) + _counter++; + // VNF_LE_UN + for (float i = -29.0f; i > 30.0f; i++) + _counter++; + for (float i = 31.0f; i > 31.0f; i++) + _counter++; + for (float i = 0.0f; i > -0.0f; i++) + _counter++; + // VNF_GT_UN + for (float i = 32.0f; i <= -33.0f; i++) + _counter++; + // VNF_GE_UN + for (float i = 34.0f; i < -35.0f; i++) + _counter++; + for (float i = 36.0f; i < 36.0f; i++) + _counter++; + for (float i = -0.0f; i < 0.0f; i++) + _counter++; + + // Positive infinities on the lhs + // VNF_GT_UN + for (float i = float.PositiveInfinity; i <= 37.0f; i++) + _counter++; + // VNF_GE_UN + for (float i = float.PositiveInfinity; i < 38.0f; i++) + _counter++; + + // Positive infinities on the rhs + // VNF_LT_UN + for (float i = 39.0f; i >= float.PositiveInfinity; i++) + _counter++; + // VNF_LE_UN + for (float i = -40.0f; i > float.PositiveInfinity; i++) + _counter++; + + // Positive infinities on both sides + // VNF_LE_UN + for (float i = float.PositiveInfinity; i > float.PositiveInfinity; i++) + _counter++; + // VNF_GE_UN + for (float i = float.PositiveInfinity; i < float.PositiveInfinity; i++) + _counter++; + + // Negative infinities on the lhs + // VNF_LT_UN + for (float i = float.NegativeInfinity; i >= 41.0f; i++) + _counter++; + // VNF_LE_UN + for (float i = float.NegativeInfinity; i > 42.0f; i++) + _counter++; + + // Negative infinities on the rhs + // VNF_GT_UN + for (float i = 43.0f; i <= float.NegativeInfinity; i++) + _counter++; + // VNF_GE_UN + for (float i = 44.0f; i < float.NegativeInfinity; i++) + _counter++; + + // Negative infinities on both sides + // VNF_LE_UN + for (float i = float.NegativeInfinity; i > float.NegativeInfinity; i++) + _counter++; + // VNF_GE_UN + for (float i = float.NegativeInfinity; i < float.NegativeInfinity; i++) + _counter++; + + // NaN on the lhs + // VNF_LT_UN + for (float i = float.NaN; i >= 45.0f; i++) + _counter++; + for (float i = float.NaN; i >= float.PositiveInfinity; i++) + _counter++; + for (float i = float.NaN; i >= float.NegativeInfinity; i++) + _counter++; + for (float i = _quietFloatNaN; i >= 45.0f; i++) + _counter++; + for (float i = _quietFloatNaN; i >= float.PositiveInfinity; i++) + _counter++; + for (float i = _quietFloatNaN; i >= float.NegativeInfinity; i++) + _counter++; + // VNF_LE_UN + for (float i = float.NaN; i > 46.0f; i++) + _counter++; + for (float i = float.NaN; i > float.PositiveInfinity; i++) + _counter++; + for (float i = float.NaN; i > float.NegativeInfinity; i++) + _counter++; + for (float i = _quietFloatNaN; i > 46.0f; i++) + _counter++; + for (float i = _quietFloatNaN; i > float.PositiveInfinity; i++) + _counter++; + for (float i = _quietFloatNaN; i > float.NegativeInfinity; i++) + _counter++; + // VNF_GT_UN + for (float i = float.NaN; i <= -47.0f; i++) + _counter++; + for (float i = float.NaN; i <= float.PositiveInfinity; i++) + _counter++; + for (float i = float.NaN; i <= float.NegativeInfinity; i++) + _counter++; + for (float i = _quietFloatNaN; i <= -47.0f; i++) + _counter++; + for (float i = _quietFloatNaN; i <= float.PositiveInfinity; i++) + _counter++; + for (float i = _quietFloatNaN; i <= float.NegativeInfinity; i++) + _counter++; + // VNF_GE_UN + for (float i = float.NaN; i < 48.0f; i++) + _counter++; + for (float i = float.NaN; i < float.PositiveInfinity; i++) + _counter++; + for (float i = float.NaN; i < float.NegativeInfinity; i++) + _counter++; + for (float i = _quietFloatNaN; i < 48.0f; i++) + _counter++; + for (float i = _quietFloatNaN; i < float.PositiveInfinity; i++) + _counter++; + for (float i = _quietFloatNaN; i < float.NegativeInfinity; i++) + _counter++; + + // NaN on the rhs + // VNF_LT_UN + for (float i = 49.0f; i >= float.NaN; i++) + _counter++; + for (float i = float.NegativeInfinity; i >= float.NaN; i++) + _counter++; + for (float i = float.PositiveInfinity; i >= float.NaN; i++) + _counter++; + for (float i = 49.0f; i >= _quietFloatNaN; i++) + _counter++; + for (float i = float.NegativeInfinity; i >= _quietFloatNaN; i++) + _counter++; + for (float i = float.PositiveInfinity; i >= _quietFloatNaN; i++) + _counter++; + // VNF_LE_UN + for (float i = -50.0f; i > float.NaN; i++) + _counter++; + for (float i = float.NegativeInfinity; i > float.NaN; i++) + _counter++; + for (float i = float.PositiveInfinity; i > float.NaN; i++) + _counter++; + for (float i = -50.0f; i > _quietFloatNaN; i++) + _counter++; + for (float i = float.NegativeInfinity; i > _quietFloatNaN; i++) + _counter++; + for (float i = float.PositiveInfinity; i > _quietFloatNaN; i++) + _counter++; + // VNF_GT_UN + for (float i = 51.0f; i <= float.NaN; i++) + _counter++; + for (float i = float.NegativeInfinity; i <= float.NaN; i++) + _counter++; + for (float i = float.PositiveInfinity; i <= float.NaN; i++) + _counter++; + for (float i = 51.0f; i <= _quietFloatNaN; i++) + _counter++; + for (float i = float.NegativeInfinity; i <= _quietFloatNaN; i++) + _counter++; + for (float i = float.PositiveInfinity; i <= _quietFloatNaN; i++) + _counter++; + // VNF_GE_UN + for (float i = 52.0f; i < float.NaN; i++) + _counter++; + for (float i = float.NegativeInfinity; i < float.NaN; i++) + _counter++; + for (float i = float.PositiveInfinity; i < float.NaN; i++) + _counter++; + for (float i = 52.0f; i < _quietFloatNaN; i++) + _counter++; + for (float i = float.NegativeInfinity; i < _quietFloatNaN; i++) + _counter++; + for (float i = float.PositiveInfinity; i < _quietFloatNaN; i++) + _counter++; + + // NaN on both sides + // VNF_LT_UN + for (float i = float.NaN; i >= float.NaN; i++) + _counter++; + for (float i = float.NaN; i >= _quietFloatNaN; i++) + _counter++; + for (float i = _quietFloatNaN; i >= float.NaN; i++) + _counter++; + for (float i = _quietFloatNaN; i >= _quietFloatNaN; i++) + _counter++; + // VNF_LE_UN + for (float i = float.NaN; i > float.NaN; i++) + _counter++; + for (float i = float.NaN; i > _quietFloatNaN; i++) + _counter++; + for (float i = _quietFloatNaN; i > float.NaN; i++) + _counter++; + for (float i = _quietFloatNaN; i > _quietFloatNaN; i++) + _counter++; + // VNF_GT_UN + for (float i = float.NaN; i <= float.NaN; i++) + _counter++; + for (float i = float.NaN; i <= _quietFloatNaN; i++) + _counter++; + for (float i = _quietFloatNaN; i <= float.NaN; i++) + _counter++; + for (float i = _quietFloatNaN; i <= _quietFloatNaN; i++) + _counter++; + // VNF_GE_UN + for (float i = float.NaN; i < float.NaN; i++) + _counter++; + for (float i = float.NaN; i < _quietFloatNaN; i++) + _counter++; + for (float i = _quietFloatNaN; i < float.NaN; i++) + _counter++; + for (float i = _quietFloatNaN; i < _quietFloatNaN; i++) + _counter++; + } + + private static void TestDoubleComparisonsEvaluatingToFalse() + { + // The following inverted conditions must be folded to "true". + // Meaning the loop body must execute. + // The "i = double.NaN" pattern is equivalent to "break". + // We use it here as it is less likely to be optimized in the future before the loop condition is duplicated. + + // Basic scenarios + // VNF_LT_UN + for (double i = 54.0; i >= 53.0; i++) + { + _counter++; + i = double.NaN; + } + _counter--; + for (double i = 55.0; i >= 55.0; i++) + { + _counter++; + i = double.NaN; + } + _counter--; + // VNF_LE_UN + for (double i = 56.0; i > -57.0; i++) + { + _counter++; + i = double.NaN; + } + _counter--; + // VNF_GT_UN + for (double i = -58.0; i <= 59.0; i++) + { + _counter++; + i = double.NaN; + } + _counter--; + for (double i = -60.0; i <= -60.0; i++) + { + _counter++; + i = double.NaN; + } + _counter--; + // VNF_GE_UN + for (double i = -62.0; i < 61.0; i++) + { + _counter++; + i = double.NaN; + } + _counter--; + + // Positive infinities on the lhs + // VNF_LT_UN + for (double i = double.PositiveInfinity; i >= 63.0; i++) + { + _counter++; + i = double.NaN; + } + _counter--; + // VNF_LE_UN + for (double i = double.PositiveInfinity; i > -64.0; i++) + { + _counter++; + i = double.NaN; + } + _counter--; + + // Positive infinities on the rhs + // VNF_GT_UN + for (double i = -65.0; i <= double.PositiveInfinity; i++) + { + _counter++; + i = double.NaN; + } + _counter--; + // VNF_GE_UN + for (double i = -66.0; i < double.PositiveInfinity; i++) + { + _counter++; + i = double.NaN; + } + _counter--; + + // Positive infinities on both sides + // VNF_LT_UN + for (double i = double.PositiveInfinity; i >= double.PositiveInfinity; i++) + { + _counter++; + i = double.NaN; + } + _counter--; + // VNF_GT_UN + for (double i = double.PositiveInfinity; i <= double.PositiveInfinity; i++) + { + _counter++; + i = double.NaN; + } + _counter--; + + // Negative infinities on the lhs + // VNF_GT_UN + for (double i = double.NegativeInfinity; i <= 67.0; i++) + { + _counter++; + i = double.NaN; + } + _counter--; + // VNF_GE_UN + for (double i = double.NegativeInfinity; i < 68.0; i++) + { + _counter++; + i = double.NaN; + } + _counter--; + + // Negative infinities on the rhs + // VNF_LT_UN + for (double i = 69.0; i >= double.NegativeInfinity; i++) + { + _counter++; + i = double.NaN; + } + _counter--; + // VNF_LE_UN + for (double i = 70.0; i > double.NegativeInfinity; i++) + { + _counter++; + i = double.NaN; + } + _counter--; + + // Negative infinities on both sides + // VNF_LT_UN + for (double i = double.NegativeInfinity; i >= double.NegativeInfinity; i++) + { + _counter++; + i = double.NaN; + } + _counter--; + // VNF_GT_UN + for (double i = double.NegativeInfinity; i <= double.NegativeInfinity; i++) + { + _counter++; + i = double.NaN; + } + _counter--; + } + + private static void TestSingleComparisonsEvaluatingToFalse() + { + // The following inverted conditions must be folded to "true". + // Meaning the loop body must execute. + // The "i = float.NaN" pattern is equivalent to "break". + // We use it here as it is less likely to be optimized in the future before the loop condition is duplicated. + + // Basic scenarios + // VNF_LT_UN + for (float i = 71.0f; i >= 70.0f; i++) + { + _counter++; + i = float.NaN; + } + _counter--; + for (float i = 72.0f; i >= 72.0f; i++) + { + _counter++; + i = float.NaN; + } + _counter--; + // VNF_LE_UN + for (float i = 73.0f; i > -74.0f; i++) + { + _counter++; + i = float.NaN; + } + _counter--; + // VNF_GT_UN + for (float i = -75.0f; i <= 76.0f; i++) + { + _counter++; + i = float.NaN; + } + _counter--; + for (float i = -77.0f; i <= -77.0f; i++) + { + _counter++; + i = float.NaN; + } + _counter--; + // VNF_GE_UN + for (float i = -79.0f; i < 78.0f; i++) + { + _counter++; + i = float.NaN; + } + _counter--; + + // Positive infinities on the lhs + // VNF_LT_UN + for (float i = float.PositiveInfinity; i >= 80.0f; i++) + { + _counter++; + i = float.NaN; + } + _counter--; + // VNF_LE_UN + for (float i = float.PositiveInfinity; i > -81.0f; i++) + { + _counter++; + i = float.NaN; + } + _counter--; + + // Positive infinities on the rhs + // VNF_GT_UN + for (float i = -82.0f; i <= float.PositiveInfinity; i++) + { + _counter++; + i = float.NaN; + } + _counter--; + // VNF_GE_UN + for (float i = -83.0f; i < float.PositiveInfinity; i++) + { + _counter++; + i = float.NaN; + } + _counter--; + + // Positive infinities on both sides + // VNF_LT_UN + for (float i = float.PositiveInfinity; i >= float.PositiveInfinity; i++) + { + _counter++; + i = float.NaN; + } + _counter--; + // VNF_GT_UN + for (float i = float.PositiveInfinity; i <= float.PositiveInfinity; i++) + { + _counter++; + i = float.NaN; + } + _counter--; + + // Negative infinities on the lhs + // VNF_GT_UN + for (float i = float.NegativeInfinity; i <= 84.0f; i++) + { + _counter++; + i = float.NaN; + } + _counter--; + // VNF_GE_UN + for (float i = float.NegativeInfinity; i < 85.0f; i++) + { + _counter++; + i = float.NaN; + } + _counter--; + + // Negative infinities on the rhs + // VNF_LT_UN + for (float i = 86.0f; i >= float.NegativeInfinity; i++) + { + _counter++; + i = float.NaN; + } + _counter--; + // VNF_LE_UN + for (float i = 87.0f; i > float.NegativeInfinity; i++) + { + _counter++; + i = float.NaN; + } + _counter--; + + // Negative infinities on both sides + // VNF_LT_UN + for (float i = float.NegativeInfinity; i >= float.NegativeInfinity; i++) + { + _counter++; + i = float.NaN; + } + _counter--; + // VNF_GT_UN + for (float i = float.NegativeInfinity; i <= float.NegativeInfinity; i++) + { + _counter++; + i = float.NaN; + } + _counter--; + } +} diff --git a/src/tests/JIT/Directed/ConstantFolding/value_numbering_unordered_comparisons_of_constants_ro.csproj b/src/tests/JIT/Directed/ConstantFolding/value_numbering_unordered_comparisons_of_constants_ro.csproj new file mode 100644 index 00000000000..8cce6c7e514 --- /dev/null +++ b/src/tests/JIT/Directed/ConstantFolding/value_numbering_unordered_comparisons_of_constants_ro.csproj @@ -0,0 +1,13 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <OutputType>Exe</OutputType> + <CLRTestPriority>1</CLRTestPriority> + </PropertyGroup> + <PropertyGroup> + <Optimize>True</Optimize> + <DebugType>None</DebugType> + </PropertyGroup> + <ItemGroup> + <Compile Include="value_numbering_unordered_comparisons_of_constants.cs" /> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bge_un_r4.il b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bge_un_r4.il index 9ff23b46435..c652ab6766c 100644 --- a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bge_un_r4.il +++ b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bge_un_r4.il @@ -2,11 +2,18 @@ // The .NET Foundation licenses this file to you under the MIT license. .assembly extern legacy library mscorlib {} - - - .assembly extern ConvDLL{} +#define NEG_INF "float32(0xFF800000)" +#define MIN "float32(0xFF7FFFFF)" +#define MINUS_ONE "float32(0xBF800000)" +#define MINUS_ZERO "float32(0x80000000)" +#define ZERO "float32(0x00000000)" +#define ONE "float32(0x3F800000)" +#define MAX "float32(0x7F7FFFFF)" +#define POS_INF "float32(0x7F800000)" +#define NAN "float32(0x7FC00000)" + .method public static int32 main(class [mscorlib]System.String[]) { .entrypoint .maxstack 2 @@ -606,6 +613,457 @@ SS: ldfld float32 [ConvDLL]ConvDLL::NaN_r4 ldloc 0 ldfld float32 [ConvDLL]ConvDLL::NaN_r4 + bge.un L0 + br FAIL + + // Testing early folding logic + +L0: + ldc.r4 POS_INF + ldc.r4 POS_INF + bge.un L1 + br FAIL + +L1: + ldc.r4 POS_INF + ldc.r4 MAX + bge.un L2 + br FAIL + +L2: + ldc.r4 POS_INF + ldc.r4 ONE + bge.un L3 + br FAIL + +L3: + ldc.r4 POS_INF + ldc.r4 ZERO + bge.un L4 + br FAIL + +L4: + ldc.r4 POS_INF + ldc.r4 float32(0x80000000) + bge.un L5 + br FAIL + +L5: + ldc.r4 POS_INF + ldc.r4 MINUS_ONE + bge.un L6 + br FAIL + +L6: + ldc.r4 POS_INF + ldc.r4 MIN + bge.un L7 + br FAIL + +L7: + ldc.r4 POS_INF + ldc.r4 NEG_INF + bge.un L8 + br FAIL + +L8: + ldc.r4 POS_INF + ldc.r4 NAN + bge.un L9 + br FAIL + + +L9: + ldc.r4 MAX + ldc.r4 POS_INF + bge.un L10 + + ldc.r4 MAX + ldc.r4 MAX + bge.un L10 + br FAIL + +L10: + ldc.r4 MAX + ldc.r4 ONE + bge.un L11 + br FAIL + +L11: + ldc.r4 MAX + ldc.r4 ZERO + bge.un L12 + br FAIL + +L12: + ldc.r4 MAX + ldc.r4 float32(0x80000000) + bge.un L13 + br FAIL + +L13: + ldc.r4 MAX + ldc.r4 MINUS_ONE + bge.un L14 + br FAIL + +L14: + ldc.r4 MAX + ldc.r4 MIN + bge.un L15 + br FAIL + +L15: + ldc.r4 MAX + ldc.r4 NEG_INF + bge.un L16 + br FAIL + +L16: + ldc.r4 MAX + ldc.r4 NAN + bge.un L17 + br FAIL + + + +L17: + ldc.r4 ONE + ldc.r4 POS_INF + bge.un L18 + + ldc.r4 ONE + ldc.r4 MAX + bge.un L18 + + ldc.r4 ONE + ldc.r4 ONE + bge.un L18 + br FAIL + +L18: + ldc.r4 ONE + ldc.r4 ZERO + bge.un L19 + br FAIL + +L19: + ldc.r4 ONE + ldc.r4 float32(0x80000000) + bge.un L20 + br FAIL + +L20: + ldc.r4 ONE + ldc.r4 MINUS_ONE + bge.un L21 + br FAIL + +L21: + ldc.r4 ONE + ldc.r4 MIN + bge.un L22 + br FAIL + +L22: + ldc.r4 ONE + ldc.r4 NEG_INF + bge.un L23 + br FAIL + +L23: + ldc.r4 ONE + ldc.r4 NAN + bge.un L24 + br FAIL + + + +L24: + ldc.r4 ZERO + ldc.r4 POS_INF + bge.un L25 + + ldc.r4 ZERO + ldc.r4 MAX + bge.un L25 + + ldc.r4 ZERO + ldc.r4 ONE + bge.un L25 + + ldc.r4 ZERO + ldc.r4 ZERO + bge.un L25 + br FAIL + +L25: + ldc.r4 ZERO + ldc.r4 float32(0x80000000) + bge.un L26 + br FAIL + +L26: + ldc.r4 ZERO + ldc.r4 MINUS_ONE + bge.un L27 + br FAIL + +L27: + ldc.r4 ZERO + ldc.r4 MIN + bge.un L28 + br FAIL + +L28: + ldc.r4 ZERO + ldc.r4 NEG_INF + bge.un L29 + br FAIL + +L29: + ldc.r4 ZERO + ldc.r4 NAN + bge.un L30 + br FAIL + + + +L30: + ldc.r4 float32(0x80000000) + ldc.r4 POS_INF + bge.un L31 + + ldc.r4 float32(0x80000000) + ldc.r4 MAX + bge.un L31 + + ldc.r4 float32(0x80000000) + ldc.r4 ONE + bge.un L31 + + ldc.r4 float32(0x80000000) + ldc.r4 ZERO + bge.un L31 + br FAIL + +L31: + ldc.r4 float32(0x80000000) + ldc.r4 float32(0x80000000) + bge.un L32 + br FAIL + +L32: + ldc.r4 float32(0x80000000) + ldc.r4 MINUS_ONE + bge.un L33 + br FAIL + +L33: + ldc.r4 float32(0x80000000) + ldc.r4 MIN + bge.un L34 + br FAIL + +L34: + ldc.r4 float32(0x80000000) + ldc.r4 NEG_INF + bge.un L35 + br FAIL + +L35: + ldc.r4 float32(0x80000000) + ldc.r4 NAN + bge.un L36 + br FAIL + + + +L36: + ldc.r4 MINUS_ONE + ldc.r4 POS_INF + bge.un L37 + + ldc.r4 MINUS_ONE + ldc.r4 MAX + bge.un L37 + + ldc.r4 MINUS_ONE + ldc.r4 ONE + bge.un L37 + + ldc.r4 MINUS_ONE + ldc.r4 ZERO + bge.un L37 + + ldc.r4 MINUS_ONE + ldc.r4 float32(0x80000000) + bge.un L37 + + ldc.r4 MINUS_ONE + ldc.r4 MINUS_ONE + bge.un L37 + br FAIL + +L37: + ldc.r4 MINUS_ONE + ldc.r4 MIN + bge.un L38 + br FAIL + +L38: + ldc.r4 MINUS_ONE + ldc.r4 NEG_INF + bge.un L39 + br FAIL + +L39: + ldc.r4 MINUS_ONE + ldc.r4 NAN + bge.un L40 + br FAIL + + + +L40: + ldc.r4 MIN + ldc.r4 POS_INF + bge.un L41 + + ldc.r4 MIN + ldc.r4 MAX + bge.un L41 + + ldc.r4 MIN + ldc.r4 ONE + bge.un L41 + + ldc.r4 MIN + ldc.r4 ZERO + bge.un L41 + + ldc.r4 MIN + ldc.r4 float32(0x80000000) + bge.un L41 + + ldc.r4 MIN + ldc.r4 MINUS_ONE + bge.un L41 + + ldc.r4 MIN + ldc.r4 MIN + bge.un L41 + br FAIL + +L41: + ldc.r4 MIN + ldc.r4 NEG_INF + bge.un L42 + br FAIL + +L42: + ldc.r4 MIN + ldc.r4 NAN + bge.un L43 + br FAIL + + + + +L43: + ldc.r4 NEG_INF + ldc.r4 POS_INF + bge.un L44 + + ldc.r4 NEG_INF + ldc.r4 MAX + bge.un L44 + + ldc.r4 NEG_INF + ldc.r4 ONE + bge.un L44 + + ldc.r4 NEG_INF + ldc.r4 ZERO + bge.un L44 + + ldc.r4 NEG_INF + ldc.r4 float32(0x80000000) + bge.un L44 + + ldc.r4 NEG_INF + ldc.r4 MINUS_ONE + bge.un L44 + + ldc.r4 NEG_INF + ldc.r4 MIN + bge.un L44 + + ldc.r4 NEG_INF + ldc.r4 NEG_INF + bge.un L44 + br FAIL + +L44: + ldc.r4 NEG_INF + ldc.r4 NAN + bge.un L45 + br FAIL + + + + +L45: + ldc.r4 NAN + ldc.r4 POS_INF + bge.un L46 + br FAIL + +L46: + ldc.r4 NAN + ldc.r4 MAX + bge.un L47 + br FAIL + +L47: + ldc.r4 NAN + ldc.r4 ONE + bge.un L48 + br FAIL + +L48: + ldc.r4 NAN + ldc.r4 ZERO + bge.un L49 + br FAIL + +L49: + ldc.r4 NAN + ldc.r4 float32(0x80000000) + bge.un L50 + br FAIL + +L50: + ldc.r4 NAN + ldc.r4 MINUS_ONE + bge.un L51 + br FAIL + +L51: + ldc.r4 NAN + ldc.r4 MIN + bge.un L52 + br FAIL + +L52: + ldc.r4 NAN + ldc.r4 NEG_INF + bge.un L53 + br FAIL + +L53: + ldc.r4 NAN + ldc.r4 NAN bge.un BACKCHECK br FAIL diff --git a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bge_un_r8.il b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bge_un_r8.il index 01d8511fcde..0a4f995fd95 100644 --- a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bge_un_r8.il +++ b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bge_un_r8.il @@ -2,11 +2,18 @@ // The .NET Foundation licenses this file to you under the MIT license. .assembly extern legacy library mscorlib {} - - - .assembly extern ConvDLL{} +#define NEG_INF "float64(0xFFF0000000000000)" +#define MIN "float64(0xFF7FFFFFFFFFFFFF)" +#define MINUS_ONE "float64(0xBFF0000000000000)" +#define MINUS_ZERO "float64(0x8000000000000000)" +#define ZERO "float64(0x0000000000000000)" +#define ONE "float64(0x3FF0000000000000)" +#define MAX "float64(0x7FEFFFFFFFFFFFFF)" +#define POS_INF "float64(0x7FF0000000000000)" +#define NAN "float64(0x7FF8000000000000)" + .method public static int32 main(class [mscorlib]System.String[]) { .entrypoint .maxstack 2 @@ -88,7 +95,8 @@ H: br FAIL -_H: ldloc 0 +_H: + ldloc 0 ldfld float64 [ConvDLL]ConvDLL::max_r8 ldloc 0 ldfld float64 [ConvDLL]ConvDLL::inf_r8 @@ -605,6 +613,457 @@ SS: ldfld float64 [ConvDLL]ConvDLL::NaN_r8 ldloc 0 ldfld float64 [ConvDLL]ConvDLL::NaN_r8 + bge.un L0 + br FAIL + + // Testing early folding logic + +L0: + ldc.r8 POS_INF + ldc.r8 POS_INF + bge.un L1 + br FAIL + +L1: + ldc.r8 POS_INF + ldc.r8 MAX + bge.un L2 + br FAIL + +L2: + ldc.r8 POS_INF + ldc.r8 ONE + bge.un L3 + br FAIL + +L3: + ldc.r8 POS_INF + ldc.r8 ZERO + bge.un L4 + br FAIL + +L4: + ldc.r8 POS_INF + ldc.r8 float64(0x8000000000000000) + bge.un L5 + br FAIL + +L5: + ldc.r8 POS_INF + ldc.r8 MINUS_ONE + bge.un L6 + br FAIL + +L6: + ldc.r8 POS_INF + ldc.r8 MIN + bge.un L7 + br FAIL + +L7: + ldc.r8 POS_INF + ldc.r8 NEG_INF + bge.un L8 + br FAIL + +L8: + ldc.r8 POS_INF + ldc.r8 NAN + bge.un L9 + br FAIL + + +L9: + ldc.r8 MAX + ldc.r8 POS_INF + bge.un L10 + + ldc.r8 MAX + ldc.r8 MAX + bge.un L10 + br FAIL + +L10: + ldc.r8 MAX + ldc.r8 ONE + bge.un L11 + br FAIL + +L11: + ldc.r8 MAX + ldc.r8 ZERO + bge.un L12 + br FAIL + +L12: + ldc.r8 MAX + ldc.r8 float64(0x8000000000000000) + bge.un L13 + br FAIL + +L13: + ldc.r8 MAX + ldc.r8 MINUS_ONE + bge.un L14 + br FAIL + +L14: + ldc.r8 MAX + ldc.r8 MIN + bge.un L15 + br FAIL + +L15: + ldc.r8 MAX + ldc.r8 NEG_INF + bge.un L16 + br FAIL + +L16: + ldc.r8 MAX + ldc.r8 NAN + bge.un L17 + br FAIL + + + +L17: + ldc.r8 ONE + ldc.r8 POS_INF + bge.un L18 + + ldc.r8 ONE + ldc.r8 MAX + bge.un L18 + + ldc.r8 ONE + ldc.r8 ONE + bge.un L18 + br FAIL + +L18: + ldc.r8 ONE + ldc.r8 ZERO + bge.un L19 + br FAIL + +L19: + ldc.r8 ONE + ldc.r8 float64(0x8000000000000000) + bge.un L20 + br FAIL + +L20: + ldc.r8 ONE + ldc.r8 MINUS_ONE + bge.un L21 + br FAIL + +L21: + ldc.r8 ONE + ldc.r8 MIN + bge.un L22 + br FAIL + +L22: + ldc.r8 ONE + ldc.r8 NEG_INF + bge.un L23 + br FAIL + +L23: + ldc.r8 ONE + ldc.r8 NAN + bge.un L24 + br FAIL + + + +L24: + ldc.r8 ZERO + ldc.r8 POS_INF + bge.un L25 + + ldc.r8 ZERO + ldc.r8 MAX + bge.un L25 + + ldc.r8 ZERO + ldc.r8 ONE + bge.un L25 + + ldc.r8 ZERO + ldc.r8 ZERO + bge.un L25 + br FAIL + +L25: + ldc.r8 ZERO + ldc.r8 float64(0x8000000000000000) + bge.un L26 + br FAIL + +L26: + ldc.r8 ZERO + ldc.r8 MINUS_ONE + bge.un L27 + br FAIL + +L27: + ldc.r8 ZERO + ldc.r8 MIN + bge.un L28 + br FAIL + +L28: + ldc.r8 ZERO + ldc.r8 NEG_INF + bge.un L29 + br FAIL + +L29: + ldc.r8 ZERO + ldc.r8 NAN + bge.un L30 + br FAIL + + + +L30: + ldc.r8 float64(0x8000000000000000) + ldc.r8 POS_INF + bge.un L31 + + ldc.r8 float64(0x8000000000000000) + ldc.r8 MAX + bge.un L31 + + ldc.r8 float64(0x8000000000000000) + ldc.r8 ONE + bge.un L31 + + ldc.r8 float64(0x8000000000000000) + ldc.r8 ZERO + bge.un L31 + br FAIL + +L31: + ldc.r8 float64(0x8000000000000000) + ldc.r8 float64(0x8000000000000000) + bge.un L32 + br FAIL + +L32: + ldc.r8 float64(0x8000000000000000) + ldc.r8 MINUS_ONE + bge.un L33 + br FAIL + +L33: + ldc.r8 float64(0x8000000000000000) + ldc.r8 MIN + bge.un L34 + br FAIL + +L34: + ldc.r8 float64(0x8000000000000000) + ldc.r8 NEG_INF + bge.un L35 + br FAIL + +L35: + ldc.r8 float64(0x8000000000000000) + ldc.r8 NAN + bge.un L36 + br FAIL + + + +L36: + ldc.r8 MINUS_ONE + ldc.r8 POS_INF + bge.un L37 + + ldc.r8 MINUS_ONE + ldc.r8 MAX + bge.un L37 + + ldc.r8 MINUS_ONE + ldc.r8 ONE + bge.un L37 + + ldc.r8 MINUS_ONE + ldc.r8 ZERO + bge.un L37 + + ldc.r8 MINUS_ONE + ldc.r8 float64(0x8000000000000000) + bge.un L37 + + ldc.r8 MINUS_ONE + ldc.r8 MINUS_ONE + bge.un L37 + br FAIL + +L37: + ldc.r8 MINUS_ONE + ldc.r8 MIN + bge.un L38 + br FAIL + +L38: + ldc.r8 MINUS_ONE + ldc.r8 NEG_INF + bge.un L39 + br FAIL + +L39: + ldc.r8 MINUS_ONE + ldc.r8 NAN + bge.un L40 + br FAIL + + + +L40: + ldc.r8 MIN + ldc.r8 POS_INF + bge.un L41 + + ldc.r8 MIN + ldc.r8 MAX + bge.un L41 + + ldc.r8 MIN + ldc.r8 ONE + bge.un L41 + + ldc.r8 MIN + ldc.r8 ZERO + bge.un L41 + + ldc.r8 MIN + ldc.r8 float64(0x8000000000000000) + bge.un L41 + + ldc.r8 MIN + ldc.r8 MINUS_ONE + bge.un L41 + + ldc.r8 MIN + ldc.r8 MIN + bge.un L41 + br FAIL + +L41: + ldc.r8 MIN + ldc.r8 NEG_INF + bge.un L42 + br FAIL + +L42: + ldc.r8 MIN + ldc.r8 NAN + bge.un L43 + br FAIL + + + + +L43: + ldc.r8 NEG_INF + ldc.r8 POS_INF + bge.un L44 + + ldc.r8 NEG_INF + ldc.r8 MAX + bge.un L44 + + ldc.r8 NEG_INF + ldc.r8 ONE + bge.un L44 + + ldc.r8 NEG_INF + ldc.r8 ZERO + bge.un L44 + + ldc.r8 NEG_INF + ldc.r8 float64(0x8000000000000000) + bge.un L44 + + ldc.r8 NEG_INF + ldc.r8 MINUS_ONE + bge.un L44 + + ldc.r8 NEG_INF + ldc.r8 MIN + bge.un L44 + + ldc.r8 NEG_INF + ldc.r8 NEG_INF + bge.un L44 + br FAIL + +L44: + ldc.r8 NEG_INF + ldc.r8 NAN + bge.un L45 + br FAIL + + + + +L45: + ldc.r8 NAN + ldc.r8 POS_INF + bge.un L46 + br FAIL + +L46: + ldc.r8 NAN + ldc.r8 MAX + bge.un L47 + br FAIL + +L47: + ldc.r8 NAN + ldc.r8 ONE + bge.un L48 + br FAIL + +L48: + ldc.r8 NAN + ldc.r8 ZERO + bge.un L49 + br FAIL + +L49: + ldc.r8 NAN + ldc.r8 float64(0x8000000000000000) + bge.un L50 + br FAIL + +L50: + ldc.r8 NAN + ldc.r8 MINUS_ONE + bge.un L51 + br FAIL + +L51: + ldc.r8 NAN + ldc.r8 MIN + bge.un L52 + br FAIL + +L52: + ldc.r8 NAN + ldc.r8 NEG_INF + bge.un L53 + br FAIL + +L53: + ldc.r8 NAN + ldc.r8 NAN bge.un BACKCHECK br FAIL diff --git a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bgt_un_r4.il b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bgt_un_r4.il index 863bb2df72f..4b5eed4d97d 100644 --- a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bgt_un_r4.il +++ b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bgt_un_r4.il @@ -3,38 +3,47 @@ .assembly extern legacy library mscorlib {} +#define NEG_INF "float32(0xFF800000)" +#define MIN "float32(0xFF7FFFFF)" +#define MINUS_ONE "float32(0xBF800000)" +#define MINUS_ZERO "float32(0x80000000)" +#define ZERO "float32(0x00000000)" +#define ONE "float32(0x3F800000)" +#define MAX "float32(0x7F7FFFFF)" +#define POS_INF "float32(0x7F800000)" +#define NAN "float32(0x7FC00000)" .class public bgt_un { -.field public static float32 _inf -.field public static float32 _min -.field public static float32 _one -.field public static float32 _zero +.field public static float32 neg_inf +.field public static float32 min +.field public static float32 minus_one +.field public static float32 minus_zero .field public static float32 zero .field public static float32 one .field public static float32 max -.field public static float32 inf +.field public static float32 pos_inf .field public static float32 NaN .method public static void initialize() { .maxstack 10 - ldc.r4 float32(0xFF800000) - stsfld float32 bgt_un::_inf - ldc.r4 float32(0xFF7FFFFF) - stsfld float32 bgt_un::_min - ldc.r4 float32(0xBF800000) - stsfld float32 bgt_un::_one - ldc.r4 float32(0x80000000) - stsfld float32 bgt_un::_zero - ldc.r4 float32(0x00000000) + ldc.r4 NEG_INF + stsfld float32 bgt_un::neg_inf + ldc.r4 MIN + stsfld float32 bgt_un::min + ldc.r4 MINUS_ONE + stsfld float32 bgt_un::minus_one + ldc.r4 MINUS_ZERO + stsfld float32 bgt_un::minus_zero + ldc.r4 ZERO stsfld float32 bgt_un::zero - ldc.r4 float32(0x3F800000) + ldc.r4 ONE stsfld float32 bgt_un::one - ldc.r4 float32(0x7F7FFFFF) + ldc.r4 MAX stsfld float32 bgt_un::max - ldc.r4 float32(0x7F800000) - stsfld float32 bgt_un::inf - ldc.r4 float32(0x7FC00000) + ldc.r4 POS_INF + stsfld float32 bgt_un::pos_inf + ldc.r4 NAN stsfld float32 bgt_un::NaN ret } @@ -44,189 +53,189 @@ .maxstack 10 call void bgt_un::initialize() - ldsfld float32 bgt_un::_inf - ldsfld float32 bgt_un::_inf + ldsfld float32 bgt_un::neg_inf + ldsfld float32 bgt_un::neg_inf bgt.un FAIL - ldsfld float32 bgt_un::_inf - ldsfld float32 bgt_un::_min + ldsfld float32 bgt_un::neg_inf + ldsfld float32 bgt_un::min bgt.un FAIL - ldsfld float32 bgt_un::_inf - ldsfld float32 bgt_un::_one + ldsfld float32 bgt_un::neg_inf + ldsfld float32 bgt_un::minus_one bgt.un FAIL - ldsfld float32 bgt_un::_inf - ldsfld float32 bgt_un::_zero + ldsfld float32 bgt_un::neg_inf + ldsfld float32 bgt_un::minus_zero bgt.un FAIL - ldsfld float32 bgt_un::_inf + ldsfld float32 bgt_un::neg_inf ldsfld float32 bgt_un::zero bgt.un FAIL - ldsfld float32 bgt_un::_inf + ldsfld float32 bgt_un::neg_inf ldsfld float32 bgt_un::one bgt.un FAIL - ldsfld float32 bgt_un::_inf + ldsfld float32 bgt_un::neg_inf ldsfld float32 bgt_un::max bgt.un FAIL - ldsfld float32 bgt_un::_inf - ldsfld float32 bgt_un::inf + ldsfld float32 bgt_un::neg_inf + ldsfld float32 bgt_un::pos_inf bgt.un FAIL - ldsfld float32 bgt_un::_inf + ldsfld float32 bgt_un::neg_inf ldsfld float32 bgt_un::NaN bgt.un A br FAIL A: - ldsfld float32 bgt_un::_min - ldsfld float32 bgt_un::_inf + ldsfld float32 bgt_un::min + ldsfld float32 bgt_un::neg_inf bgt.un B br FAIL B: - ldsfld float32 bgt_un::_min - ldsfld float32 bgt_un::_min + ldsfld float32 bgt_un::min + ldsfld float32 bgt_un::min bgt.un FAIL - ldsfld float32 bgt_un::_min - ldsfld float32 bgt_un::_one + ldsfld float32 bgt_un::min + ldsfld float32 bgt_un::minus_one bgt.un FAIL - ldsfld float32 bgt_un::_min - ldsfld float32 bgt_un::_zero + ldsfld float32 bgt_un::min + ldsfld float32 bgt_un::minus_zero bgt.un FAIL - ldsfld float32 bgt_un::_min + ldsfld float32 bgt_un::min ldsfld float32 bgt_un::zero bgt.un FAIL - ldsfld float32 bgt_un::_min + ldsfld float32 bgt_un::min ldsfld float32 bgt_un::one bgt.un FAIL - ldsfld float32 bgt_un::_min + ldsfld float32 bgt_un::min ldsfld float32 bgt_un::max bgt.un FAIL - ldsfld float32 bgt_un::_min - ldsfld float32 bgt_un::inf + ldsfld float32 bgt_un::min + ldsfld float32 bgt_un::pos_inf bgt.un FAIL - ldsfld float32 bgt_un::_min + ldsfld float32 bgt_un::min ldsfld float32 bgt_un::NaN bgt.un C br FAIL C: - ldsfld float32 bgt_un::_one - ldsfld float32 bgt_un::_inf + ldsfld float32 bgt_un::minus_one + ldsfld float32 bgt_un::neg_inf bgt.un D br FAIL D: - ldsfld float32 bgt_un::_one - ldsfld float32 bgt_un::_min + ldsfld float32 bgt_un::minus_one + ldsfld float32 bgt_un::min bgt.un E br FAIL E: - ldsfld float32 bgt_un::_one - ldsfld float32 bgt_un::_one + ldsfld float32 bgt_un::minus_one + ldsfld float32 bgt_un::minus_one bgt.un FAIL - ldsfld float32 bgt_un::_one - ldsfld float32 bgt_un::_zero + ldsfld float32 bgt_un::minus_one + ldsfld float32 bgt_un::minus_zero bgt.un FAIL - ldsfld float32 bgt_un::_one + ldsfld float32 bgt_un::minus_one ldsfld float32 bgt_un::zero bgt.un FAIL - ldsfld float32 bgt_un::_one + ldsfld float32 bgt_un::minus_one ldsfld float32 bgt_un::one bgt.un FAIL - ldsfld float32 bgt_un::_one + ldsfld float32 bgt_un::minus_one ldsfld float32 bgt_un::max bgt.un FAIL - ldsfld float32 bgt_un::_one - ldsfld float32 bgt_un::inf + ldsfld float32 bgt_un::minus_one + ldsfld float32 bgt_un::pos_inf bgt.un FAIL - ldsfld float32 bgt_un::_one + ldsfld float32 bgt_un::minus_one ldsfld float32 bgt_un::NaN bgt.un F br FAIL F: - ldsfld float32 bgt_un::_zero - ldsfld float32 bgt_un::_inf + ldsfld float32 bgt_un::minus_zero + ldsfld float32 bgt_un::neg_inf bgt.un G br FAIL G: - ldsfld float32 bgt_un::_zero - ldsfld float32 bgt_un::_min + ldsfld float32 bgt_un::minus_zero + ldsfld float32 bgt_un::min bgt.un H br FAIL H: - ldsfld float32 bgt_un::_zero - ldsfld float32 bgt_un::_one + ldsfld float32 bgt_un::minus_zero + ldsfld float32 bgt_un::minus_one bgt.un I br FAIL I: - ldsfld float32 bgt_un::_zero - ldsfld float32 bgt_un::_zero + ldsfld float32 bgt_un::minus_zero + ldsfld float32 bgt_un::minus_zero bgt.un FAIL - ldsfld float32 bgt_un::_zero + ldsfld float32 bgt_un::minus_zero ldsfld float32 bgt_un::zero bgt.un FAIL - ldsfld float32 bgt_un::_zero + ldsfld float32 bgt_un::minus_zero ldsfld float32 bgt_un::one bgt.un FAIL - ldsfld float32 bgt_un::_zero + ldsfld float32 bgt_un::minus_zero ldsfld float32 bgt_un::max bgt.un FAIL - ldsfld float32 bgt_un::_zero - ldsfld float32 bgt_un::inf + ldsfld float32 bgt_un::minus_zero + ldsfld float32 bgt_un::pos_inf bgt.un FAIL - ldsfld float32 bgt_un::_zero + ldsfld float32 bgt_un::minus_zero ldsfld float32 bgt_un::NaN bgt.un J br FAIL J: ldsfld float32 bgt_un::zero - ldsfld float32 bgt_un::_inf + ldsfld float32 bgt_un::neg_inf bgt.un K br FAIL K: ldsfld float32 bgt_un::zero - ldsfld float32 bgt_un::_min + ldsfld float32 bgt_un::min bgt.un L br FAIL L: ldsfld float32 bgt_un::zero - ldsfld float32 bgt_un::_one + ldsfld float32 bgt_un::minus_one bgt.un M br FAIL M: ldsfld float32 bgt_un::zero - ldsfld float32 bgt_un::_zero + ldsfld float32 bgt_un::minus_zero bgt.un FAIL ldsfld float32 bgt_un::zero @@ -242,7 +251,7 @@ M: bgt.un FAIL ldsfld float32 bgt_un::zero - ldsfld float32 bgt_un::inf + ldsfld float32 bgt_un::pos_inf bgt.un FAIL ldsfld float32 bgt_un::zero @@ -252,25 +261,25 @@ M: N: ldsfld float32 bgt_un::one - ldsfld float32 bgt_un::_inf + ldsfld float32 bgt_un::neg_inf bgt.un O br FAIL O: ldsfld float32 bgt_un::one - ldsfld float32 bgt_un::_min + ldsfld float32 bgt_un::min bgt.un P br FAIL P: ldsfld float32 bgt_un::one - ldsfld float32 bgt_un::_one + ldsfld float32 bgt_un::minus_one bgt.un Q br FAIL Q: ldsfld float32 bgt_un::one - ldsfld float32 bgt_un::_zero + ldsfld float32 bgt_un::minus_zero bgt.un R br FAIL @@ -290,7 +299,7 @@ S: bgt.un FAIL ldsfld float32 bgt_un::one - ldsfld float32 bgt_un::inf + ldsfld float32 bgt_un::pos_inf bgt.un FAIL ldsfld float32 bgt_un::one @@ -300,25 +309,25 @@ S: T: ldsfld float32 bgt_un::max - ldsfld float32 bgt_un::_inf + ldsfld float32 bgt_un::neg_inf bgt.un U br FAIL U: ldsfld float32 bgt_un::max - ldsfld float32 bgt_un::_min + ldsfld float32 bgt_un::min bgt.un V br FAIL V: ldsfld float32 bgt_un::max - ldsfld float32 bgt_un::_one + ldsfld float32 bgt_un::minus_one bgt.un W br FAIL W: ldsfld float32 bgt_un::max - ldsfld float32 bgt_un::_zero + ldsfld float32 bgt_un::minus_zero bgt.un X br FAIL @@ -340,7 +349,7 @@ Z: bgt.un FAIL ldsfld float32 bgt_un::max - ldsfld float32 bgt_un::inf + ldsfld float32 bgt_un::pos_inf bgt.un FAIL ldsfld float32 bgt_un::max @@ -349,78 +358,78 @@ Z: br FAIL AA: - ldsfld float32 bgt_un::inf - ldsfld float32 bgt_un::_inf + ldsfld float32 bgt_un::pos_inf + ldsfld float32 bgt_un::neg_inf bgt.un BB br FAIL BB: - ldsfld float32 bgt_un::inf - ldsfld float32 bgt_un::_min + ldsfld float32 bgt_un::pos_inf + ldsfld float32 bgt_un::min bgt.un CC br FAIL CC: - ldsfld float32 bgt_un::inf - ldsfld float32 bgt_un::_one + ldsfld float32 bgt_un::pos_inf + ldsfld float32 bgt_un::minus_one bgt.un DD br FAIL DD: - ldsfld float32 bgt_un::inf - ldsfld float32 bgt_un::_zero + ldsfld float32 bgt_un::pos_inf + ldsfld float32 bgt_un::minus_zero bgt.un EE br FAIL EE: - ldsfld float32 bgt_un::inf + ldsfld float32 bgt_un::pos_inf ldsfld float32 bgt_un::zero bgt.un FF br FAIL FF: - ldsfld float32 bgt_un::inf + ldsfld float32 bgt_un::pos_inf ldsfld float32 bgt_un::one bgt.un GG br FAIL GG: - ldsfld float32 bgt_un::inf + ldsfld float32 bgt_un::pos_inf ldsfld float32 bgt_un::max bgt.un HH br FAIL HH: - ldsfld float32 bgt_un::inf - ldsfld float32 bgt_un::inf + ldsfld float32 bgt_un::pos_inf + ldsfld float32 bgt_un::pos_inf bgt.un FAIL - ldsfld float32 bgt_un::inf + ldsfld float32 bgt_un::pos_inf ldsfld float32 bgt_un::NaN bgt.un II br FAIL II: ldsfld float32 bgt_un::NaN - ldsfld float32 bgt_un::_inf + ldsfld float32 bgt_un::neg_inf bgt.un JJ br FAIL JJ: ldsfld float32 bgt_un::NaN - ldsfld float32 bgt_un::_min + ldsfld float32 bgt_un::min bgt.un KK br FAIL KK: ldsfld float32 bgt_un::NaN - ldsfld float32 bgt_un::_one + ldsfld float32 bgt_un::minus_one bgt.un LL br FAIL LL: ldsfld float32 bgt_un::NaN - ldsfld float32 bgt_un::_zero + ldsfld float32 bgt_un::minus_zero bgt.un MM br FAIL @@ -444,14 +453,428 @@ OO: PP: ldsfld float32 bgt_un::NaN - ldsfld float32 bgt_un::inf + ldsfld float32 bgt_un::pos_inf bgt.un QQ br FAIL QQ: ldsfld float32 bgt_un::NaN ldsfld float32 bgt_un::NaN - bgt.un BACKCHECK + bgt.un L0 + br FAIL + + // Testing early folding logic + +L0: + ldc.r4 NEG_INF + ldc.r4 NEG_INF + bgt.un FAIL + + ldc.r4 NEG_INF + ldc.r4 MIN + bgt.un FAIL + + ldc.r4 NEG_INF + ldc.r4 MINUS_ONE + bgt.un FAIL + + ldc.r4 NEG_INF + ldc.r4 MINUS_ZERO + bgt.un FAIL + + ldc.r4 NEG_INF + ldc.r4 ZERO + bgt.un FAIL + + ldc.r4 NEG_INF + ldc.r4 ONE + bgt.un FAIL + + ldc.r4 NEG_INF + ldc.r4 MAX + bgt.un FAIL + + ldc.r4 NEG_INF + ldc.r4 POS_INF + bgt.un FAIL + + ldc.r4 NEG_INF + ldc.r4 NAN + bgt.un L1 + br FAIL + +L1: + ldc.r4 MIN + ldc.r4 NEG_INF + bgt.un L2 + br FAIL + +L2: + ldc.r4 MIN + ldc.r4 MIN + bgt.un FAIL + + ldc.r4 MIN + ldc.r4 MINUS_ONE + bgt.un FAIL + + ldc.r4 MIN + ldc.r4 MINUS_ZERO + bgt.un FAIL + + ldc.r4 MIN + ldc.r4 ZERO + bgt.un FAIL + + ldc.r4 MIN + ldc.r4 ONE + bgt.un FAIL + + ldc.r4 MIN + ldc.r4 MAX + bgt.un FAIL + + ldc.r4 MIN + ldc.r4 POS_INF + bgt.un FAIL + + ldc.r4 MIN + ldc.r4 NAN + bgt.un L3 + br FAIL + +L3: + ldc.r4 MINUS_ONE + ldc.r4 NEG_INF + bgt.un L4 + br FAIL + +L4: + ldc.r4 MINUS_ONE + ldc.r4 MIN + bgt.un L5 + br FAIL + +L5: + ldc.r4 MINUS_ONE + ldc.r4 MINUS_ONE + bgt.un FAIL + + ldc.r4 MINUS_ONE + ldc.r4 MINUS_ZERO + bgt.un FAIL + + ldc.r4 MINUS_ONE + ldc.r4 ZERO + bgt.un FAIL + + ldc.r4 MINUS_ONE + ldc.r4 ONE + bgt.un FAIL + + ldc.r4 MINUS_ONE + ldc.r4 MAX + bgt.un FAIL + + ldc.r4 MINUS_ONE + ldc.r4 POS_INF + bgt.un FAIL + + ldc.r4 MINUS_ONE + ldc.r4 NAN + bgt.un L6 + br FAIL + +L6: + ldc.r4 MINUS_ZERO + ldc.r4 NEG_INF + bgt.un L7 + br FAIL + +L7: + ldc.r4 MINUS_ZERO + ldc.r4 MIN + bgt.un L8 + br FAIL + +L8: + ldc.r4 MINUS_ZERO + ldc.r4 MINUS_ONE + bgt.un L9 + br FAIL + +L9: + ldc.r4 MINUS_ZERO + ldc.r4 MINUS_ZERO + bgt.un FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 ZERO + bgt.un FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 ONE + bgt.un FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 MAX + bgt.un FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 POS_INF + bgt.un FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 NAN + bgt.un L10 + br FAIL + +L10: + ldc.r4 ZERO + ldc.r4 NEG_INF + bgt.un L11 + br FAIL + +L11: + ldc.r4 ZERO + ldc.r4 MIN + bgt.un L12 + br FAIL + +L12: + ldc.r4 ZERO + ldc.r4 MINUS_ONE + bgt.un L13 + br FAIL + +L13: + ldc.r4 ZERO + ldc.r4 MINUS_ZERO + bgt.un FAIL + + ldc.r4 ZERO + ldc.r4 ZERO + bgt.un FAIL + + ldc.r4 ZERO + ldc.r4 ONE + bgt.un FAIL + + ldc.r4 ZERO + ldc.r4 MAX + bgt.un FAIL + + ldc.r4 ZERO + ldc.r4 POS_INF + bgt.un FAIL + + ldc.r4 ZERO + ldc.r4 NAN + bgt.un L14 + br FAIL + +L14: + ldc.r4 ONE + ldc.r4 NEG_INF + bgt.un L15 + br FAIL + +L15: + ldc.r4 ONE + ldc.r4 MIN + bgt.un L16 + br FAIL + +L16: + ldc.r4 ONE + ldc.r4 MINUS_ONE + bgt.un L17 + br FAIL + +L17: + ldc.r4 ONE + ldc.r4 MINUS_ZERO + bgt.un L18 + br FAIL + +L18: + ldc.r4 ONE + ldc.r4 ZERO + bgt.un L19 + br FAIL + +L19: + ldc.r4 ONE + ldc.r4 ONE + bgt.un FAIL + + ldc.r4 ONE + ldc.r4 MAX + bgt.un FAIL + + ldc.r4 ONE + ldc.r4 POS_INF + bgt.un FAIL + + ldc.r4 ONE + ldc.r4 NAN + bgt.un L20 + br FAIL + +L20: + ldc.r4 MAX + ldc.r4 NEG_INF + bgt.un L21 + br FAIL + +L21: + ldc.r4 MAX + ldc.r4 MIN + bgt.un L22 + br FAIL + +L22: + ldc.r4 MAX + ldc.r4 MINUS_ONE + bgt.un L23 + br FAIL + +L23: + ldc.r4 MAX + ldc.r4 MINUS_ZERO + bgt.un L24 + br FAIL + +L24: + ldc.r4 MAX + ldc.r4 ZERO + bgt.un L25 + br FAIL + +L25: + ldc.r4 MAX + ldc.r4 ONE + bgt.un L26 + br FAIL + +L26: + ldc.r4 MAX + ldc.r4 MAX + bgt.un FAIL + + ldc.r4 MAX + ldc.r4 POS_INF + bgt.un FAIL + + ldc.r4 MAX + ldc.r4 NAN + bgt.un L27 + br FAIL + +L27: + ldc.r4 POS_INF + ldc.r4 NEG_INF + bgt.un L28 + br FAIL + +L28: + ldc.r4 POS_INF + ldc.r4 MIN + bgt.un L29 + br FAIL + +L29: + ldc.r4 POS_INF + ldc.r4 MINUS_ONE + bgt.un L30 + br FAIL + +L30: + ldc.r4 POS_INF + ldc.r4 MINUS_ZERO + bgt.un L31 + br FAIL + +L31: + ldc.r4 POS_INF + ldc.r4 ZERO + bgt.un L32 + br FAIL + +L32: + ldc.r4 POS_INF + ldc.r4 ONE + bgt.un L33 + br FAIL + +L33: + ldc.r4 POS_INF + ldc.r4 MAX + bgt.un L34 + br FAIL + +L34: + ldc.r4 POS_INF + ldc.r4 POS_INF + bgt.un FAIL + + ldc.r4 POS_INF + ldc.r4 NAN + bgt.un L35 + br FAIL + +L35: + ldc.r4 NAN + ldc.r4 NEG_INF + bgt.un L36 + br FAIL + +L36: + ldc.r4 NAN + ldc.r4 MIN + bgt.un L37 + br FAIL + +L37: + ldc.r4 NAN + ldc.r4 MINUS_ONE + bgt.un L38 + br FAIL + +L38: + ldc.r4 NAN + ldc.r4 MINUS_ZERO + bgt.un L39 + br FAIL + +L39: + ldc.r4 NAN + ldc.r4 ZERO + bgt.un L40 + br FAIL + +L40: + ldc.r4 NAN + ldc.r4 ONE + bgt.un L41 + br FAIL + +L41: + ldc.r4 NAN + ldc.r4 MAX + bgt.un L42 + br FAIL + +L42: + ldc.r4 NAN + ldc.r4 POS_INF + bgt.un L43 + br FAIL + +L43: + ldc.r4 NAN + ldc.r4 NAN + bgt.un BACKCHECK br FAIL TOPASS: diff --git a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bgt_un_r8.il b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bgt_un_r8.il index 850e9af06cb..e3f46e8509a 100644 --- a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bgt_un_r8.il +++ b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bgt_un_r8.il @@ -3,38 +3,47 @@ .assembly extern legacy library mscorlib {} +#define NEG_INF "float64(0xFFF0000000000000)" +#define MIN "float64(0xFF7FFFFFFFFFFFFF)" +#define MINUS_ONE "float64(0xBFF0000000000000)" +#define MINUS_ZERO "float64(0x8000000000000000)" +#define ZERO "float64(0x0000000000000000)" +#define ONE "float64(0x3FF0000000000000)" +#define MAX "float64(0x7FEFFFFFFFFFFFFF)" +#define POS_INF "float64(0x7FF0000000000000)" +#define NAN "float64(0x7FF8000000000000)" .class public bgt_un { -.field public static float64 _inf -.field public static float64 _min -.field public static float64 _one -.field public static float64 _zero +.field public static float64 neg_inf +.field public static float64 min +.field public static float64 minus_one +.field public static float64 minus_zero .field public static float64 zero .field public static float64 one .field public static float64 max -.field public static float64 inf +.field public static float64 pos_inf .field public static float64 NaN .method public static void initialize() { .maxstack 10 - ldc.r8 float64(0xFFF0000000000000) - stsfld float64 bgt_un::_inf - ldc.r8 float64(0xFF7FFFFFFFFFFFFF) - stsfld float64 bgt_un::_min - ldc.r8 float64(0xBFF0000000000000) - stsfld float64 bgt_un::_one - ldc.r8 float64(0x8000000000000000) - stsfld float64 bgt_un::_zero - ldc.r8 float64(0x0000000000000000) + ldc.r8 NEG_INF + stsfld float64 bgt_un::neg_inf + ldc.r8 MIN + stsfld float64 bgt_un::min + ldc.r8 MINUS_ONE + stsfld float64 bgt_un::minus_one + ldc.r8 MINUS_ZERO + stsfld float64 bgt_un::minus_zero + ldc.r8 ZERO stsfld float64 bgt_un::zero - ldc.r8 float64(0x3FF0000000000000) + ldc.r8 ONE stsfld float64 bgt_un::one - ldc.r8 float64(0x7FEFFFFFFFFFFFFF) + ldc.r8 MAX stsfld float64 bgt_un::max - ldc.r8 float64(0x7FF0000000000000) - stsfld float64 bgt_un::inf - ldc.r8 float64(0x7FF8000000000000) + ldc.r8 POS_INF + stsfld float64 bgt_un::pos_inf + ldc.r8 NAN stsfld float64 bgt_un::NaN ret } @@ -44,189 +53,189 @@ .maxstack 10 call void bgt_un::initialize() - ldsfld float64 bgt_un::_inf - ldsfld float64 bgt_un::_inf + ldsfld float64 bgt_un::neg_inf + ldsfld float64 bgt_un::neg_inf bgt.un FAIL - ldsfld float64 bgt_un::_inf - ldsfld float64 bgt_un::_min + ldsfld float64 bgt_un::neg_inf + ldsfld float64 bgt_un::min bgt.un FAIL - ldsfld float64 bgt_un::_inf - ldsfld float64 bgt_un::_one + ldsfld float64 bgt_un::neg_inf + ldsfld float64 bgt_un::minus_one bgt.un FAIL - ldsfld float64 bgt_un::_inf - ldsfld float64 bgt_un::_zero + ldsfld float64 bgt_un::neg_inf + ldsfld float64 bgt_un::minus_zero bgt.un FAIL - ldsfld float64 bgt_un::_inf + ldsfld float64 bgt_un::neg_inf ldsfld float64 bgt_un::zero bgt.un FAIL - ldsfld float64 bgt_un::_inf + ldsfld float64 bgt_un::neg_inf ldsfld float64 bgt_un::one bgt.un FAIL - ldsfld float64 bgt_un::_inf + ldsfld float64 bgt_un::neg_inf ldsfld float64 bgt_un::max bgt.un FAIL - ldsfld float64 bgt_un::_inf - ldsfld float64 bgt_un::inf + ldsfld float64 bgt_un::neg_inf + ldsfld float64 bgt_un::pos_inf bgt.un FAIL - ldsfld float64 bgt_un::_inf + ldsfld float64 bgt_un::neg_inf ldsfld float64 bgt_un::NaN bgt.un A br FAIL A: - ldsfld float64 bgt_un::_min - ldsfld float64 bgt_un::_inf + ldsfld float64 bgt_un::min + ldsfld float64 bgt_un::neg_inf bgt.un B br FAIL B: - ldsfld float64 bgt_un::_min - ldsfld float64 bgt_un::_min + ldsfld float64 bgt_un::min + ldsfld float64 bgt_un::min bgt.un FAIL - ldsfld float64 bgt_un::_min - ldsfld float64 bgt_un::_one + ldsfld float64 bgt_un::min + ldsfld float64 bgt_un::minus_one bgt.un FAIL - ldsfld float64 bgt_un::_min - ldsfld float64 bgt_un::_zero + ldsfld float64 bgt_un::min + ldsfld float64 bgt_un::minus_zero bgt.un FAIL - ldsfld float64 bgt_un::_min + ldsfld float64 bgt_un::min ldsfld float64 bgt_un::zero bgt.un FAIL - ldsfld float64 bgt_un::_min + ldsfld float64 bgt_un::min ldsfld float64 bgt_un::one bgt.un FAIL - ldsfld float64 bgt_un::_min + ldsfld float64 bgt_un::min ldsfld float64 bgt_un::max bgt.un FAIL - ldsfld float64 bgt_un::_min - ldsfld float64 bgt_un::inf + ldsfld float64 bgt_un::min + ldsfld float64 bgt_un::pos_inf bgt.un FAIL - ldsfld float64 bgt_un::_min + ldsfld float64 bgt_un::min ldsfld float64 bgt_un::NaN bgt.un C br FAIL C: - ldsfld float64 bgt_un::_one - ldsfld float64 bgt_un::_inf + ldsfld float64 bgt_un::minus_one + ldsfld float64 bgt_un::neg_inf bgt.un D br FAIL D: - ldsfld float64 bgt_un::_one - ldsfld float64 bgt_un::_min + ldsfld float64 bgt_un::minus_one + ldsfld float64 bgt_un::min bgt.un E br FAIL E: - ldsfld float64 bgt_un::_one - ldsfld float64 bgt_un::_one + ldsfld float64 bgt_un::minus_one + ldsfld float64 bgt_un::minus_one bgt.un FAIL - ldsfld float64 bgt_un::_one - ldsfld float64 bgt_un::_zero + ldsfld float64 bgt_un::minus_one + ldsfld float64 bgt_un::minus_zero bgt.un FAIL - ldsfld float64 bgt_un::_one + ldsfld float64 bgt_un::minus_one ldsfld float64 bgt_un::zero bgt.un FAIL - ldsfld float64 bgt_un::_one + ldsfld float64 bgt_un::minus_one ldsfld float64 bgt_un::one bgt.un FAIL - ldsfld float64 bgt_un::_one + ldsfld float64 bgt_un::minus_one ldsfld float64 bgt_un::max bgt.un FAIL - ldsfld float64 bgt_un::_one - ldsfld float64 bgt_un::inf + ldsfld float64 bgt_un::minus_one + ldsfld float64 bgt_un::pos_inf bgt.un FAIL - ldsfld float64 bgt_un::_one + ldsfld float64 bgt_un::minus_one ldsfld float64 bgt_un::NaN bgt.un F br FAIL F: - ldsfld float64 bgt_un::_zero - ldsfld float64 bgt_un::_inf + ldsfld float64 bgt_un::minus_zero + ldsfld float64 bgt_un::neg_inf bgt.un G br FAIL G: - ldsfld float64 bgt_un::_zero - ldsfld float64 bgt_un::_min + ldsfld float64 bgt_un::minus_zero + ldsfld float64 bgt_un::min bgt.un H br FAIL H: - ldsfld float64 bgt_un::_zero - ldsfld float64 bgt_un::_one + ldsfld float64 bgt_un::minus_zero + ldsfld float64 bgt_un::minus_one bgt.un I br FAIL I: - ldsfld float64 bgt_un::_zero - ldsfld float64 bgt_un::_zero + ldsfld float64 bgt_un::minus_zero + ldsfld float64 bgt_un::minus_zero bgt.un FAIL - ldsfld float64 bgt_un::_zero + ldsfld float64 bgt_un::minus_zero ldsfld float64 bgt_un::zero bgt.un FAIL - ldsfld float64 bgt_un::_zero + ldsfld float64 bgt_un::minus_zero ldsfld float64 bgt_un::one bgt.un FAIL - ldsfld float64 bgt_un::_zero + ldsfld float64 bgt_un::minus_zero ldsfld float64 bgt_un::max bgt.un FAIL - ldsfld float64 bgt_un::_zero - ldsfld float64 bgt_un::inf + ldsfld float64 bgt_un::minus_zero + ldsfld float64 bgt_un::pos_inf bgt.un FAIL - ldsfld float64 bgt_un::_zero + ldsfld float64 bgt_un::minus_zero ldsfld float64 bgt_un::NaN bgt.un J br FAIL J: ldsfld float64 bgt_un::zero - ldsfld float64 bgt_un::_inf + ldsfld float64 bgt_un::neg_inf bgt.un K br FAIL K: ldsfld float64 bgt_un::zero - ldsfld float64 bgt_un::_min + ldsfld float64 bgt_un::min bgt.un L br FAIL L: ldsfld float64 bgt_un::zero - ldsfld float64 bgt_un::_one + ldsfld float64 bgt_un::minus_one bgt.un M br FAIL M: ldsfld float64 bgt_un::zero - ldsfld float64 bgt_un::_zero + ldsfld float64 bgt_un::minus_zero bgt.un FAIL ldsfld float64 bgt_un::zero @@ -242,7 +251,7 @@ M: bgt.un FAIL ldsfld float64 bgt_un::zero - ldsfld float64 bgt_un::inf + ldsfld float64 bgt_un::pos_inf bgt.un FAIL ldsfld float64 bgt_un::zero @@ -252,25 +261,25 @@ M: N: ldsfld float64 bgt_un::one - ldsfld float64 bgt_un::_inf + ldsfld float64 bgt_un::neg_inf bgt.un O br FAIL O: ldsfld float64 bgt_un::one - ldsfld float64 bgt_un::_min + ldsfld float64 bgt_un::min bgt.un P br FAIL P: ldsfld float64 bgt_un::one - ldsfld float64 bgt_un::_one + ldsfld float64 bgt_un::minus_one bgt.un Q br FAIL Q: ldsfld float64 bgt_un::one - ldsfld float64 bgt_un::_zero + ldsfld float64 bgt_un::minus_zero bgt.un R br FAIL @@ -290,7 +299,7 @@ S: bgt.un FAIL ldsfld float64 bgt_un::one - ldsfld float64 bgt_un::inf + ldsfld float64 bgt_un::pos_inf bgt.un FAIL ldsfld float64 bgt_un::one @@ -300,25 +309,25 @@ S: T: ldsfld float64 bgt_un::max - ldsfld float64 bgt_un::_inf + ldsfld float64 bgt_un::neg_inf bgt.un U br FAIL U: ldsfld float64 bgt_un::max - ldsfld float64 bgt_un::_min + ldsfld float64 bgt_un::min bgt.un V br FAIL V: ldsfld float64 bgt_un::max - ldsfld float64 bgt_un::_one + ldsfld float64 bgt_un::minus_one bgt.un W br FAIL W: ldsfld float64 bgt_un::max - ldsfld float64 bgt_un::_zero + ldsfld float64 bgt_un::minus_zero bgt.un X br FAIL @@ -340,7 +349,7 @@ Z: bgt.un FAIL ldsfld float64 bgt_un::max - ldsfld float64 bgt_un::inf + ldsfld float64 bgt_un::pos_inf bgt.un FAIL ldsfld float64 bgt_un::max @@ -349,78 +358,78 @@ Z: br FAIL AA: - ldsfld float64 bgt_un::inf - ldsfld float64 bgt_un::_inf + ldsfld float64 bgt_un::pos_inf + ldsfld float64 bgt_un::neg_inf bgt.un BB br FAIL BB: - ldsfld float64 bgt_un::inf - ldsfld float64 bgt_un::_min + ldsfld float64 bgt_un::pos_inf + ldsfld float64 bgt_un::min bgt.un CC br FAIL CC: - ldsfld float64 bgt_un::inf - ldsfld float64 bgt_un::_one + ldsfld float64 bgt_un::pos_inf + ldsfld float64 bgt_un::minus_one bgt.un DD br FAIL DD: - ldsfld float64 bgt_un::inf - ldsfld float64 bgt_un::_zero + ldsfld float64 bgt_un::pos_inf + ldsfld float64 bgt_un::minus_zero bgt.un EE br FAIL EE: - ldsfld float64 bgt_un::inf + ldsfld float64 bgt_un::pos_inf ldsfld float64 bgt_un::zero bgt.un FF br FAIL FF: - ldsfld float64 bgt_un::inf + ldsfld float64 bgt_un::pos_inf ldsfld float64 bgt_un::one bgt.un GG br FAIL GG: - ldsfld float64 bgt_un::inf + ldsfld float64 bgt_un::pos_inf ldsfld float64 bgt_un::max bgt.un HH br FAIL HH: - ldsfld float64 bgt_un::inf - ldsfld float64 bgt_un::inf + ldsfld float64 bgt_un::pos_inf + ldsfld float64 bgt_un::pos_inf bgt.un FAIL - ldsfld float64 bgt_un::inf + ldsfld float64 bgt_un::pos_inf ldsfld float64 bgt_un::NaN bgt.un II br FAIL II: ldsfld float64 bgt_un::NaN - ldsfld float64 bgt_un::_inf + ldsfld float64 bgt_un::neg_inf bgt.un JJ br FAIL JJ: ldsfld float64 bgt_un::NaN - ldsfld float64 bgt_un::_min + ldsfld float64 bgt_un::min bgt.un KK br FAIL KK: ldsfld float64 bgt_un::NaN - ldsfld float64 bgt_un::_one + ldsfld float64 bgt_un::minus_one bgt.un LL br FAIL LL: ldsfld float64 bgt_un::NaN - ldsfld float64 bgt_un::_zero + ldsfld float64 bgt_un::minus_zero bgt.un MM br FAIL @@ -444,14 +453,428 @@ OO: PP: ldsfld float64 bgt_un::NaN - ldsfld float64 bgt_un::inf + ldsfld float64 bgt_un::pos_inf bgt.un QQ br FAIL QQ: ldsfld float64 bgt_un::NaN ldsfld float64 bgt_un::NaN - bgt.un BACKCHECK + bgt.un L0 + br FAIL + + // Testing early folding logic + +L0: + ldc.r8 NEG_INF + ldc.r8 NEG_INF + bgt.un FAIL + + ldc.r8 NEG_INF + ldc.r8 MIN + bgt.un FAIL + + ldc.r8 NEG_INF + ldc.r8 MINUS_ONE + bgt.un FAIL + + ldc.r8 NEG_INF + ldc.r8 MINUS_ZERO + bgt.un FAIL + + ldc.r8 NEG_INF + ldc.r8 ZERO + bgt.un FAIL + + ldc.r8 NEG_INF + ldc.r8 ONE + bgt.un FAIL + + ldc.r8 NEG_INF + ldc.r8 MAX + bgt.un FAIL + + ldc.r8 NEG_INF + ldc.r8 POS_INF + bgt.un FAIL + + ldc.r8 NEG_INF + ldc.r8 NAN + bgt.un L1 + br FAIL + +L1: + ldc.r8 MIN + ldc.r8 NEG_INF + bgt.un L2 + br FAIL + +L2: + ldc.r8 MIN + ldc.r8 MIN + bgt.un FAIL + + ldc.r8 MIN + ldc.r8 MINUS_ONE + bgt.un FAIL + + ldc.r8 MIN + ldc.r8 MINUS_ZERO + bgt.un FAIL + + ldc.r8 MIN + ldc.r8 ZERO + bgt.un FAIL + + ldc.r8 MIN + ldc.r8 ONE + bgt.un FAIL + + ldc.r8 MIN + ldc.r8 MAX + bgt.un FAIL + + ldc.r8 MIN + ldc.r8 POS_INF + bgt.un FAIL + + ldc.r8 MIN + ldc.r8 NAN + bgt.un L3 + br FAIL + +L3: + ldc.r8 MINUS_ONE + ldc.r8 NEG_INF + bgt.un L4 + br FAIL + +L4: + ldc.r8 MINUS_ONE + ldc.r8 MIN + bgt.un L5 + br FAIL + +L5: + ldc.r8 MINUS_ONE + ldc.r8 MINUS_ONE + bgt.un FAIL + + ldc.r8 MINUS_ONE + ldc.r8 MINUS_ZERO + bgt.un FAIL + + ldc.r8 MINUS_ONE + ldc.r8 ZERO + bgt.un FAIL + + ldc.r8 MINUS_ONE + ldc.r8 ONE + bgt.un FAIL + + ldc.r8 MINUS_ONE + ldc.r8 MAX + bgt.un FAIL + + ldc.r8 MINUS_ONE + ldc.r8 POS_INF + bgt.un FAIL + + ldc.r8 MINUS_ONE + ldc.r8 NAN + bgt.un L6 + br FAIL + +L6: + ldc.r8 MINUS_ZERO + ldc.r8 NEG_INF + bgt.un L7 + br FAIL + +L7: + ldc.r8 MINUS_ZERO + ldc.r8 MIN + bgt.un L8 + br FAIL + +L8: + ldc.r8 MINUS_ZERO + ldc.r8 MINUS_ONE + bgt.un L9 + br FAIL + +L9: + ldc.r8 MINUS_ZERO + ldc.r8 MINUS_ZERO + bgt.un FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 ZERO + bgt.un FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 ONE + bgt.un FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 MAX + bgt.un FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 POS_INF + bgt.un FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 NAN + bgt.un L10 + br FAIL + +L10: + ldc.r8 ZERO + ldc.r8 NEG_INF + bgt.un L11 + br FAIL + +L11: + ldc.r8 ZERO + ldc.r8 MIN + bgt.un L12 + br FAIL + +L12: + ldc.r8 ZERO + ldc.r8 MINUS_ONE + bgt.un L13 + br FAIL + +L13: + ldc.r8 ZERO + ldc.r8 MINUS_ZERO + bgt.un FAIL + + ldc.r8 ZERO + ldc.r8 ZERO + bgt.un FAIL + + ldc.r8 ZERO + ldc.r8 ONE + bgt.un FAIL + + ldc.r8 ZERO + ldc.r8 MAX + bgt.un FAIL + + ldc.r8 ZERO + ldc.r8 POS_INF + bgt.un FAIL + + ldc.r8 ZERO + ldc.r8 NAN + bgt.un L14 + br FAIL + +L14: + ldc.r8 ONE + ldc.r8 NEG_INF + bgt.un L15 + br FAIL + +L15: + ldc.r8 ONE + ldc.r8 MIN + bgt.un L16 + br FAIL + +L16: + ldc.r8 ONE + ldc.r8 MINUS_ONE + bgt.un L17 + br FAIL + +L17: + ldc.r8 ONE + ldc.r8 MINUS_ZERO + bgt.un L18 + br FAIL + +L18: + ldc.r8 ONE + ldc.r8 ZERO + bgt.un L19 + br FAIL + +L19: + ldc.r8 ONE + ldc.r8 ONE + bgt.un FAIL + + ldc.r8 ONE + ldc.r8 MAX + bgt.un FAIL + + ldc.r8 ONE + ldc.r8 POS_INF + bgt.un FAIL + + ldc.r8 ONE + ldc.r8 NAN + bgt.un L20 + br FAIL + +L20: + ldc.r8 MAX + ldc.r8 NEG_INF + bgt.un L21 + br FAIL + +L21: + ldc.r8 MAX + ldc.r8 MIN + bgt.un L22 + br FAIL + +L22: + ldc.r8 MAX + ldc.r8 MINUS_ONE + bgt.un L23 + br FAIL + +L23: + ldc.r8 MAX + ldc.r8 MINUS_ZERO + bgt.un L24 + br FAIL + +L24: + ldc.r8 MAX + ldc.r8 ZERO + bgt.un L25 + br FAIL + +L25: + ldc.r8 MAX + ldc.r8 ONE + bgt.un L26 + br FAIL + +L26: + ldc.r8 MAX + ldc.r8 MAX + bgt.un FAIL + + ldc.r8 MAX + ldc.r8 POS_INF + bgt.un FAIL + + ldc.r8 MAX + ldc.r8 NAN + bgt.un L27 + br FAIL + +L27: + ldc.r8 POS_INF + ldc.r8 NEG_INF + bgt.un L28 + br FAIL + +L28: + ldc.r8 POS_INF + ldc.r8 MIN + bgt.un L29 + br FAIL + +L29: + ldc.r8 POS_INF + ldc.r8 MINUS_ONE + bgt.un L30 + br FAIL + +L30: + ldc.r8 POS_INF + ldc.r8 MINUS_ZERO + bgt.un L31 + br FAIL + +L31: + ldc.r8 POS_INF + ldc.r8 ZERO + bgt.un L32 + br FAIL + +L32: + ldc.r8 POS_INF + ldc.r8 ONE + bgt.un L33 + br FAIL + +L33: + ldc.r8 POS_INF + ldc.r8 MAX + bgt.un L34 + br FAIL + +L34: + ldc.r8 POS_INF + ldc.r8 POS_INF + bgt.un FAIL + + ldc.r8 POS_INF + ldc.r8 NAN + bgt.un L35 + br FAIL + +L35: + ldc.r8 NAN + ldc.r8 NEG_INF + bgt.un L36 + br FAIL + +L36: + ldc.r8 NAN + ldc.r8 MIN + bgt.un L37 + br FAIL + +L37: + ldc.r8 NAN + ldc.r8 MINUS_ONE + bgt.un L38 + br FAIL + +L38: + ldc.r8 NAN + ldc.r8 MINUS_ZERO + bgt.un L39 + br FAIL + +L39: + ldc.r8 NAN + ldc.r8 ZERO + bgt.un L40 + br FAIL + +L40: + ldc.r8 NAN + ldc.r8 ONE + bgt.un L41 + br FAIL + +L41: + ldc.r8 NAN + ldc.r8 MAX + bgt.un L42 + br FAIL + +L42: + ldc.r8 NAN + ldc.r8 POS_INF + bgt.un L43 + br FAIL + +L43: + ldc.r8 NAN + ldc.r8 NAN + bgt.un BACKCHECK br FAIL TOPASS: diff --git a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/ble_un_r4.il b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/ble_un_r4.il index 22927bd13e2..82eb0f6c47d 100644 --- a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/ble_un_r4.il +++ b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/ble_un_r4.il @@ -3,38 +3,47 @@ .assembly extern legacy library mscorlib {} +#define NEG_INF "float32(0xFF800000)" +#define MIN "float32(0xFF7FFFFF)" +#define MINUS_ONE "float32(0xBF800000)" +#define MINUS_ZERO "float32(0x80000000)" +#define ZERO "float32(0x00000000)" +#define ONE "float32(0x3F800000)" +#define MAX "float32(0x7F7FFFFF)" +#define POS_INF "float32(0x7F800000)" +#define NAN "float32(0x7FC00000)" .class public _ble_un { -.field public static float32 _inf -.field public static float32 _min -.field public static float32 _one -.field public static float32 _zero +.field public static float32 neg_inf +.field public static float32 min +.field public static float32 minus_one +.field public static float32 minus_zero .field public static float32 zero .field public static float32 one .field public static float32 max -.field public static float32 inf +.field public static float32 pos_inf .field public static float32 NaN .method public static void initialize() { .maxstack 10 - ldc.r4 float32(0xFF800000) - stsfld float32 _ble_un::_inf - ldc.r4 float32(0xFF7FFFFF) - stsfld float32 _ble_un::_min - ldc.r4 float32(0xBF800000) - stsfld float32 _ble_un::_one - ldc.r4 float32(0x80000000) - stsfld float32 _ble_un::_zero - ldc.r4 float32(0x00000000) + ldc.r4 NEG_INF + stsfld float32 _ble_un::neg_inf + ldc.r4 MIN + stsfld float32 _ble_un::min + ldc.r4 MINUS_ONE + stsfld float32 _ble_un::minus_one + ldc.r4 MINUS_ZERO + stsfld float32 _ble_un::minus_zero + ldc.r4 ZERO stsfld float32 _ble_un::zero - ldc.r4 float32(0x3F800000) + ldc.r4 ONE stsfld float32 _ble_un::one - ldc.r4 float32(0x7F7FFFFF) + ldc.r4 MAX stsfld float32 _ble_un::max - ldc.r4 float32(0x7F800000) - stsfld float32 _ble_un::inf - ldc.r4 float32(0x7FC00000) + ldc.r4 POS_INF + stsfld float32 _ble_un::pos_inf + ldc.r4 NAN stsfld float32 _ble_un::NaN ret } @@ -44,223 +53,223 @@ .maxstack 10 call void _ble_un::initialize() - ldsfld float32 _ble_un::_inf - ldsfld float32 _ble_un::_inf + ldsfld float32 _ble_un::neg_inf + ldsfld float32 _ble_un::neg_inf ble.un A br FAIL A: - ldsfld float32 _ble_un::_inf - ldsfld float32 _ble_un::_min + ldsfld float32 _ble_un::neg_inf + ldsfld float32 _ble_un::min ble.un B br FAIL B: - ldsfld float32 _ble_un::_inf - ldsfld float32 _ble_un::_one + ldsfld float32 _ble_un::neg_inf + ldsfld float32 _ble_un::minus_one ble.un C br FAIL C: - ldsfld float32 _ble_un::_inf - ldsfld float32 _ble_un::_zero + ldsfld float32 _ble_un::neg_inf + ldsfld float32 _ble_un::minus_zero ble.un D br FAIL D: - ldsfld float32 _ble_un::_inf + ldsfld float32 _ble_un::neg_inf ldsfld float32 _ble_un::zero ble.un E br FAIL E: - ldsfld float32 _ble_un::_inf + ldsfld float32 _ble_un::neg_inf ldsfld float32 _ble_un::one ble.un F br FAIL F: - ldsfld float32 _ble_un::_inf + ldsfld float32 _ble_un::neg_inf ldsfld float32 _ble_un::max ble.un G br FAIL G: - ldsfld float32 _ble_un::_inf - ldsfld float32 _ble_un::inf + ldsfld float32 _ble_un::neg_inf + ldsfld float32 _ble_un::pos_inf ble.un H br FAIL H: - ldsfld float32 _ble_un::_inf + ldsfld float32 _ble_un::neg_inf ldsfld float32 _ble_un::NaN ble.un K br FAIL K: - ldsfld float32 _ble_un::_min - ldsfld float32 _ble_un::_inf + ldsfld float32 _ble_un::min + ldsfld float32 _ble_un::neg_inf ble.un FAIL - ldsfld float32 _ble_un::_min - ldsfld float32 _ble_un::_min + ldsfld float32 _ble_un::min + ldsfld float32 _ble_un::min ble.un L br FAIL L: - ldsfld float32 _ble_un::_min - ldsfld float32 _ble_un::_one + ldsfld float32 _ble_un::min + ldsfld float32 _ble_un::minus_one ble.un M br FAIL M: - ldsfld float32 _ble_un::_min - ldsfld float32 _ble_un::_zero + ldsfld float32 _ble_un::min + ldsfld float32 _ble_un::minus_zero ble.un N br FAIL N: - ldsfld float32 _ble_un::_min + ldsfld float32 _ble_un::min ldsfld float32 _ble_un::zero ble.un O br FAIL O: - ldsfld float32 _ble_un::_min + ldsfld float32 _ble_un::min ldsfld float32 _ble_un::one ble.un P br FAIL P: - ldsfld float32 _ble_un::_min + ldsfld float32 _ble_un::min ldsfld float32 _ble_un::max ble.un Q br FAIL Q: - ldsfld float32 _ble_un::_min - ldsfld float32 _ble_un::inf + ldsfld float32 _ble_un::min + ldsfld float32 _ble_un::pos_inf ble.un R br FAIL R: - ldsfld float32 _ble_un::_min + ldsfld float32 _ble_un::min ldsfld float32 _ble_un::NaN ble.un S br FAIL S: - ldsfld float32 _ble_un::_one - ldsfld float32 _ble_un::_inf + ldsfld float32 _ble_un::minus_one + ldsfld float32 _ble_un::neg_inf ble.un FAIL - ldsfld float32 _ble_un::_one - ldsfld float32 _ble_un::_min + ldsfld float32 _ble_un::minus_one + ldsfld float32 _ble_un::min ble.un FAIL - ldsfld float32 _ble_un::_one - ldsfld float32 _ble_un::_one + ldsfld float32 _ble_un::minus_one + ldsfld float32 _ble_un::minus_one ble.un T br FAIL T: - ldsfld float32 _ble_un::_one - ldsfld float32 _ble_un::_zero + ldsfld float32 _ble_un::minus_one + ldsfld float32 _ble_un::minus_zero ble.un U br FAIL U: - ldsfld float32 _ble_un::_one + ldsfld float32 _ble_un::minus_one ldsfld float32 _ble_un::zero ble.un V br FAIL V: - ldsfld float32 _ble_un::_one + ldsfld float32 _ble_un::minus_one ldsfld float32 _ble_un::one ble.un W br FAIL W: - ldsfld float32 _ble_un::_one + ldsfld float32 _ble_un::minus_one ldsfld float32 _ble_un::max ble.un X br FAIL X: - ldsfld float32 _ble_un::_one - ldsfld float32 _ble_un::inf + ldsfld float32 _ble_un::minus_one + ldsfld float32 _ble_un::pos_inf ble.un Y br FAIL Y: - ldsfld float32 _ble_un::_one + ldsfld float32 _ble_un::minus_one ldsfld float32 _ble_un::NaN ble.un Z br FAIL Z: - ldsfld float32 _ble_un::_zero - ldsfld float32 _ble_un::_inf + ldsfld float32 _ble_un::minus_zero + ldsfld float32 _ble_un::neg_inf ble.un FAIL - ldsfld float32 _ble_un::_zero - ldsfld float32 _ble_un::_min + ldsfld float32 _ble_un::minus_zero + ldsfld float32 _ble_un::min ble.un FAIL - ldsfld float32 _ble_un::_zero - ldsfld float32 _ble_un::_one + ldsfld float32 _ble_un::minus_zero + ldsfld float32 _ble_un::minus_one ble.un FAIL - ldsfld float32 _ble_un::_zero - ldsfld float32 _ble_un::_zero + ldsfld float32 _ble_un::minus_zero + ldsfld float32 _ble_un::minus_zero ble.un AA br FAIL AA: - ldsfld float32 _ble_un::_zero + ldsfld float32 _ble_un::minus_zero ldsfld float32 _ble_un::zero ble.un BB br FAIL BB: - ldsfld float32 _ble_un::_zero + ldsfld float32 _ble_un::minus_zero ldsfld float32 _ble_un::one ble.un CC br FAIL CC: - ldsfld float32 _ble_un::_zero + ldsfld float32 _ble_un::minus_zero ldsfld float32 _ble_un::max ble.un DD br FAIL DD: - ldsfld float32 _ble_un::_zero - ldsfld float32 _ble_un::inf + ldsfld float32 _ble_un::minus_zero + ldsfld float32 _ble_un::pos_inf ble.un EE br FAIL EE: - ldsfld float32 _ble_un::_zero + ldsfld float32 _ble_un::minus_zero ldsfld float32 _ble_un::NaN ble.un FF br FAIL FF: ldsfld float32 _ble_un::zero - ldsfld float32 _ble_un::_inf + ldsfld float32 _ble_un::neg_inf ble.un FAIL ldsfld float32 _ble_un::zero - ldsfld float32 _ble_un::_min + ldsfld float32 _ble_un::min ble.un FAIL ldsfld float32 _ble_un::zero - ldsfld float32 _ble_un::_one + ldsfld float32 _ble_un::minus_one ble.un FAIL ldsfld float32 _ble_un::zero - ldsfld float32 _ble_un::_zero + ldsfld float32 _ble_un::minus_zero ble.un GG br FAIL @@ -284,7 +293,7 @@ II: JJ: ldsfld float32 _ble_un::zero - ldsfld float32 _ble_un::inf + ldsfld float32 _ble_un::pos_inf ble.un KK br FAIL @@ -296,19 +305,19 @@ KK: LL: ldsfld float32 _ble_un::one - ldsfld float32 _ble_un::_inf + ldsfld float32 _ble_un::neg_inf ble.un FAIL ldsfld float32 _ble_un::one - ldsfld float32 _ble_un::_min + ldsfld float32 _ble_un::min ble.un FAIL ldsfld float32 _ble_un::one - ldsfld float32 _ble_un::_one + ldsfld float32 _ble_un::minus_one ble.un FAIL ldsfld float32 _ble_un::one - ldsfld float32 _ble_un::_zero + ldsfld float32 _ble_un::minus_zero ble.un FAIL ldsfld float32 _ble_un::one @@ -328,7 +337,7 @@ MM: NN: ldsfld float32 _ble_un::one - ldsfld float32 _ble_un::inf + ldsfld float32 _ble_un::pos_inf ble.un OO br FAIL @@ -340,19 +349,19 @@ OO: PP: ldsfld float32 _ble_un::max - ldsfld float32 _ble_un::_inf + ldsfld float32 _ble_un::neg_inf ble.un FAIL ldsfld float32 _ble_un::max - ldsfld float32 _ble_un::_min + ldsfld float32 _ble_un::min ble.un FAIL ldsfld float32 _ble_un::max - ldsfld float32 _ble_un::_one + ldsfld float32 _ble_un::minus_one ble.un FAIL ldsfld float32 _ble_un::max - ldsfld float32 _ble_un::_zero + ldsfld float32 _ble_un::minus_zero ble.un FAIL ldsfld float32 _ble_un::max @@ -370,7 +379,7 @@ PP: QQ: ldsfld float32 _ble_un::max - ldsfld float32 _ble_un::inf + ldsfld float32 _ble_un::pos_inf ble.un RR br FAIL @@ -381,66 +390,66 @@ RR: br FAIL SS: - ldsfld float32 _ble_un::inf - ldsfld float32 _ble_un::_inf + ldsfld float32 _ble_un::pos_inf + ldsfld float32 _ble_un::neg_inf ble.un FAIL - ldsfld float32 _ble_un::inf - ldsfld float32 _ble_un::_min + ldsfld float32 _ble_un::pos_inf + ldsfld float32 _ble_un::min ble.un FAIL - ldsfld float32 _ble_un::inf - ldsfld float32 _ble_un::_one + ldsfld float32 _ble_un::pos_inf + ldsfld float32 _ble_un::minus_one ble.un FAIL - ldsfld float32 _ble_un::inf - ldsfld float32 _ble_un::_zero + ldsfld float32 _ble_un::pos_inf + ldsfld float32 _ble_un::minus_zero ble.un FAIL - ldsfld float32 _ble_un::inf + ldsfld float32 _ble_un::pos_inf ldsfld float32 _ble_un::zero ble.un FAIL - ldsfld float32 _ble_un::inf + ldsfld float32 _ble_un::pos_inf ldsfld float32 _ble_un::one ble.un FAIL - ldsfld float32 _ble_un::inf + ldsfld float32 _ble_un::pos_inf ldsfld float32 _ble_un::max ble.un FAIL - ldsfld float32 _ble_un::inf - ldsfld float32 _ble_un::inf + ldsfld float32 _ble_un::pos_inf + ldsfld float32 _ble_un::pos_inf ble.un TT br FAIL TT: - ldsfld float32 _ble_un::inf + ldsfld float32 _ble_un::pos_inf ldsfld float32 _ble_un::NaN ble.un UU br FAIL UU: ldsfld float32 _ble_un::NaN - ldsfld float32 _ble_un::_inf + ldsfld float32 _ble_un::neg_inf ble.un VV br FAIL VV: ldsfld float32 _ble_un::NaN - ldsfld float32 _ble_un::_min + ldsfld float32 _ble_un::min ble.un WW br FAIL WW: ldsfld float32 _ble_un::NaN - ldsfld float32 _ble_un::_one + ldsfld float32 _ble_un::minus_one ble.un XX br FAIL XX: ldsfld float32 _ble_un::NaN - ldsfld float32 _ble_un::_zero + ldsfld float32 _ble_un::minus_zero ble.un YY br FAIL @@ -464,14 +473,448 @@ AAA: BBB: ldsfld float32 _ble_un::NaN - ldsfld float32 _ble_un::inf + ldsfld float32 _ble_un::pos_inf ble.un CCC br FAIL CCC: ldsfld float32 _ble_un::NaN ldsfld float32 _ble_un::NaN - ble.un BACKCHECK + ble.un L0 + br FAIL + + // Testing early folding logic + +L0: + ldc.r4 NEG_INF + ldc.r4 NEG_INF + ble.un L1 + br FAIL + +L1: + ldc.r4 NEG_INF + ldc.r4 MIN + ble.un L2 + br FAIL + +L2: + ldc.r4 NEG_INF + ldc.r4 MINUS_ONE + ble.un L3 + br FAIL + +L3: + ldc.r4 NEG_INF + ldc.r4 MINUS_ZERO + ble.un L4 + br FAIL + +L4: + ldc.r4 NEG_INF + ldc.r4 ZERO + ble.un L5 + br FAIL + +L5: + ldc.r4 NEG_INF + ldc.r4 ONE + ble.un L6 + br FAIL + +L6: + ldc.r4 NEG_INF + ldc.r4 MAX + ble.un L7 + br FAIL + +L7: + ldc.r4 NEG_INF + ldc.r4 POS_INF + ble.un L8 + br FAIL + +L8: + ldc.r4 NEG_INF + ldc.r4 NAN + ble.un L9 + br FAIL + +L9: + ldc.r4 MIN + ldc.r4 NEG_INF + ble.un FAIL + + ldc.r4 MIN + ldc.r4 MIN + ble.un L10 + br FAIL + +L10: + ldc.r4 MIN + ldc.r4 MINUS_ONE + ble.un L11 + br FAIL + +L11: + ldc.r4 MIN + ldc.r4 MINUS_ZERO + ble.un L12 + br FAIL + +L12: + ldc.r4 MIN + ldc.r4 ZERO + ble.un L13 + br FAIL + +L13: + ldc.r4 MIN + ldc.r4 ONE + ble.un L14 + br FAIL + +L14: + ldc.r4 MIN + ldc.r4 MAX + ble.un L15 + br FAIL + +L15: + ldc.r4 MIN + ldc.r4 POS_INF + ble.un L16 + br FAIL + +L16: + ldc.r4 MIN + ldc.r4 NAN + ble.un L17 + br FAIL + +L17: + ldc.r4 MINUS_ONE + ldc.r4 NEG_INF + ble.un FAIL + + ldc.r4 MINUS_ONE + ldc.r4 MIN + ble.un FAIL + + ldc.r4 MINUS_ONE + ldc.r4 MINUS_ONE + ble.un L18 + br FAIL + +L18: + ldc.r4 MINUS_ONE + ldc.r4 MINUS_ZERO + ble.un L19 + br FAIL + +L19: + ldc.r4 MINUS_ONE + ldc.r4 ZERO + ble.un L20 + br FAIL + +L20: + ldc.r4 MINUS_ONE + ldc.r4 ONE + ble.un L21 + br FAIL + +L21: + ldc.r4 MINUS_ONE + ldc.r4 MAX + ble.un L22 + br FAIL + +L22: + ldc.r4 MINUS_ONE + ldc.r4 POS_INF + ble.un L23 + br FAIL + +L23: + ldc.r4 MINUS_ONE + ldc.r4 NAN + ble.un L24 + br FAIL + +L24: + ldc.r4 MINUS_ZERO + ldc.r4 NEG_INF + ble.un FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 MIN + ble.un FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 MINUS_ONE + ble.un FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 MINUS_ZERO + ble.un L25 + br FAIL + +L25: + ldc.r4 MINUS_ZERO + ldc.r4 ZERO + ble.un L26 + br FAIL + +L26: + ldc.r4 MINUS_ZERO + ldc.r4 ONE + ble.un L27 + br FAIL + +L27: + ldc.r4 MINUS_ZERO + ldc.r4 MAX + ble.un L28 + br FAIL + +L28: + ldc.r4 MINUS_ZERO + ldc.r4 POS_INF + ble.un L29 + br FAIL + +L29: + ldc.r4 MINUS_ZERO + ldc.r4 NAN + ble.un L30 + br FAIL + +L30: + ldc.r4 ZERO + ldc.r4 NEG_INF + ble.un FAIL + + ldc.r4 ZERO + ldc.r4 MIN + ble.un FAIL + + ldc.r4 ZERO + ldc.r4 MINUS_ONE + ble.un FAIL + + ldc.r4 ZERO + ldc.r4 MINUS_ZERO + ble.un L31 + br FAIL + +L31: + ldc.r4 ZERO + ldc.r4 ZERO + ble.un L32 + br FAIL + +L32: + ldc.r4 ZERO + ldc.r4 ONE + ble.un L33 + br FAIL + +L33: + ldc.r4 ZERO + ldc.r4 MAX + ble.un L34 + br FAIL + +L34: + ldc.r4 ZERO + ldc.r4 POS_INF + ble.un L35 + br FAIL + +L35: + ldc.r4 ZERO + ldc.r4 NAN + ble.un L36 + br FAIL + +L36: + ldc.r4 ONE + ldc.r4 NEG_INF + ble.un FAIL + + ldc.r4 ONE + ldc.r4 MIN + ble.un FAIL + + ldc.r4 ONE + ldc.r4 MINUS_ONE + ble.un FAIL + + ldc.r4 ONE + ldc.r4 MINUS_ZERO + ble.un FAIL + + ldc.r4 ONE + ldc.r4 ZERO + ble.un FAIL + + ldc.r4 ONE + ldc.r4 ONE + ble.un L37 + br FAIL + +L37: + ldc.r4 ONE + ldc.r4 MAX + ble.un L38 + br FAIL + +L38: + ldc.r4 ONE + ldc.r4 POS_INF + ble.un L39 + br FAIL + +L39: + ldc.r4 ONE + ldc.r4 NAN + ble.un L40 + br FAIL + +L40: + ldc.r4 MAX + ldc.r4 NEG_INF + ble.un FAIL + + ldc.r4 MAX + ldc.r4 MIN + ble.un FAIL + + ldc.r4 MAX + ldc.r4 MINUS_ONE + ble.un FAIL + + ldc.r4 MAX + ldc.r4 MINUS_ZERO + ble.un FAIL + + ldc.r4 MAX + ldc.r4 ZERO + ble.un FAIL + + ldc.r4 MAX + ldc.r4 ONE + ble.un FAIL + + ldc.r4 MAX + ldc.r4 MAX + ble.un L41 + br FAIL + +L41: + ldc.r4 MAX + ldc.r4 POS_INF + ble.un L42 + br FAIL + +L42: + ldc.r4 MAX + ldc.r4 NAN + ble.un L43 + br FAIL + +L43: + ldc.r4 POS_INF + ldc.r4 NEG_INF + ble.un FAIL + + ldc.r4 POS_INF + ldc.r4 MIN + ble.un FAIL + + ldc.r4 POS_INF + ldc.r4 MINUS_ONE + ble.un FAIL + + ldc.r4 POS_INF + ldc.r4 MINUS_ZERO + ble.un FAIL + + ldc.r4 POS_INF + ldc.r4 ZERO + ble.un FAIL + + ldc.r4 POS_INF + ldc.r4 ONE + ble.un FAIL + + ldc.r4 POS_INF + ldc.r4 MAX + ble.un FAIL + + ldc.r4 POS_INF + ldc.r4 POS_INF + ble.un L44 + br FAIL + +L44: + ldc.r4 POS_INF + ldc.r4 NAN + ble.un L45 + br FAIL + +L45: + ldc.r4 NAN + ldc.r4 NEG_INF + ble.un L46 + br FAIL + +L46: + ldc.r4 NAN + ldc.r4 MIN + ble.un L47 + br FAIL + +L47: + ldc.r4 NAN + ldc.r4 MINUS_ONE + ble.un L48 + br FAIL + +L48: + ldc.r4 NAN + ldc.r4 MINUS_ZERO + ble.un L49 + br FAIL + +L49: + ldc.r4 NAN + ldc.r4 ZERO + ble.un L50 + br FAIL + +L50: + ldc.r4 NAN + ldc.r4 ONE + ble.un L51 + br FAIL + +L51: + ldc.r4 NAN + ldc.r4 MAX + ble.un L52 + br FAIL + +L52: + ldc.r4 NAN + ldc.r4 POS_INF + ble.un L53 + br FAIL + +L53: + ldc.r4 NAN + ldc.r4 NAN + ble.un BACKCHECK br FAIL TOPASS: diff --git a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/ble_un_r8.il b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/ble_un_r8.il index b228a9fecaf..8f83e4de49d 100644 --- a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/ble_un_r8.il +++ b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/ble_un_r8.il @@ -3,38 +3,47 @@ .assembly extern legacy library mscorlib {} +#define NEG_INF "float64(0xFFF0000000000000)" +#define MIN "float64(0xFF7FFFFFFFFFFFFF)" +#define MINUS_ONE "float64(0xBFF0000000000000)" +#define MINUS_ZERO "float64(0x8000000000000000)" +#define ZERO "float64(0x0000000000000000)" +#define ONE "float64(0x3FF0000000000000)" +#define MAX "float64(0x7FEFFFFFFFFFFFFF)" +#define POS_INF "float64(0x7FF0000000000000)" +#define NAN "float64(0x7FF8000000000000)" .class public ble_un { -.field public static float64 _inf -.field public static float64 _min -.field public static float64 _one -.field public static float64 _zero +.field public static float64 neg_inf +.field public static float64 min +.field public static float64 minus_one +.field public static float64 minus_zero .field public static float64 zero .field public static float64 one .field public static float64 max -.field public static float64 inf +.field public static float64 pos_inf .field public static float64 NaN .method public static void initialize() { .maxstack 10 - ldc.r8 float64(0xFFF0000000000000) - stsfld float64 ble_un::_inf - ldc.r8 float64(0xFF7FFFFFFFFFFFFF) - stsfld float64 ble_un::_min - ldc.r8 float64(0xBFF0000000000000) - stsfld float64 ble_un::_one - ldc.r8 float64(0x8000000000000000) - stsfld float64 ble_un::_zero - ldc.r8 float64(0x0000000000000000) + ldc.r8 NEG_INF + stsfld float64 ble_un::neg_inf + ldc.r8 MIN + stsfld float64 ble_un::min + ldc.r8 MINUS_ONE + stsfld float64 ble_un::minus_one + ldc.r8 MINUS_ZERO + stsfld float64 ble_un::minus_zero + ldc.r8 ZERO stsfld float64 ble_un::zero - ldc.r8 float64(0x3FF0000000000000) + ldc.r8 ONE stsfld float64 ble_un::one - ldc.r8 float64(0x7FEFFFFFFFFFFFFF) + ldc.r8 MAX stsfld float64 ble_un::max - ldc.r8 float64(0x7FF0000000000000) - stsfld float64 ble_un::inf - ldc.r8 float64(0x7FF8000000000000) + ldc.r8 POS_INF + stsfld float64 ble_un::pos_inf + ldc.r8 NAN stsfld float64 ble_un::NaN ret } @@ -44,223 +53,223 @@ .maxstack 10 call void ble_un::initialize() - ldsfld float64 ble_un::_inf - ldsfld float64 ble_un::_inf + ldsfld float64 ble_un::neg_inf + ldsfld float64 ble_un::neg_inf ble.un A br FAIL A: - ldsfld float64 ble_un::_inf - ldsfld float64 ble_un::_min + ldsfld float64 ble_un::neg_inf + ldsfld float64 ble_un::min ble.un B br FAIL B: - ldsfld float64 ble_un::_inf - ldsfld float64 ble_un::_one + ldsfld float64 ble_un::neg_inf + ldsfld float64 ble_un::minus_one ble.un C br FAIL C: - ldsfld float64 ble_un::_inf - ldsfld float64 ble_un::_zero + ldsfld float64 ble_un::neg_inf + ldsfld float64 ble_un::minus_zero ble.un D br FAIL D: - ldsfld float64 ble_un::_inf + ldsfld float64 ble_un::neg_inf ldsfld float64 ble_un::zero ble.un E br FAIL E: - ldsfld float64 ble_un::_inf + ldsfld float64 ble_un::neg_inf ldsfld float64 ble_un::one ble.un F br FAIL F: - ldsfld float64 ble_un::_inf + ldsfld float64 ble_un::neg_inf ldsfld float64 ble_un::max ble.un G br FAIL G: - ldsfld float64 ble_un::_inf - ldsfld float64 ble_un::inf + ldsfld float64 ble_un::neg_inf + ldsfld float64 ble_un::pos_inf ble.un H br FAIL H: - ldsfld float64 ble_un::_inf + ldsfld float64 ble_un::neg_inf ldsfld float64 ble_un::NaN ble.un K br FAIL K: - ldsfld float64 ble_un::_min - ldsfld float64 ble_un::_inf + ldsfld float64 ble_un::min + ldsfld float64 ble_un::neg_inf ble.un FAIL - ldsfld float64 ble_un::_min - ldsfld float64 ble_un::_min + ldsfld float64 ble_un::min + ldsfld float64 ble_un::min ble.un L br FAIL L: - ldsfld float64 ble_un::_min - ldsfld float64 ble_un::_one + ldsfld float64 ble_un::min + ldsfld float64 ble_un::minus_one ble.un M br FAIL M: - ldsfld float64 ble_un::_min - ldsfld float64 ble_un::_zero + ldsfld float64 ble_un::min + ldsfld float64 ble_un::minus_zero ble.un N br FAIL N: - ldsfld float64 ble_un::_min + ldsfld float64 ble_un::min ldsfld float64 ble_un::zero ble.un O br FAIL O: - ldsfld float64 ble_un::_min + ldsfld float64 ble_un::min ldsfld float64 ble_un::one ble.un P br FAIL P: - ldsfld float64 ble_un::_min + ldsfld float64 ble_un::min ldsfld float64 ble_un::max ble.un Q br FAIL Q: - ldsfld float64 ble_un::_min - ldsfld float64 ble_un::inf + ldsfld float64 ble_un::min + ldsfld float64 ble_un::pos_inf ble.un R br FAIL R: - ldsfld float64 ble_un::_min + ldsfld float64 ble_un::min ldsfld float64 ble_un::NaN ble.un S br FAIL S: - ldsfld float64 ble_un::_one - ldsfld float64 ble_un::_inf + ldsfld float64 ble_un::minus_one + ldsfld float64 ble_un::neg_inf ble.un FAIL - ldsfld float64 ble_un::_one - ldsfld float64 ble_un::_min + ldsfld float64 ble_un::minus_one + ldsfld float64 ble_un::min ble.un FAIL - ldsfld float64 ble_un::_one - ldsfld float64 ble_un::_one + ldsfld float64 ble_un::minus_one + ldsfld float64 ble_un::minus_one ble.un T br FAIL T: - ldsfld float64 ble_un::_one - ldsfld float64 ble_un::_zero + ldsfld float64 ble_un::minus_one + ldsfld float64 ble_un::minus_zero ble.un U br FAIL U: - ldsfld float64 ble_un::_one + ldsfld float64 ble_un::minus_one ldsfld float64 ble_un::zero ble.un V br FAIL V: - ldsfld float64 ble_un::_one + ldsfld float64 ble_un::minus_one ldsfld float64 ble_un::one ble.un W br FAIL W: - ldsfld float64 ble_un::_one + ldsfld float64 ble_un::minus_one ldsfld float64 ble_un::max ble.un X br FAIL X: - ldsfld float64 ble_un::_one - ldsfld float64 ble_un::inf + ldsfld float64 ble_un::minus_one + ldsfld float64 ble_un::pos_inf ble.un Y br FAIL Y: - ldsfld float64 ble_un::_one + ldsfld float64 ble_un::minus_one ldsfld float64 ble_un::NaN ble.un Z br FAIL Z: - ldsfld float64 ble_un::_zero - ldsfld float64 ble_un::_inf + ldsfld float64 ble_un::minus_zero + ldsfld float64 ble_un::neg_inf ble.un FAIL - ldsfld float64 ble_un::_zero - ldsfld float64 ble_un::_min + ldsfld float64 ble_un::minus_zero + ldsfld float64 ble_un::min ble.un FAIL - ldsfld float64 ble_un::_zero - ldsfld float64 ble_un::_one + ldsfld float64 ble_un::minus_zero + ldsfld float64 ble_un::minus_one ble.un FAIL - ldsfld float64 ble_un::_zero - ldsfld float64 ble_un::_zero + ldsfld float64 ble_un::minus_zero + ldsfld float64 ble_un::minus_zero ble.un AA br FAIL AA: - ldsfld float64 ble_un::_zero + ldsfld float64 ble_un::minus_zero ldsfld float64 ble_un::zero ble.un BB br FAIL BB: - ldsfld float64 ble_un::_zero + ldsfld float64 ble_un::minus_zero ldsfld float64 ble_un::one ble.un CC br FAIL CC: - ldsfld float64 ble_un::_zero + ldsfld float64 ble_un::minus_zero ldsfld float64 ble_un::max ble.un DD br FAIL DD: - ldsfld float64 ble_un::_zero - ldsfld float64 ble_un::inf + ldsfld float64 ble_un::minus_zero + ldsfld float64 ble_un::pos_inf ble.un EE br FAIL EE: - ldsfld float64 ble_un::_zero + ldsfld float64 ble_un::minus_zero ldsfld float64 ble_un::NaN ble.un FF br FAIL FF: ldsfld float64 ble_un::zero - ldsfld float64 ble_un::_inf + ldsfld float64 ble_un::neg_inf ble.un FAIL ldsfld float64 ble_un::zero - ldsfld float64 ble_un::_min + ldsfld float64 ble_un::min ble.un FAIL ldsfld float64 ble_un::zero - ldsfld float64 ble_un::_one + ldsfld float64 ble_un::minus_one ble.un FAIL ldsfld float64 ble_un::zero - ldsfld float64 ble_un::_zero + ldsfld float64 ble_un::minus_zero ble.un GG br FAIL @@ -284,7 +293,7 @@ II: JJ: ldsfld float64 ble_un::zero - ldsfld float64 ble_un::inf + ldsfld float64 ble_un::pos_inf ble.un KK br FAIL @@ -296,19 +305,19 @@ KK: LL: ldsfld float64 ble_un::one - ldsfld float64 ble_un::_inf + ldsfld float64 ble_un::neg_inf ble.un FAIL ldsfld float64 ble_un::one - ldsfld float64 ble_un::_min + ldsfld float64 ble_un::min ble.un FAIL ldsfld float64 ble_un::one - ldsfld float64 ble_un::_one + ldsfld float64 ble_un::minus_one ble.un FAIL ldsfld float64 ble_un::one - ldsfld float64 ble_un::_zero + ldsfld float64 ble_un::minus_zero ble.un FAIL ldsfld float64 ble_un::one @@ -328,7 +337,7 @@ MM: NN: ldsfld float64 ble_un::one - ldsfld float64 ble_un::inf + ldsfld float64 ble_un::pos_inf ble.un OO br FAIL @@ -340,19 +349,19 @@ OO: PP: ldsfld float64 ble_un::max - ldsfld float64 ble_un::_inf + ldsfld float64 ble_un::neg_inf ble.un FAIL ldsfld float64 ble_un::max - ldsfld float64 ble_un::_min + ldsfld float64 ble_un::min ble.un FAIL ldsfld float64 ble_un::max - ldsfld float64 ble_un::_one + ldsfld float64 ble_un::minus_one ble.un FAIL ldsfld float64 ble_un::max - ldsfld float64 ble_un::_zero + ldsfld float64 ble_un::minus_zero ble.un FAIL ldsfld float64 ble_un::max @@ -370,7 +379,7 @@ PP: QQ: ldsfld float64 ble_un::max - ldsfld float64 ble_un::inf + ldsfld float64 ble_un::pos_inf ble.un RR br FAIL @@ -381,66 +390,66 @@ RR: br FAIL SS: - ldsfld float64 ble_un::inf - ldsfld float64 ble_un::_inf + ldsfld float64 ble_un::pos_inf + ldsfld float64 ble_un::neg_inf ble.un FAIL - ldsfld float64 ble_un::inf - ldsfld float64 ble_un::_min + ldsfld float64 ble_un::pos_inf + ldsfld float64 ble_un::min ble.un FAIL - ldsfld float64 ble_un::inf - ldsfld float64 ble_un::_one + ldsfld float64 ble_un::pos_inf + ldsfld float64 ble_un::minus_one ble.un FAIL - ldsfld float64 ble_un::inf - ldsfld float64 ble_un::_zero + ldsfld float64 ble_un::pos_inf + ldsfld float64 ble_un::minus_zero ble.un FAIL - ldsfld float64 ble_un::inf + ldsfld float64 ble_un::pos_inf ldsfld float64 ble_un::zero ble.un FAIL - ldsfld float64 ble_un::inf + ldsfld float64 ble_un::pos_inf ldsfld float64 ble_un::one ble.un FAIL - ldsfld float64 ble_un::inf + ldsfld float64 ble_un::pos_inf ldsfld float64 ble_un::max ble.un FAIL - ldsfld float64 ble_un::inf - ldsfld float64 ble_un::inf + ldsfld float64 ble_un::pos_inf + ldsfld float64 ble_un::pos_inf ble.un TT br FAIL TT: - ldsfld float64 ble_un::inf + ldsfld float64 ble_un::pos_inf ldsfld float64 ble_un::NaN ble.un UU br FAIL UU: ldsfld float64 ble_un::NaN - ldsfld float64 ble_un::_inf + ldsfld float64 ble_un::neg_inf ble.un VV br FAIL VV: ldsfld float64 ble_un::NaN - ldsfld float64 ble_un::_min + ldsfld float64 ble_un::min ble.un WW br FAIL WW: ldsfld float64 ble_un::NaN - ldsfld float64 ble_un::_one + ldsfld float64 ble_un::minus_one ble.un XX br FAIL XX: ldsfld float64 ble_un::NaN - ldsfld float64 ble_un::_zero + ldsfld float64 ble_un::minus_zero ble.un YY br FAIL @@ -464,14 +473,448 @@ AAA: BBB: ldsfld float64 ble_un::NaN - ldsfld float64 ble_un::inf + ldsfld float64 ble_un::pos_inf ble.un CCC br FAIL CCC: ldsfld float64 ble_un::NaN ldsfld float64 ble_un::NaN - ble.un BACKCHECK + ble.un L0 + br FAIL + + // Testing early folding logic + +L0: + ldc.r8 NEG_INF + ldc.r8 NEG_INF + ble.un L1 + br FAIL + +L1: + ldc.r8 NEG_INF + ldc.r8 MIN + ble.un L2 + br FAIL + +L2: + ldc.r8 NEG_INF + ldc.r8 MINUS_ONE + ble.un L3 + br FAIL + +L3: + ldc.r8 NEG_INF + ldc.r8 MINUS_ZERO + ble.un L4 + br FAIL + +L4: + ldc.r8 NEG_INF + ldc.r8 ZERO + ble.un L5 + br FAIL + +L5: + ldc.r8 NEG_INF + ldc.r8 ONE + ble.un L6 + br FAIL + +L6: + ldc.r8 NEG_INF + ldc.r8 MAX + ble.un L7 + br FAIL + +L7: + ldc.r8 NEG_INF + ldc.r8 POS_INF + ble.un L8 + br FAIL + +L8: + ldc.r8 NEG_INF + ldc.r8 NAN + ble.un L9 + br FAIL + +L9: + ldc.r8 MIN + ldc.r8 NEG_INF + ble.un FAIL + + ldc.r8 MIN + ldc.r8 MIN + ble.un L10 + br FAIL + +L10: + ldc.r8 MIN + ldc.r8 MINUS_ONE + ble.un L11 + br FAIL + +L11: + ldc.r8 MIN + ldc.r8 MINUS_ZERO + ble.un L12 + br FAIL + +L12: + ldc.r8 MIN + ldc.r8 ZERO + ble.un L13 + br FAIL + +L13: + ldc.r8 MIN + ldc.r8 ONE + ble.un L14 + br FAIL + +L14: + ldc.r8 MIN + ldc.r8 MAX + ble.un L15 + br FAIL + +L15: + ldc.r8 MIN + ldc.r8 POS_INF + ble.un L16 + br FAIL + +L16: + ldc.r8 MIN + ldc.r8 NAN + ble.un L17 + br FAIL + +L17: + ldc.r8 MINUS_ONE + ldc.r8 NEG_INF + ble.un FAIL + + ldc.r8 MINUS_ONE + ldc.r8 MIN + ble.un FAIL + + ldc.r8 MINUS_ONE + ldc.r8 MINUS_ONE + ble.un L18 + br FAIL + +L18: + ldc.r8 MINUS_ONE + ldc.r8 MINUS_ZERO + ble.un L19 + br FAIL + +L19: + ldc.r8 MINUS_ONE + ldc.r8 ZERO + ble.un L20 + br FAIL + +L20: + ldc.r8 MINUS_ONE + ldc.r8 ONE + ble.un L21 + br FAIL + +L21: + ldc.r8 MINUS_ONE + ldc.r8 MAX + ble.un L22 + br FAIL + +L22: + ldc.r8 MINUS_ONE + ldc.r8 POS_INF + ble.un L23 + br FAIL + +L23: + ldc.r8 MINUS_ONE + ldc.r8 NAN + ble.un L24 + br FAIL + +L24: + ldc.r8 MINUS_ZERO + ldc.r8 NEG_INF + ble.un FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 MIN + ble.un FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 MINUS_ONE + ble.un FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 MINUS_ZERO + ble.un L25 + br FAIL + +L25: + ldc.r8 MINUS_ZERO + ldc.r8 ZERO + ble.un L26 + br FAIL + +L26: + ldc.r8 MINUS_ZERO + ldc.r8 ONE + ble.un L27 + br FAIL + +L27: + ldc.r8 MINUS_ZERO + ldc.r8 MAX + ble.un L28 + br FAIL + +L28: + ldc.r8 MINUS_ZERO + ldc.r8 POS_INF + ble.un L29 + br FAIL + +L29: + ldc.r8 MINUS_ZERO + ldc.r8 NAN + ble.un L30 + br FAIL + +L30: + ldc.r8 ZERO + ldc.r8 NEG_INF + ble.un FAIL + + ldc.r8 ZERO + ldc.r8 MIN + ble.un FAIL + + ldc.r8 ZERO + ldc.r8 MINUS_ONE + ble.un FAIL + + ldc.r8 ZERO + ldc.r8 MINUS_ZERO + ble.un L31 + br FAIL + +L31: + ldc.r8 ZERO + ldc.r8 ZERO + ble.un L32 + br FAIL + +L32: + ldc.r8 ZERO + ldc.r8 ONE + ble.un L33 + br FAIL + +L33: + ldc.r8 ZERO + ldc.r8 MAX + ble.un L34 + br FAIL + +L34: + ldc.r8 ZERO + ldc.r8 POS_INF + ble.un L35 + br FAIL + +L35: + ldc.r8 ZERO + ldc.r8 NAN + ble.un L36 + br FAIL + +L36: + ldc.r8 ONE + ldc.r8 NEG_INF + ble.un FAIL + + ldc.r8 ONE + ldc.r8 MIN + ble.un FAIL + + ldc.r8 ONE + ldc.r8 MINUS_ONE + ble.un FAIL + + ldc.r8 ONE + ldc.r8 MINUS_ZERO + ble.un FAIL + + ldc.r8 ONE + ldc.r8 ZERO + ble.un FAIL + + ldc.r8 ONE + ldc.r8 ONE + ble.un L37 + br FAIL + +L37: + ldc.r8 ONE + ldc.r8 MAX + ble.un L38 + br FAIL + +L38: + ldc.r8 ONE + ldc.r8 POS_INF + ble.un L39 + br FAIL + +L39: + ldc.r8 ONE + ldc.r8 NAN + ble.un L40 + br FAIL + +L40: + ldc.r8 MAX + ldc.r8 NEG_INF + ble.un FAIL + + ldc.r8 MAX + ldc.r8 MIN + ble.un FAIL + + ldc.r8 MAX + ldc.r8 MINUS_ONE + ble.un FAIL + + ldc.r8 MAX + ldc.r8 MINUS_ZERO + ble.un FAIL + + ldc.r8 MAX + ldc.r8 ZERO + ble.un FAIL + + ldc.r8 MAX + ldc.r8 ONE + ble.un FAIL + + ldc.r8 MAX + ldc.r8 MAX + ble.un L41 + br FAIL + +L41: + ldc.r8 MAX + ldc.r8 POS_INF + ble.un L42 + br FAIL + +L42: + ldc.r8 MAX + ldc.r8 NAN + ble.un L43 + br FAIL + +L43: + ldc.r8 POS_INF + ldc.r8 NEG_INF + ble.un FAIL + + ldc.r8 POS_INF + ldc.r8 MIN + ble.un FAIL + + ldc.r8 POS_INF + ldc.r8 MINUS_ONE + ble.un FAIL + + ldc.r8 POS_INF + ldc.r8 MINUS_ZERO + ble.un FAIL + + ldc.r8 POS_INF + ldc.r8 ZERO + ble.un FAIL + + ldc.r8 POS_INF + ldc.r8 ONE + ble.un FAIL + + ldc.r8 POS_INF + ldc.r8 MAX + ble.un FAIL + + ldc.r8 POS_INF + ldc.r8 POS_INF + ble.un L44 + br FAIL + +L44: + ldc.r8 POS_INF + ldc.r8 NAN + ble.un L45 + br FAIL + +L45: + ldc.r8 NAN + ldc.r8 NEG_INF + ble.un L46 + br FAIL + +L46: + ldc.r8 NAN + ldc.r8 MIN + ble.un L47 + br FAIL + +L47: + ldc.r8 NAN + ldc.r8 MINUS_ONE + ble.un L48 + br FAIL + +L48: + ldc.r8 NAN + ldc.r8 MINUS_ZERO + ble.un L49 + br FAIL + +L49: + ldc.r8 NAN + ldc.r8 ZERO + ble.un L50 + br FAIL + +L50: + ldc.r8 NAN + ldc.r8 ONE + ble.un L51 + br FAIL + +L51: + ldc.r8 NAN + ldc.r8 MAX + ble.un L52 + br FAIL + +L52: + ldc.r8 NAN + ldc.r8 POS_INF + ble.un L53 + br FAIL + +L53: + ldc.r8 NAN + ldc.r8 NAN + ble.un BACKCHECK br FAIL TOPASS: diff --git a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/blt_un_r4.il b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/blt_un_r4.il index 0e254711d19..158ef20b8bb 100644 --- a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/blt_un_r4.il +++ b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/blt_un_r4.il @@ -3,38 +3,47 @@ .assembly extern legacy library mscorlib {} +#define NEG_INF "float32(0xFF800000)" +#define MIN "float32(0xFF7FFFFF)" +#define MINUS_ONE "float32(0xBF800000)" +#define MINUS_ZERO "float32(0x80000000)" +#define ZERO "float32(0x00000000)" +#define ONE "float32(0x3F800000)" +#define MAX "float32(0x7F7FFFFF)" +#define POS_INF "float32(0x7F800000)" +#define NAN "float32(0x7FC00000)" .class public _blt_un { -.field public static float32 _inf -.field public static float32 _min -.field public static float32 _one -.field public static float32 _zero +.field public static float32 neg_inf +.field public static float32 min +.field public static float32 minus_one +.field public static float32 minus_zero .field public static float32 zero .field public static float32 one .field public static float32 max -.field public static float32 inf +.field public static float32 pos_inf .field public static float32 NaN .method public static void initialize() { .maxstack 10 - ldc.r4 float32(0xFF800000) - stsfld float32 _blt_un::_inf - ldc.r4 float32(0xFF7FFFFF) - stsfld float32 _blt_un::_min - ldc.r4 float32(0xBF800000) - stsfld float32 _blt_un::_one - ldc.r4 float32(0x80000000) - stsfld float32 _blt_un::_zero - ldc.r4 float32(0x00000000) + ldc.r4 NEG_INF + stsfld float32 _blt_un::neg_inf + ldc.r4 MIN + stsfld float32 _blt_un::min + ldc.r4 MINUS_ONE + stsfld float32 _blt_un::minus_one + ldc.r4 MINUS_ZERO + stsfld float32 _blt_un::minus_zero + ldc.r4 ZERO stsfld float32 _blt_un::zero - ldc.r4 float32(0x3F800000) + ldc.r4 ONE stsfld float32 _blt_un::one - ldc.r4 float32(0x7F7FFFFF) + ldc.r4 MAX stsfld float32 _blt_un::max - ldc.r4 float32(0x7F800000) - stsfld float32 _blt_un::inf - ldc.r4 float32(0x7FC00000) + ldc.r4 POS_INF + stsfld float32 _blt_un::pos_inf + ldc.r4 NAN stsfld float32 _blt_un::NaN ret } @@ -44,218 +53,218 @@ .maxstack 10 call void _blt_un::initialize() - ldsfld float32 _blt_un::_inf - ldsfld float32 _blt_un::_inf + ldsfld float32 _blt_un::neg_inf + ldsfld float32 _blt_un::neg_inf blt.un FAIL A: - ldsfld float32 _blt_un::_inf - ldsfld float32 _blt_un::_min + ldsfld float32 _blt_un::neg_inf + ldsfld float32 _blt_un::min blt.un B br FAIL B: - ldsfld float32 _blt_un::_inf - ldsfld float32 _blt_un::_one + ldsfld float32 _blt_un::neg_inf + ldsfld float32 _blt_un::minus_one blt.un C br FAIL C: - ldsfld float32 _blt_un::_inf - ldsfld float32 _blt_un::_zero + ldsfld float32 _blt_un::neg_inf + ldsfld float32 _blt_un::minus_zero blt.un D br FAIL D: - ldsfld float32 _blt_un::_inf + ldsfld float32 _blt_un::neg_inf ldsfld float32 _blt_un::zero blt.un E br FAIL E: - ldsfld float32 _blt_un::_inf + ldsfld float32 _blt_un::neg_inf ldsfld float32 _blt_un::one blt.un F br FAIL F: - ldsfld float32 _blt_un::_inf + ldsfld float32 _blt_un::neg_inf ldsfld float32 _blt_un::max blt.un G br FAIL G: - ldsfld float32 _blt_un::_inf - ldsfld float32 _blt_un::inf + ldsfld float32 _blt_un::neg_inf + ldsfld float32 _blt_un::pos_inf blt.un H br FAIL H: - ldsfld float32 _blt_un::_inf + ldsfld float32 _blt_un::neg_inf ldsfld float32 _blt_un::NaN blt.un K br FAIL K: - ldsfld float32 _blt_un::_min - ldsfld float32 _blt_un::_inf + ldsfld float32 _blt_un::min + ldsfld float32 _blt_un::neg_inf blt.un FAIL - ldsfld float32 _blt_un::_min - ldsfld float32 _blt_un::_min + ldsfld float32 _blt_un::min + ldsfld float32 _blt_un::min blt.un FAIL L: - ldsfld float32 _blt_un::_min - ldsfld float32 _blt_un::_one + ldsfld float32 _blt_un::min + ldsfld float32 _blt_un::minus_one blt.un M br FAIL M: - ldsfld float32 _blt_un::_min - ldsfld float32 _blt_un::_zero + ldsfld float32 _blt_un::min + ldsfld float32 _blt_un::minus_zero blt.un N br FAIL N: - ldsfld float32 _blt_un::_min + ldsfld float32 _blt_un::min ldsfld float32 _blt_un::zero blt.un O br FAIL O: - ldsfld float32 _blt_un::_min + ldsfld float32 _blt_un::min ldsfld float32 _blt_un::one blt.un P br FAIL P: - ldsfld float32 _blt_un::_min + ldsfld float32 _blt_un::min ldsfld float32 _blt_un::max blt.un Q br FAIL Q: - ldsfld float32 _blt_un::_min - ldsfld float32 _blt_un::inf + ldsfld float32 _blt_un::min + ldsfld float32 _blt_un::pos_inf blt.un R br FAIL R: - ldsfld float32 _blt_un::_min + ldsfld float32 _blt_un::min ldsfld float32 _blt_un::NaN blt.un S br FAIL S: - ldsfld float32 _blt_un::_one - ldsfld float32 _blt_un::_inf + ldsfld float32 _blt_un::minus_one + ldsfld float32 _blt_un::neg_inf blt.un FAIL - ldsfld float32 _blt_un::_one - ldsfld float32 _blt_un::_min + ldsfld float32 _blt_un::minus_one + ldsfld float32 _blt_un::min blt.un FAIL - ldsfld float32 _blt_un::_one - ldsfld float32 _blt_un::_one + ldsfld float32 _blt_un::minus_one + ldsfld float32 _blt_un::minus_one blt.un FAIL T: - ldsfld float32 _blt_un::_one - ldsfld float32 _blt_un::_zero + ldsfld float32 _blt_un::minus_one + ldsfld float32 _blt_un::minus_zero blt.un U br FAIL U: - ldsfld float32 _blt_un::_one + ldsfld float32 _blt_un::minus_one ldsfld float32 _blt_un::zero blt.un V br FAIL V: - ldsfld float32 _blt_un::_one + ldsfld float32 _blt_un::minus_one ldsfld float32 _blt_un::one blt.un W br FAIL W: - ldsfld float32 _blt_un::_one + ldsfld float32 _blt_un::minus_one ldsfld float32 _blt_un::max blt.un X br FAIL X: - ldsfld float32 _blt_un::_one - ldsfld float32 _blt_un::inf + ldsfld float32 _blt_un::minus_one + ldsfld float32 _blt_un::pos_inf blt.un Y br FAIL Y: - ldsfld float32 _blt_un::_one + ldsfld float32 _blt_un::minus_one ldsfld float32 _blt_un::NaN blt.un Z br FAIL Z: - ldsfld float32 _blt_un::_zero - ldsfld float32 _blt_un::_inf + ldsfld float32 _blt_un::minus_zero + ldsfld float32 _blt_un::neg_inf blt.un FAIL - ldsfld float32 _blt_un::_zero - ldsfld float32 _blt_un::_min + ldsfld float32 _blt_un::minus_zero + ldsfld float32 _blt_un::min blt.un FAIL - ldsfld float32 _blt_un::_zero - ldsfld float32 _blt_un::_one + ldsfld float32 _blt_un::minus_zero + ldsfld float32 _blt_un::minus_one blt.un FAIL - ldsfld float32 _blt_un::_zero - ldsfld float32 _blt_un::_zero + ldsfld float32 _blt_un::minus_zero + ldsfld float32 _blt_un::minus_zero blt.un FAIL AA: - ldsfld float32 _blt_un::_zero + ldsfld float32 _blt_un::minus_zero ldsfld float32 _blt_un::zero blt.un FAIL BB: - ldsfld float32 _blt_un::_zero + ldsfld float32 _blt_un::minus_zero ldsfld float32 _blt_un::one blt.un CC br FAIL CC: - ldsfld float32 _blt_un::_zero + ldsfld float32 _blt_un::minus_zero ldsfld float32 _blt_un::max blt.un DD br FAIL DD: - ldsfld float32 _blt_un::_zero - ldsfld float32 _blt_un::inf + ldsfld float32 _blt_un::minus_zero + ldsfld float32 _blt_un::pos_inf blt.un EE br FAIL EE: - ldsfld float32 _blt_un::_zero + ldsfld float32 _blt_un::minus_zero ldsfld float32 _blt_un::NaN blt.un FF br FAIL FF: ldsfld float32 _blt_un::zero - ldsfld float32 _blt_un::_inf + ldsfld float32 _blt_un::neg_inf blt.un FAIL ldsfld float32 _blt_un::zero - ldsfld float32 _blt_un::_min + ldsfld float32 _blt_un::min blt.un FAIL ldsfld float32 _blt_un::zero - ldsfld float32 _blt_un::_one + ldsfld float32 _blt_un::minus_one blt.un FAIL ldsfld float32 _blt_un::zero - ldsfld float32 _blt_un::_zero + ldsfld float32 _blt_un::minus_zero blt.un FAIL GG: @@ -277,7 +286,7 @@ II: JJ: ldsfld float32 _blt_un::zero - ldsfld float32 _blt_un::inf + ldsfld float32 _blt_un::pos_inf blt.un KK br FAIL @@ -289,19 +298,19 @@ KK: LL: ldsfld float32 _blt_un::one - ldsfld float32 _blt_un::_inf + ldsfld float32 _blt_un::neg_inf blt.un FAIL ldsfld float32 _blt_un::one - ldsfld float32 _blt_un::_min + ldsfld float32 _blt_un::min blt.un FAIL ldsfld float32 _blt_un::one - ldsfld float32 _blt_un::_one + ldsfld float32 _blt_un::minus_one blt.un FAIL ldsfld float32 _blt_un::one - ldsfld float32 _blt_un::_zero + ldsfld float32 _blt_un::minus_zero blt.un FAIL ldsfld float32 _blt_un::one @@ -320,7 +329,7 @@ MM: NN: ldsfld float32 _blt_un::one - ldsfld float32 _blt_un::inf + ldsfld float32 _blt_un::pos_inf blt.un OO br FAIL @@ -332,19 +341,19 @@ OO: PP: ldsfld float32 _blt_un::max - ldsfld float32 _blt_un::_inf + ldsfld float32 _blt_un::neg_inf blt.un FAIL ldsfld float32 _blt_un::max - ldsfld float32 _blt_un::_min + ldsfld float32 _blt_un::min blt.un FAIL ldsfld float32 _blt_un::max - ldsfld float32 _blt_un::_one + ldsfld float32 _blt_un::minus_one blt.un FAIL ldsfld float32 _blt_un::max - ldsfld float32 _blt_un::_zero + ldsfld float32 _blt_un::minus_zero blt.un FAIL ldsfld float32 _blt_un::max @@ -361,7 +370,7 @@ PP: QQ: ldsfld float32 _blt_un::max - ldsfld float32 _blt_un::inf + ldsfld float32 _blt_un::pos_inf blt.un RR br FAIL @@ -372,65 +381,65 @@ RR: br FAIL SS: - ldsfld float32 _blt_un::inf - ldsfld float32 _blt_un::_inf + ldsfld float32 _blt_un::pos_inf + ldsfld float32 _blt_un::neg_inf blt.un FAIL - ldsfld float32 _blt_un::inf - ldsfld float32 _blt_un::_min + ldsfld float32 _blt_un::pos_inf + ldsfld float32 _blt_un::min blt.un FAIL - ldsfld float32 _blt_un::inf - ldsfld float32 _blt_un::_one + ldsfld float32 _blt_un::pos_inf + ldsfld float32 _blt_un::minus_one blt.un FAIL - ldsfld float32 _blt_un::inf - ldsfld float32 _blt_un::_zero + ldsfld float32 _blt_un::pos_inf + ldsfld float32 _blt_un::minus_zero blt.un FAIL - ldsfld float32 _blt_un::inf + ldsfld float32 _blt_un::pos_inf ldsfld float32 _blt_un::zero blt.un FAIL - ldsfld float32 _blt_un::inf + ldsfld float32 _blt_un::pos_inf ldsfld float32 _blt_un::one blt.un FAIL - ldsfld float32 _blt_un::inf + ldsfld float32 _blt_un::pos_inf ldsfld float32 _blt_un::max blt.un FAIL - ldsfld float32 _blt_un::inf - ldsfld float32 _blt_un::inf + ldsfld float32 _blt_un::pos_inf + ldsfld float32 _blt_un::pos_inf blt.un FAIL TT: - ldsfld float32 _blt_un::inf + ldsfld float32 _blt_un::pos_inf ldsfld float32 _blt_un::NaN blt.un UU br FAIL UU: ldsfld float32 _blt_un::NaN - ldsfld float32 _blt_un::_inf + ldsfld float32 _blt_un::neg_inf blt.un VV br FAIL VV: ldsfld float32 _blt_un::NaN - ldsfld float32 _blt_un::_min + ldsfld float32 _blt_un::min blt.un WW br FAIL WW: ldsfld float32 _blt_un::NaN - ldsfld float32 _blt_un::_one + ldsfld float32 _blt_un::minus_one blt.un XX br FAIL XX: ldsfld float32 _blt_un::NaN - ldsfld float32 _blt_un::_zero + ldsfld float32 _blt_un::minus_zero blt.un YY br FAIL @@ -454,14 +463,428 @@ AAA: BBB: ldsfld float32 _blt_un::NaN - ldsfld float32 _blt_un::inf + ldsfld float32 _blt_un::pos_inf blt.un CCC br FAIL CCC: ldsfld float32 _blt_un::NaN ldsfld float32 _blt_un::NaN - blt.un BACKCHECK + blt.un L0 + br FAIL + + // Testing early folding logic + +L0: + ldc.r4 NEG_INF + ldc.r4 NEG_INF + blt.un FAIL + + ldc.r4 NEG_INF + ldc.r4 MIN + blt.un L1 + br FAIL + +L1: + ldc.r4 NEG_INF + ldc.r4 MINUS_ONE + blt.un L2 + br FAIL + +L2: + ldc.r4 NEG_INF + ldc.r4 MINUS_ZERO + blt.un L3 + br FAIL + +L3: + ldc.r4 NEG_INF + ldc.r4 ZERO + blt.un L4 + br FAIL + +L4: + ldc.r4 NEG_INF + ldc.r4 ONE + blt.un L5 + br FAIL + +L5: + ldc.r4 NEG_INF + ldc.r4 MAX + blt.un L6 + br FAIL + +L6: + ldc.r4 NEG_INF + ldc.r4 POS_INF + blt.un L7 + br FAIL + +L7: + ldc.r4 NEG_INF + ldc.r4 NAN + blt.un L8 + br FAIL + +L8: + ldc.r4 MIN + ldc.r4 NEG_INF + blt.un FAIL + + ldc.r4 MIN + ldc.r4 MIN + blt.un FAIL + + ldc.r4 MIN + ldc.r4 MINUS_ONE + blt.un L9 + br FAIL + +L9: + ldc.r4 MIN + ldc.r4 MINUS_ZERO + blt.un L10 + br FAIL + +L10: + ldc.r4 MIN + ldc.r4 ZERO + blt.un L11 + br FAIL + +L11: + ldc.r4 MIN + ldc.r4 ONE + blt.un L12 + br FAIL + +L12: + ldc.r4 MIN + ldc.r4 MAX + blt.un L13 + br FAIL + +L13: + ldc.r4 MIN + ldc.r4 POS_INF + blt.un L14 + br FAIL + +L14: + ldc.r4 MIN + ldc.r4 NAN + blt.un L15 + br FAIL + +L15: + ldc.r4 MINUS_ONE + ldc.r4 NEG_INF + blt.un FAIL + + ldc.r4 MINUS_ONE + ldc.r4 MIN + blt.un FAIL + + ldc.r4 MINUS_ONE + ldc.r4 MINUS_ONE + blt.un FAIL + + ldc.r4 MINUS_ONE + ldc.r4 MINUS_ZERO + blt.un L16 + br FAIL + +L16: + ldc.r4 MINUS_ONE + ldc.r4 ZERO + blt.un L17 + br FAIL + +L17: + ldc.r4 MINUS_ONE + ldc.r4 ONE + blt.un L18 + br FAIL + +L18: + ldc.r4 MINUS_ONE + ldc.r4 MAX + blt.un L19 + br FAIL + +L19: + ldc.r4 MINUS_ONE + ldc.r4 POS_INF + blt.un L20 + br FAIL + +L20: + ldc.r4 MINUS_ONE + ldc.r4 NAN + blt.un L21 + br FAIL + +L21: + ldc.r4 MINUS_ZERO + ldc.r4 NEG_INF + blt.un FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 MIN + blt.un FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 MINUS_ONE + blt.un FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 MINUS_ZERO + blt.un FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 ZERO + blt.un FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 ONE + blt.un L22 + br FAIL + +L22: + ldc.r4 MINUS_ZERO + ldc.r4 MAX + blt.un L23 + br FAIL + +L23: + ldc.r4 MINUS_ZERO + ldc.r4 POS_INF + blt.un L24 + br FAIL + +L24: + ldc.r4 MINUS_ZERO + ldc.r4 NAN + blt.un L25 + br FAIL + +L25: + ldc.r4 ZERO + ldc.r4 NEG_INF + blt.un FAIL + + ldc.r4 ZERO + ldc.r4 MIN + blt.un FAIL + + ldc.r4 ZERO + ldc.r4 MINUS_ONE + blt.un FAIL + + ldc.r4 ZERO + ldc.r4 MINUS_ZERO + blt.un FAIL + + ldc.r4 ZERO + ldc.r4 ZERO + blt.un FAIL + + ldc.r4 ZERO + ldc.r4 ONE + blt.un L26 + br FAIL + +L26: + ldc.r4 ZERO + ldc.r4 MAX + blt.un L27 + br FAIL + +L27: + ldc.r4 ZERO + ldc.r4 POS_INF + blt.un L28 + br FAIL + +L28: + ldc.r4 ZERO + ldc.r4 NAN + blt.un L29 + br FAIL + +L29: + ldc.r4 ONE + ldc.r4 NEG_INF + blt.un FAIL + + ldc.r4 ONE + ldc.r4 MIN + blt.un FAIL + + ldc.r4 ONE + ldc.r4 MINUS_ONE + blt.un FAIL + + ldc.r4 ONE + ldc.r4 MINUS_ZERO + blt.un FAIL + + ldc.r4 ONE + ldc.r4 ZERO + blt.un FAIL + + ldc.r4 ONE + ldc.r4 ONE + blt.un FAIL + + ldc.r4 ONE + ldc.r4 MAX + blt.un L30 + br FAIL + +L30: + ldc.r4 ONE + ldc.r4 POS_INF + blt.un L31 + br FAIL + +L31: + ldc.r4 ONE + ldc.r4 NAN + blt.un L32 + br FAIL + +L32: + ldc.r4 MAX + ldc.r4 NEG_INF + blt.un FAIL + + ldc.r4 MAX + ldc.r4 MIN + blt.un FAIL + + ldc.r4 MAX + ldc.r4 MINUS_ONE + blt.un FAIL + + ldc.r4 MAX + ldc.r4 MINUS_ZERO + blt.un FAIL + + ldc.r4 MAX + ldc.r4 ZERO + blt.un FAIL + + ldc.r4 MAX + ldc.r4 ONE + blt.un FAIL + + ldc.r4 MAX + ldc.r4 MAX + blt.un FAIL + + ldc.r4 MAX + ldc.r4 POS_INF + blt.un L33 + br FAIL + +L33: + ldc.r4 MAX + ldc.r4 NAN + blt.un L34 + br FAIL + +L34: + ldc.r4 POS_INF + ldc.r4 NEG_INF + blt.un FAIL + + ldc.r4 POS_INF + ldc.r4 MIN + blt.un FAIL + + ldc.r4 POS_INF + ldc.r4 MINUS_ONE + blt.un FAIL + + ldc.r4 POS_INF + ldc.r4 MINUS_ZERO + blt.un FAIL + + ldc.r4 POS_INF + ldc.r4 ZERO + blt.un FAIL + + ldc.r4 POS_INF + ldc.r4 ONE + blt.un FAIL + + ldc.r4 POS_INF + ldc.r4 MAX + blt.un FAIL + + ldc.r4 POS_INF + ldc.r4 POS_INF + blt.un FAIL + + ldc.r4 POS_INF + ldc.r4 NAN + blt.un L35 + br FAIL + +L35: + ldc.r4 NAN + ldc.r4 NEG_INF + blt.un L36 + br FAIL + +L36: + ldc.r4 NAN + ldc.r4 MIN + blt.un L37 + br FAIL + +L37: + ldc.r4 NAN + ldc.r4 MINUS_ONE + blt.un L38 + br FAIL + +L38: + ldc.r4 NAN + ldc.r4 MINUS_ZERO + blt.un L39 + br FAIL + +L39: + ldc.r4 NAN + ldc.r4 ZERO + blt.un L40 + br FAIL + +L40: + ldc.r4 NAN + ldc.r4 ONE + blt.un L41 + br FAIL + +L41: + ldc.r4 NAN + ldc.r4 MAX + blt.un L42 + br FAIL + +L42: + ldc.r4 NAN + ldc.r4 POS_INF + blt.un L43 + br FAIL + +L43: + ldc.r4 NAN + ldc.r4 NAN + blt.un BACKCHECK br FAIL TOPASS: diff --git a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/blt_un_r8.il b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/blt_un_r8.il index 8df3e29e0d9..514e66222ef 100644 --- a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/blt_un_r8.il +++ b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/blt_un_r8.il @@ -3,38 +3,47 @@ .assembly extern legacy library mscorlib {} +#define NEG_INF "float64(0xFFF0000000000000)" +#define MIN "float64(0xFF7FFFFFFFFFFFFF)" +#define MINUS_ONE "float64(0xBFF0000000000000)" +#define MINUS_ZERO "float64(0x8000000000000000)" +#define ZERO "float64(0x0000000000000000)" +#define ONE "float64(0x3FF0000000000000)" +#define MAX "float64(0x7FEFFFFFFFFFFFFF)" +#define POS_INF "float64(0x7FF0000000000000)" +#define NAN "float64(0x7FF8000000000000)" .class public blt_un { -.field public static float64 _inf -.field public static float64 _min -.field public static float64 _one -.field public static float64 _zero +.field public static float64 neg_inf +.field public static float64 min +.field public static float64 minus_one +.field public static float64 minus_zero .field public static float64 zero .field public static float64 one .field public static float64 max -.field public static float64 inf +.field public static float64 pos_inf .field public static float64 NaN .method public static void initialize() { .maxstack 10 - ldc.r8 float64(0xFFF0000000000000) - stsfld float64 blt_un::_inf - ldc.r8 float64(0xFF7FFFFFFFFFFFFF) - stsfld float64 blt_un::_min - ldc.r8 float64(0xBFF0000000000000) - stsfld float64 blt_un::_one - ldc.r8 float64(0x8000000000000000) - stsfld float64 blt_un::_zero - ldc.r8 float64(0x0000000000000000) + ldc.r8 NEG_INF + stsfld float64 blt_un::neg_inf + ldc.r8 MIN + stsfld float64 blt_un::min + ldc.r8 MINUS_ONE + stsfld float64 blt_un::minus_one + ldc.r8 MINUS_ZERO + stsfld float64 blt_un::minus_zero + ldc.r8 ZERO stsfld float64 blt_un::zero - ldc.r8 float64(0x3FF0000000000000) + ldc.r8 ONE stsfld float64 blt_un::one - ldc.r8 float64(0x7FEFFFFFFFFFFFFF) + ldc.r8 MAX stsfld float64 blt_un::max - ldc.r8 float64(0x7FF0000000000000) - stsfld float64 blt_un::inf - ldc.r8 float64(0x7FF8000000000000) + ldc.r8 POS_INF + stsfld float64 blt_un::pos_inf + ldc.r8 NAN stsfld float64 blt_un::NaN ret } @@ -44,218 +53,218 @@ .maxstack 10 call void blt_un::initialize() - ldsfld float64 blt_un::_inf - ldsfld float64 blt_un::_inf + ldsfld float64 blt_un::neg_inf + ldsfld float64 blt_un::neg_inf blt.un FAIL A: - ldsfld float64 blt_un::_inf - ldsfld float64 blt_un::_min + ldsfld float64 blt_un::neg_inf + ldsfld float64 blt_un::min blt.un B br FAIL B: - ldsfld float64 blt_un::_inf - ldsfld float64 blt_un::_one + ldsfld float64 blt_un::neg_inf + ldsfld float64 blt_un::minus_one blt.un C br FAIL C: - ldsfld float64 blt_un::_inf - ldsfld float64 blt_un::_zero + ldsfld float64 blt_un::neg_inf + ldsfld float64 blt_un::minus_zero blt.un D br FAIL D: - ldsfld float64 blt_un::_inf + ldsfld float64 blt_un::neg_inf ldsfld float64 blt_un::zero blt.un E br FAIL E: - ldsfld float64 blt_un::_inf + ldsfld float64 blt_un::neg_inf ldsfld float64 blt_un::one blt.un F br FAIL F: - ldsfld float64 blt_un::_inf + ldsfld float64 blt_un::neg_inf ldsfld float64 blt_un::max blt.un G br FAIL G: - ldsfld float64 blt_un::_inf - ldsfld float64 blt_un::inf + ldsfld float64 blt_un::neg_inf + ldsfld float64 blt_un::pos_inf blt.un H br FAIL H: - ldsfld float64 blt_un::_inf + ldsfld float64 blt_un::neg_inf ldsfld float64 blt_un::NaN blt.un K br FAIL K: - ldsfld float64 blt_un::_min - ldsfld float64 blt_un::_inf + ldsfld float64 blt_un::min + ldsfld float64 blt_un::neg_inf blt.un FAIL - ldsfld float64 blt_un::_min - ldsfld float64 blt_un::_min + ldsfld float64 blt_un::min + ldsfld float64 blt_un::min blt.un FAIL L: - ldsfld float64 blt_un::_min - ldsfld float64 blt_un::_one + ldsfld float64 blt_un::min + ldsfld float64 blt_un::minus_one blt.un M br FAIL M: - ldsfld float64 blt_un::_min - ldsfld float64 blt_un::_zero + ldsfld float64 blt_un::min + ldsfld float64 blt_un::minus_zero blt.un N br FAIL N: - ldsfld float64 blt_un::_min + ldsfld float64 blt_un::min ldsfld float64 blt_un::zero blt.un O br FAIL O: - ldsfld float64 blt_un::_min + ldsfld float64 blt_un::min ldsfld float64 blt_un::one blt.un P br FAIL P: - ldsfld float64 blt_un::_min + ldsfld float64 blt_un::min ldsfld float64 blt_un::max blt.un Q br FAIL Q: - ldsfld float64 blt_un::_min - ldsfld float64 blt_un::inf + ldsfld float64 blt_un::min + ldsfld float64 blt_un::pos_inf blt.un R br FAIL R: - ldsfld float64 blt_un::_min + ldsfld float64 blt_un::min ldsfld float64 blt_un::NaN blt.un S br FAIL S: - ldsfld float64 blt_un::_one - ldsfld float64 blt_un::_inf + ldsfld float64 blt_un::minus_one + ldsfld float64 blt_un::neg_inf blt.un FAIL - ldsfld float64 blt_un::_one - ldsfld float64 blt_un::_min + ldsfld float64 blt_un::minus_one + ldsfld float64 blt_un::min blt.un FAIL - ldsfld float64 blt_un::_one - ldsfld float64 blt_un::_one + ldsfld float64 blt_un::minus_one + ldsfld float64 blt_un::minus_one blt.un FAIL T: - ldsfld float64 blt_un::_one - ldsfld float64 blt_un::_zero + ldsfld float64 blt_un::minus_one + ldsfld float64 blt_un::minus_zero blt.un U br FAIL U: - ldsfld float64 blt_un::_one + ldsfld float64 blt_un::minus_one ldsfld float64 blt_un::zero blt.un V br FAIL V: - ldsfld float64 blt_un::_one + ldsfld float64 blt_un::minus_one ldsfld float64 blt_un::one blt.un W br FAIL W: - ldsfld float64 blt_un::_one + ldsfld float64 blt_un::minus_one ldsfld float64 blt_un::max blt.un X br FAIL X: - ldsfld float64 blt_un::_one - ldsfld float64 blt_un::inf + ldsfld float64 blt_un::minus_one + ldsfld float64 blt_un::pos_inf blt.un Y br FAIL Y: - ldsfld float64 blt_un::_one + ldsfld float64 blt_un::minus_one ldsfld float64 blt_un::NaN blt.un Z br FAIL Z: - ldsfld float64 blt_un::_zero - ldsfld float64 blt_un::_inf + ldsfld float64 blt_un::minus_zero + ldsfld float64 blt_un::neg_inf blt.un FAIL - ldsfld float64 blt_un::_zero - ldsfld float64 blt_un::_min + ldsfld float64 blt_un::minus_zero + ldsfld float64 blt_un::min blt.un FAIL - ldsfld float64 blt_un::_zero - ldsfld float64 blt_un::_one + ldsfld float64 blt_un::minus_zero + ldsfld float64 blt_un::minus_one blt.un FAIL - ldsfld float64 blt_un::_zero - ldsfld float64 blt_un::_zero + ldsfld float64 blt_un::minus_zero + ldsfld float64 blt_un::minus_zero blt.un FAIL AA: - ldsfld float64 blt_un::_zero + ldsfld float64 blt_un::minus_zero ldsfld float64 blt_un::zero blt.un FAIL BB: - ldsfld float64 blt_un::_zero + ldsfld float64 blt_un::minus_zero ldsfld float64 blt_un::one blt.un CC br FAIL CC: - ldsfld float64 blt_un::_zero + ldsfld float64 blt_un::minus_zero ldsfld float64 blt_un::max blt.un DD br FAIL DD: - ldsfld float64 blt_un::_zero - ldsfld float64 blt_un::inf + ldsfld float64 blt_un::minus_zero + ldsfld float64 blt_un::pos_inf blt.un EE br FAIL EE: - ldsfld float64 blt_un::_zero + ldsfld float64 blt_un::minus_zero ldsfld float64 blt_un::NaN blt.un FF br FAIL FF: ldsfld float64 blt_un::zero - ldsfld float64 blt_un::_inf + ldsfld float64 blt_un::neg_inf blt.un FAIL ldsfld float64 blt_un::zero - ldsfld float64 blt_un::_min + ldsfld float64 blt_un::min blt.un FAIL ldsfld float64 blt_un::zero - ldsfld float64 blt_un::_one + ldsfld float64 blt_un::minus_one blt.un FAIL ldsfld float64 blt_un::zero - ldsfld float64 blt_un::_zero + ldsfld float64 blt_un::minus_zero blt.un FAIL GG: @@ -277,7 +286,7 @@ II: JJ: ldsfld float64 blt_un::zero - ldsfld float64 blt_un::inf + ldsfld float64 blt_un::pos_inf blt.un KK br FAIL @@ -289,19 +298,19 @@ KK: LL: ldsfld float64 blt_un::one - ldsfld float64 blt_un::_inf + ldsfld float64 blt_un::neg_inf blt.un FAIL ldsfld float64 blt_un::one - ldsfld float64 blt_un::_min + ldsfld float64 blt_un::min blt.un FAIL ldsfld float64 blt_un::one - ldsfld float64 blt_un::_one + ldsfld float64 blt_un::minus_one blt.un FAIL ldsfld float64 blt_un::one - ldsfld float64 blt_un::_zero + ldsfld float64 blt_un::minus_zero blt.un FAIL ldsfld float64 blt_un::one @@ -320,7 +329,7 @@ MM: NN: ldsfld float64 blt_un::one - ldsfld float64 blt_un::inf + ldsfld float64 blt_un::pos_inf blt.un OO br FAIL @@ -332,19 +341,19 @@ OO: PP: ldsfld float64 blt_un::max - ldsfld float64 blt_un::_inf + ldsfld float64 blt_un::neg_inf blt.un FAIL ldsfld float64 blt_un::max - ldsfld float64 blt_un::_min + ldsfld float64 blt_un::min blt.un FAIL ldsfld float64 blt_un::max - ldsfld float64 blt_un::_one + ldsfld float64 blt_un::minus_one blt.un FAIL ldsfld float64 blt_un::max - ldsfld float64 blt_un::_zero + ldsfld float64 blt_un::minus_zero blt.un FAIL ldsfld float64 blt_un::max @@ -361,7 +370,7 @@ PP: QQ: ldsfld float64 blt_un::max - ldsfld float64 blt_un::inf + ldsfld float64 blt_un::pos_inf blt.un RR br FAIL @@ -372,65 +381,65 @@ RR: br FAIL SS: - ldsfld float64 blt_un::inf - ldsfld float64 blt_un::_inf + ldsfld float64 blt_un::pos_inf + ldsfld float64 blt_un::neg_inf blt.un FAIL - ldsfld float64 blt_un::inf - ldsfld float64 blt_un::_min + ldsfld float64 blt_un::pos_inf + ldsfld float64 blt_un::min blt.un FAIL - ldsfld float64 blt_un::inf - ldsfld float64 blt_un::_one + ldsfld float64 blt_un::pos_inf + ldsfld float64 blt_un::minus_one blt.un FAIL - ldsfld float64 blt_un::inf - ldsfld float64 blt_un::_zero + ldsfld float64 blt_un::pos_inf + ldsfld float64 blt_un::minus_zero blt.un FAIL - ldsfld float64 blt_un::inf + ldsfld float64 blt_un::pos_inf ldsfld float64 blt_un::zero blt.un FAIL - ldsfld float64 blt_un::inf + ldsfld float64 blt_un::pos_inf ldsfld float64 blt_un::one blt.un FAIL - ldsfld float64 blt_un::inf + ldsfld float64 blt_un::pos_inf ldsfld float64 blt_un::max blt.un FAIL - ldsfld float64 blt_un::inf - ldsfld float64 blt_un::inf + ldsfld float64 blt_un::pos_inf + ldsfld float64 blt_un::pos_inf blt.un FAIL TT: - ldsfld float64 blt_un::inf + ldsfld float64 blt_un::pos_inf ldsfld float64 blt_un::NaN blt.un UU br FAIL UU: ldsfld float64 blt_un::NaN - ldsfld float64 blt_un::_inf + ldsfld float64 blt_un::neg_inf blt.un VV br FAIL VV: ldsfld float64 blt_un::NaN - ldsfld float64 blt_un::_min + ldsfld float64 blt_un::min blt.un WW br FAIL WW: ldsfld float64 blt_un::NaN - ldsfld float64 blt_un::_one + ldsfld float64 blt_un::minus_one blt.un XX br FAIL XX: ldsfld float64 blt_un::NaN - ldsfld float64 blt_un::_zero + ldsfld float64 blt_un::minus_zero blt.un YY br FAIL @@ -454,14 +463,428 @@ AAA: BBB: ldsfld float64 blt_un::NaN - ldsfld float64 blt_un::inf + ldsfld float64 blt_un::pos_inf blt.un CCC br FAIL CCC: ldsfld float64 blt_un::NaN ldsfld float64 blt_un::NaN - blt.un BACKCHECK + blt.un L0 + br FAIL + + // Testing early folding logic + +L0: + ldc.r8 NEG_INF + ldc.r8 NEG_INF + blt.un FAIL + + ldc.r8 NEG_INF + ldc.r8 MIN + blt.un L1 + br FAIL + +L1: + ldc.r8 NEG_INF + ldc.r8 MINUS_ONE + blt.un L2 + br FAIL + +L2: + ldc.r8 NEG_INF + ldc.r8 MINUS_ZERO + blt.un L3 + br FAIL + +L3: + ldc.r8 NEG_INF + ldc.r8 ZERO + blt.un L4 + br FAIL + +L4: + ldc.r8 NEG_INF + ldc.r8 ONE + blt.un L5 + br FAIL + +L5: + ldc.r8 NEG_INF + ldc.r8 MAX + blt.un L6 + br FAIL + +L6: + ldc.r8 NEG_INF + ldc.r8 POS_INF + blt.un L7 + br FAIL + +L7: + ldc.r8 NEG_INF + ldc.r8 NAN + blt.un L8 + br FAIL + +L8: + ldc.r8 MIN + ldc.r8 NEG_INF + blt.un FAIL + + ldc.r8 MIN + ldc.r8 MIN + blt.un FAIL + + ldc.r8 MIN + ldc.r8 MINUS_ONE + blt.un L9 + br FAIL + +L9: + ldc.r8 MIN + ldc.r8 MINUS_ZERO + blt.un L10 + br FAIL + +L10: + ldc.r8 MIN + ldc.r8 ZERO + blt.un L11 + br FAIL + +L11: + ldc.r8 MIN + ldc.r8 ONE + blt.un L12 + br FAIL + +L12: + ldc.r8 MIN + ldc.r8 MAX + blt.un L13 + br FAIL + +L13: + ldc.r8 MIN + ldc.r8 POS_INF + blt.un L14 + br FAIL + +L14: + ldc.r8 MIN + ldc.r8 NAN + blt.un L15 + br FAIL + +L15: + ldc.r8 MINUS_ONE + ldc.r8 NEG_INF + blt.un FAIL + + ldc.r8 MINUS_ONE + ldc.r8 MIN + blt.un FAIL + + ldc.r8 MINUS_ONE + ldc.r8 MINUS_ONE + blt.un FAIL + + ldc.r8 MINUS_ONE + ldc.r8 MINUS_ZERO + blt.un L16 + br FAIL + +L16: + ldc.r8 MINUS_ONE + ldc.r8 ZERO + blt.un L17 + br FAIL + +L17: + ldc.r8 MINUS_ONE + ldc.r8 ONE + blt.un L18 + br FAIL + +L18: + ldc.r8 MINUS_ONE + ldc.r8 MAX + blt.un L19 + br FAIL + +L19: + ldc.r8 MINUS_ONE + ldc.r8 POS_INF + blt.un L20 + br FAIL + +L20: + ldc.r8 MINUS_ONE + ldc.r8 NAN + blt.un L21 + br FAIL + +L21: + ldc.r8 MINUS_ZERO + ldc.r8 NEG_INF + blt.un FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 MIN + blt.un FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 MINUS_ONE + blt.un FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 MINUS_ZERO + blt.un FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 ZERO + blt.un FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 ONE + blt.un L22 + br FAIL + +L22: + ldc.r8 MINUS_ZERO + ldc.r8 MAX + blt.un L23 + br FAIL + +L23: + ldc.r8 MINUS_ZERO + ldc.r8 POS_INF + blt.un L24 + br FAIL + +L24: + ldc.r8 MINUS_ZERO + ldc.r8 NAN + blt.un L25 + br FAIL + +L25: + ldc.r8 ZERO + ldc.r8 NEG_INF + blt.un FAIL + + ldc.r8 ZERO + ldc.r8 MIN + blt.un FAIL + + ldc.r8 ZERO + ldc.r8 MINUS_ONE + blt.un FAIL + + ldc.r8 ZERO + ldc.r8 MINUS_ZERO + blt.un FAIL + + ldc.r8 ZERO + ldc.r8 ZERO + blt.un FAIL + + ldc.r8 ZERO + ldc.r8 ONE + blt.un L26 + br FAIL + +L26: + ldc.r8 ZERO + ldc.r8 MAX + blt.un L27 + br FAIL + +L27: + ldc.r8 ZERO + ldc.r8 POS_INF + blt.un L28 + br FAIL + +L28: + ldc.r8 ZERO + ldc.r8 NAN + blt.un L29 + br FAIL + +L29: + ldc.r8 ONE + ldc.r8 NEG_INF + blt.un FAIL + + ldc.r8 ONE + ldc.r8 MIN + blt.un FAIL + + ldc.r8 ONE + ldc.r8 MINUS_ONE + blt.un FAIL + + ldc.r8 ONE + ldc.r8 MINUS_ZERO + blt.un FAIL + + ldc.r8 ONE + ldc.r8 ZERO + blt.un FAIL + + ldc.r8 ONE + ldc.r8 ONE + blt.un FAIL + + ldc.r8 ONE + ldc.r8 MAX + blt.un L30 + br FAIL + +L30: + ldc.r8 ONE + ldc.r8 POS_INF + blt.un L31 + br FAIL + +L31: + ldc.r8 ONE + ldc.r8 NAN + blt.un L32 + br FAIL + +L32: + ldc.r8 MAX + ldc.r8 NEG_INF + blt.un FAIL + + ldc.r8 MAX + ldc.r8 MIN + blt.un FAIL + + ldc.r8 MAX + ldc.r8 MINUS_ONE + blt.un FAIL + + ldc.r8 MAX + ldc.r8 MINUS_ZERO + blt.un FAIL + + ldc.r8 MAX + ldc.r8 ZERO + blt.un FAIL + + ldc.r8 MAX + ldc.r8 ONE + blt.un FAIL + + ldc.r8 MAX + ldc.r8 MAX + blt.un FAIL + + ldc.r8 MAX + ldc.r8 POS_INF + blt.un L33 + br FAIL + +L33: + ldc.r8 MAX + ldc.r8 NAN + blt.un L34 + br FAIL + +L34: + ldc.r8 POS_INF + ldc.r8 NEG_INF + blt.un FAIL + + ldc.r8 POS_INF + ldc.r8 MIN + blt.un FAIL + + ldc.r8 POS_INF + ldc.r8 MINUS_ONE + blt.un FAIL + + ldc.r8 POS_INF + ldc.r8 MINUS_ZERO + blt.un FAIL + + ldc.r8 POS_INF + ldc.r8 ZERO + blt.un FAIL + + ldc.r8 POS_INF + ldc.r8 ONE + blt.un FAIL + + ldc.r8 POS_INF + ldc.r8 MAX + blt.un FAIL + + ldc.r8 POS_INF + ldc.r8 POS_INF + blt.un FAIL + + ldc.r8 POS_INF + ldc.r8 NAN + blt.un L35 + br FAIL + +L35: + ldc.r8 NAN + ldc.r8 NEG_INF + blt.un L36 + br FAIL + +L36: + ldc.r8 NAN + ldc.r8 MIN + blt.un L37 + br FAIL + +L37: + ldc.r8 NAN + ldc.r8 MINUS_ONE + blt.un L38 + br FAIL + +L38: + ldc.r8 NAN + ldc.r8 MINUS_ZERO + blt.un L39 + br FAIL + +L39: + ldc.r8 NAN + ldc.r8 ZERO + blt.un L40 + br FAIL + +L40: + ldc.r8 NAN + ldc.r8 ONE + blt.un L41 + br FAIL + +L41: + ldc.r8 NAN + ldc.r8 MAX + blt.un L42 + br FAIL + +L42: + ldc.r8 NAN + ldc.r8 POS_INF + blt.un L43 + br FAIL + +L43: + ldc.r8 NAN + ldc.r8 NAN + blt.un BACKCHECK br FAIL TOPASS: diff --git a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bne_un_r4.il b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bne_un_r4.il index c02bcad9c7d..3e5d97c61d3 100644 --- a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bne_un_r4.il +++ b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bne_un_r4.il @@ -3,36 +3,46 @@ .assembly extern legacy library mscorlib {} +#define NEG_INF "float32(0xFF800000)" +#define MIN "float32(0xFF7FFFFF)" +#define MINUS_ONE "float32(0xBF800000)" +#define MINUS_ZERO "float32(0x80000000)" +#define ZERO "float32(0x00000000)" +#define ONE "float32(0x3F800000)" +#define MAX "float32(0x7F7FFFFF)" +#define POS_INF "float32(0x7F800000)" +#define NAN "float32(0x7FC00000)" + .class public bne_un { -.field public static float32 _inf -.field public static float32 _min -.field public static float32 _one -.field public static float32 _zero +.field public static float32 neg_inf +.field public static float32 min +.field public static float32 minus_one +.field public static float32 minus_zero .field public static float32 zero .field public static float32 one .field public static float32 max -.field public static float32 inf +.field public static float32 pos_inf .field public static float32 NaN .method public static void initialize() { .maxstack 10 - ldc.r4 float32(0xFF800000) - stsfld float32 bne_un::_inf - ldc.r4 float32(0xFF7FFFFF) - stsfld float32 bne_un::_min - ldc.r4 float32(0xBF800000) - stsfld float32 bne_un::_one - ldc.r4 float32(0x80000000) - stsfld float32 bne_un::_zero - ldc.r4 float32(0x00000000) + ldc.r4 NEG_INF + stsfld float32 bne_un::neg_inf + ldc.r4 MIN + stsfld float32 bne_un::min + ldc.r4 MINUS_ONE + stsfld float32 bne_un::minus_one + ldc.r4 MINUS_ZERO + stsfld float32 bne_un::minus_zero + ldc.r4 ZERO stsfld float32 bne_un::zero - ldc.r4 float32(0x3F800000) + ldc.r4 ONE stsfld float32 bne_un::one - ldc.r4 float32(0x7F7FFFFF) + ldc.r4 MAX stsfld float32 bne_un::max - ldc.r4 float32(0x7F800000) - stsfld float32 bne_un::inf - ldc.r4 float32(0x7FC00000) + ldc.r4 POS_INF + stsfld float32 bne_un::pos_inf + ldc.r4 NAN stsfld float32 bne_un::NaN ret } @@ -41,230 +51,230 @@ .entrypoint .maxstack 10 call void bne_un::initialize() - ldsfld float32 bne_un::_inf - ldsfld float32 bne_un::_inf + ldsfld float32 bne_un::neg_inf + ldsfld float32 bne_un::neg_inf bne.un FAIL - ldsfld float32 bne_un::_inf - ldsfld float32 bne_un::_min + ldsfld float32 bne_un::neg_inf + ldsfld float32 bne_un::min bne.un A br FAIL A: - ldsfld float32 bne_un::_inf - ldsfld float32 bne_un::_one + ldsfld float32 bne_un::neg_inf + ldsfld float32 bne_un::minus_one bne.un B br FAIL B: - ldsfld float32 bne_un::_inf - ldsfld float32 bne_un::_zero + ldsfld float32 bne_un::neg_inf + ldsfld float32 bne_un::minus_zero bne.un C br FAIL C: - ldsfld float32 bne_un::_inf + ldsfld float32 bne_un::neg_inf ldsfld float32 bne_un::zero bne.un D br FAIL D: - ldsfld float32 bne_un::_inf + ldsfld float32 bne_un::neg_inf ldsfld float32 bne_un::one bne.un E br FAIL E: - ldsfld float32 bne_un::_inf + ldsfld float32 bne_un::neg_inf ldsfld float32 bne_un::max bne.un F br FAIL F: - ldsfld float32 bne_un::_inf - ldsfld float32 bne_un::inf + ldsfld float32 bne_un::neg_inf + ldsfld float32 bne_un::pos_inf bne.un G br FAIL G: - ldsfld float32 bne_un::_inf + ldsfld float32 bne_un::neg_inf ldsfld float32 bne_un::NaN bne.un H br FAIL H: - ldsfld float32 bne_un::_min - ldsfld float32 bne_un::_inf + ldsfld float32 bne_un::min + ldsfld float32 bne_un::neg_inf bne.un I br FAIL I: - ldsfld float32 bne_un::_min - ldsfld float32 bne_un::_min + ldsfld float32 bne_un::min + ldsfld float32 bne_un::min bne.un FAIL - ldsfld float32 bne_un::_min - ldsfld float32 bne_un::_one + ldsfld float32 bne_un::min + ldsfld float32 bne_un::minus_one bne.un J br FAIL J: - ldsfld float32 bne_un::_min - ldsfld float32 bne_un::_zero + ldsfld float32 bne_un::min + ldsfld float32 bne_un::minus_zero bne.un K br FAIL K: - ldsfld float32 bne_un::_min + ldsfld float32 bne_un::min ldsfld float32 bne_un::zero bne.un L br FAIL L: - ldsfld float32 bne_un::_min + ldsfld float32 bne_un::min ldsfld float32 bne_un::one bne.un M br FAIL M: - ldsfld float32 bne_un::_min + ldsfld float32 bne_un::min ldsfld float32 bne_un::max bne.un N br FAIL N: - ldsfld float32 bne_un::_min - ldsfld float32 bne_un::inf + ldsfld float32 bne_un::min + ldsfld float32 bne_un::pos_inf bne.un O br FAIL O: - ldsfld float32 bne_un::_min + ldsfld float32 bne_un::min ldsfld float32 bne_un::NaN bne.un P br FAIL P: - ldsfld float32 bne_un::_one - ldsfld float32 bne_un::_inf + ldsfld float32 bne_un::minus_one + ldsfld float32 bne_un::neg_inf bne.un Q br FAIL Q: - ldsfld float32 bne_un::_one - ldsfld float32 bne_un::_min + ldsfld float32 bne_un::minus_one + ldsfld float32 bne_un::min bne.un R br FAIL R: - ldsfld float32 bne_un::_one - ldsfld float32 bne_un::_one + ldsfld float32 bne_un::minus_one + ldsfld float32 bne_un::minus_one bne.un FAIL S: - ldsfld float32 bne_un::_one - ldsfld float32 bne_un::_zero + ldsfld float32 bne_un::minus_one + ldsfld float32 bne_un::minus_zero bne.un T br FAIL T: - ldsfld float32 bne_un::_one + ldsfld float32 bne_un::minus_one ldsfld float32 bne_un::zero bne.un U br FAIL U: - ldsfld float32 bne_un::_one + ldsfld float32 bne_un::minus_one ldsfld float32 bne_un::one bne.un V br FAIL V: - ldsfld float32 bne_un::_one + ldsfld float32 bne_un::minus_one ldsfld float32 bne_un::max bne.un W br FAIL W: - ldsfld float32 bne_un::_one - ldsfld float32 bne_un::inf + ldsfld float32 bne_un::minus_one + ldsfld float32 bne_un::pos_inf bne.un X br FAIL X: - ldsfld float32 bne_un::_one + ldsfld float32 bne_un::minus_one ldsfld float32 bne_un::NaN bne.un Y br FAIL Y: - ldsfld float32 bne_un::_zero - ldsfld float32 bne_un::_inf + ldsfld float32 bne_un::minus_zero + ldsfld float32 bne_un::neg_inf bne.un Z br FAIL Z: - ldsfld float32 bne_un::_zero - ldsfld float32 bne_un::_min + ldsfld float32 bne_un::minus_zero + ldsfld float32 bne_un::min bne.un AA br FAIL AA: - ldsfld float32 bne_un::_zero - ldsfld float32 bne_un::_one + ldsfld float32 bne_un::minus_zero + ldsfld float32 bne_un::minus_one bne.un BB br FAIL BB: - ldsfld float32 bne_un::_zero - ldsfld float32 bne_un::_zero + ldsfld float32 bne_un::minus_zero + ldsfld float32 bne_un::minus_zero bne.un FAIL - ldsfld float32 bne_un::_zero + ldsfld float32 bne_un::minus_zero ldsfld float32 bne_un::zero bne.un FAIL - ldsfld float32 bne_un::_zero + ldsfld float32 bne_un::minus_zero ldsfld float32 bne_un::one bne.un CC br FAIL CC: - ldsfld float32 bne_un::_zero + ldsfld float32 bne_un::minus_zero ldsfld float32 bne_un::max bne.un DD br FAIL DD: - ldsfld float32 bne_un::_zero - ldsfld float32 bne_un::inf + ldsfld float32 bne_un::minus_zero + ldsfld float32 bne_un::pos_inf bne.un EE br FAIL EE: - ldsfld float32 bne_un::_zero + ldsfld float32 bne_un::minus_zero ldsfld float32 bne_un::NaN bne.un FF br FAIL FF: ldsfld float32 bne_un::zero - ldsfld float32 bne_un::_inf + ldsfld float32 bne_un::neg_inf bne.un GG br FAIL GG: ldsfld float32 bne_un::zero - ldsfld float32 bne_un::_min + ldsfld float32 bne_un::min bne.un HH br FAIL HH: ldsfld float32 bne_un::zero - ldsfld float32 bne_un::_one + ldsfld float32 bne_un::minus_one bne.un II br FAIL II: ldsfld float32 bne_un::zero - ldsfld float32 bne_un::_zero + ldsfld float32 bne_un::minus_zero bne.un FAIL ldsfld float32 bne_un::zero @@ -284,7 +294,7 @@ JJ: KK: ldsfld float32 bne_un::zero - ldsfld float32 bne_un::inf + ldsfld float32 bne_un::pos_inf bne.un LL br FAIL @@ -296,25 +306,25 @@ LL: MM: ldsfld float32 bne_un::one - ldsfld float32 bne_un::_inf + ldsfld float32 bne_un::neg_inf bne.un NN br FAIL NN: ldsfld float32 bne_un::one - ldsfld float32 bne_un::_min + ldsfld float32 bne_un::min bne.un OO br FAIL OO: ldsfld float32 bne_un::one - ldsfld float32 bne_un::_one + ldsfld float32 bne_un::minus_one bne.un PP br FAIL PP: ldsfld float32 bne_un::one - ldsfld float32 bne_un::_zero + ldsfld float32 bne_un::minus_zero bne.un QQ br FAIL @@ -337,7 +347,7 @@ SS: TT: ldsfld float32 bne_un::one - ldsfld float32 bne_un::inf + ldsfld float32 bne_un::pos_inf bne.un UU br FAIL @@ -349,25 +359,25 @@ UU: VV: ldsfld float32 bne_un::max - ldsfld float32 bne_un::_inf + ldsfld float32 bne_un::neg_inf bne.un WW br FAIL WW: ldsfld float32 bne_un::max - ldsfld float32 bne_un::_min + ldsfld float32 bne_un::min bne.un XX br FAIL XX: ldsfld float32 bne_un::max - ldsfld float32 bne_un::_one + ldsfld float32 bne_un::minus_one bne.un YY br FAIL YY: ldsfld float32 bne_un::max - ldsfld float32 bne_un::_zero + ldsfld float32 bne_un::minus_zero bne.un ZZ br FAIL @@ -389,7 +399,7 @@ BBB: bne.un FAIL ldsfld float32 bne_un::max - ldsfld float32 bne_un::inf + ldsfld float32 bne_un::pos_inf bne.un CCC br FAIL @@ -400,78 +410,78 @@ CCC: br FAIL DDD: - ldsfld float32 bne_un::inf - ldsfld float32 bne_un::_inf + ldsfld float32 bne_un::pos_inf + ldsfld float32 bne_un::neg_inf bne.un EEE br FAIL EEE: - ldsfld float32 bne_un::inf - ldsfld float32 bne_un::_min + ldsfld float32 bne_un::pos_inf + ldsfld float32 bne_un::min bne.un FFF br FAIL FFF: - ldsfld float32 bne_un::inf - ldsfld float32 bne_un::_one + ldsfld float32 bne_un::pos_inf + ldsfld float32 bne_un::minus_one bne.un GGG br FAIL GGG: - ldsfld float32 bne_un::inf - ldsfld float32 bne_un::_zero + ldsfld float32 bne_un::pos_inf + ldsfld float32 bne_un::minus_zero bne.un HHH br FAIL HHH: - ldsfld float32 bne_un::inf + ldsfld float32 bne_un::pos_inf ldsfld float32 bne_un::zero bne.un III br FAIL III: - ldsfld float32 bne_un::inf + ldsfld float32 bne_un::pos_inf ldsfld float32 bne_un::one bne.un JJJ br FAIL JJJ: - ldsfld float32 bne_un::inf + ldsfld float32 bne_un::pos_inf ldsfld float32 bne_un::max bne.un KK_ br FAIL KK_: - ldsfld float32 bne_un::inf - ldsfld float32 bne_un::inf + ldsfld float32 bne_un::pos_inf + ldsfld float32 bne_un::pos_inf bne.un FAIL - ldsfld float32 bne_un::inf + ldsfld float32 bne_un::pos_inf ldsfld float32 bne_un::NaN bne.un LLL br FAIL LLL: ldsfld float32 bne_un::NaN - ldsfld float32 bne_un::_inf + ldsfld float32 bne_un::neg_inf bne.un MMM br FAIL MMM: ldsfld float32 bne_un::NaN - ldsfld float32 bne_un::_min + ldsfld float32 bne_un::min bne.un NNN br FAIL NNN: ldsfld float32 bne_un::NaN - ldsfld float32 bne_un::_one + ldsfld float32 bne_un::minus_one bne.un OOO br FAIL OOO: ldsfld float32 bne_un::NaN - ldsfld float32 bne_un::_zero + ldsfld float32 bne_un::minus_zero bne.un PPP br FAIL @@ -495,13 +505,481 @@ RRR: SSS: ldsfld float32 bne_un::NaN - ldsfld float32 bne_un::inf + ldsfld float32 bne_un::pos_inf bne.un TTT br FAIL TTT: ldsfld float32 bne_un::NaN ldsfld float32 bne_un::NaN + bne.un L0 + br FAIL + + // Testing early folding logic + +L0: + ldc.r4 NEG_INF + ldc.r4 NEG_INF + bne.un FAIL + + ldc.r4 NEG_INF + ldc.r4 MIN + bne.un L1 + br FAIL + +L1: + ldc.r4 NEG_INF + ldc.r4 MINUS_ONE + bne.un L2 + br FAIL + +L2: + ldc.r4 NEG_INF + ldc.r4 MINUS_ZERO + bne.un L3 + br FAIL + +L3: + ldc.r4 NEG_INF + ldc.r4 ZERO + bne.un L4 + br FAIL + +L4: + ldc.r4 NEG_INF + ldc.r4 ONE + bne.un L5 + br FAIL + +L5: + ldc.r4 NEG_INF + ldc.r4 MAX + bne.un L6 + br FAIL + +L6: + ldc.r4 NEG_INF + ldc.r4 POS_INF + bne.un L7 + br FAIL + +L7: + ldc.r4 NEG_INF + ldc.r4 NAN + bne.un L8 + br FAIL + +L8: + ldc.r4 MIN + ldc.r4 NEG_INF + bne.un L9 + br FAIL + +L9: + ldc.r4 MIN + ldc.r4 MIN + bne.un FAIL + + ldc.r4 MIN + ldc.r4 MINUS_ONE + bne.un L10 + br FAIL + +L10: + ldc.r4 MIN + ldc.r4 MINUS_ZERO + bne.un L11 + br FAIL + +L11: + ldc.r4 MIN + ldc.r4 ZERO + bne.un L12 + br FAIL + +L12: + ldc.r4 MIN + ldc.r4 ONE + bne.un L13 + br FAIL + +L13: + ldc.r4 MIN + ldc.r4 MAX + bne.un L14 + br FAIL + +L14: + ldc.r4 MIN + ldc.r4 POS_INF + bne.un L15 + br FAIL + +L15: + ldc.r4 MIN + ldc.r4 NAN + bne.un L16 + br FAIL + +L16: + ldc.r4 MINUS_ONE + ldc.r4 NEG_INF + bne.un L17 + br FAIL + +L17: + ldc.r4 MINUS_ONE + ldc.r4 MIN + bne.un L18 + br FAIL + +L18: + ldc.r4 MINUS_ONE + ldc.r4 MINUS_ONE + bne.un FAIL + + ldc.r4 MINUS_ONE + ldc.r4 MINUS_ZERO + bne.un L19 + br FAIL + +L19: + ldc.r4 MINUS_ONE + ldc.r4 ZERO + bne.un L20 + br FAIL + +L20: + ldc.r4 MINUS_ONE + ldc.r4 ONE + bne.un L21 + br FAIL + +L21: + ldc.r4 MINUS_ONE + ldc.r4 MAX + bne.un L22 + br FAIL + +L22: + ldc.r4 MINUS_ONE + ldc.r4 POS_INF + bne.un L23 + br FAIL + +L23: + ldc.r4 MINUS_ONE + ldc.r4 NAN + bne.un L24 + br FAIL + +L24: + ldc.r4 MINUS_ZERO + ldc.r4 NEG_INF + bne.un L25 + br FAIL + +L25: + ldc.r4 MINUS_ZERO + ldc.r4 MIN + bne.un L26 + br FAIL + +L26: + ldc.r4 MINUS_ZERO + ldc.r4 MINUS_ONE + bne.un L27 + br FAIL + +L27: + ldc.r4 MINUS_ZERO + ldc.r4 MINUS_ZERO + bne.un FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 ZERO + bne.un FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 ONE + bne.un L28 + br FAIL + +L28: + ldc.r4 MINUS_ZERO + ldc.r4 MAX + bne.un L29 + br FAIL + +L29: + ldc.r4 MINUS_ZERO + ldc.r4 POS_INF + bne.un L30 + br FAIL + +L30: + ldc.r4 MINUS_ZERO + ldc.r4 NAN + bne.un L31 + br FAIL + +L31: + ldc.r4 ZERO + ldc.r4 NEG_INF + bne.un L32 + br FAIL + +L32: + ldc.r4 ZERO + ldc.r4 MIN + bne.un L33 + br FAIL + +L33: + ldc.r4 ZERO + ldc.r4 MINUS_ONE + bne.un L34 + br FAIL + +L34: + ldc.r4 ZERO + ldc.r4 MINUS_ZERO + bne.un FAIL + + ldc.r4 ZERO + ldc.r4 ZERO + bne.un FAIL + + ldc.r4 ZERO + ldc.r4 ONE + bne.un L35 + br FAIL + +L35: + ldc.r4 ZERO + ldc.r4 MAX + bne.un L36 + br FAIL + +L36: + ldc.r4 ZERO + ldc.r4 POS_INF + bne.un L37 + br FAIL + +L37: + ldc.r4 ZERO + ldc.r4 NAN + bne.un L38 + br FAIL + +L38: + ldc.r4 ONE + ldc.r4 NEG_INF + bne.un L39 + br FAIL + +L39: + ldc.r4 ONE + ldc.r4 MIN + bne.un L40 + br FAIL + +L40: + ldc.r4 ONE + ldc.r4 MINUS_ONE + bne.un L41 + br FAIL + +L41: + ldc.r4 ONE + ldc.r4 MINUS_ZERO + bne.un L42 + br FAIL + +L42: + ldc.r4 ONE + ldc.r4 ZERO + bne.un L43 + br FAIL + +L43: + ldc.r4 ONE + ldc.r4 ONE + bne.un FAIL + + ldc.r4 ONE + ldc.r4 MAX + bne.un L44 + br FAIL + +L44: + ldc.r4 ONE + ldc.r4 POS_INF + bne.un L45 + br FAIL + +L45: + ldc.r4 ONE + ldc.r4 NAN + bne.un L46 + br FAIL + +L46: + ldc.r4 MAX + ldc.r4 NEG_INF + bne.un L47 + br FAIL + +L47: + ldc.r4 MAX + ldc.r4 MIN + bne.un L48 + br FAIL + +L48: + ldc.r4 MAX + ldc.r4 MINUS_ONE + bne.un L49 + br FAIL + +L49: + ldc.r4 MAX + ldc.r4 MINUS_ZERO + bne.un L50 + br FAIL + +L50: + ldc.r4 MAX + ldc.r4 ZERO + bne.un L51 + br FAIL + +L51: + ldc.r4 MAX + ldc.r4 ONE + bne.un L52 + br FAIL + +L52: + ldc.r4 MAX + ldc.r4 MAX + bne.un FAIL + + ldc.r4 MAX + ldc.r4 POS_INF + bne.un L53 + br FAIL + +L53: + ldc.r4 MAX + ldc.r4 NAN + bne.un L54 + br FAIL + +L54: + ldc.r4 POS_INF + ldc.r4 NEG_INF + bne.un L55 + br FAIL + +L55: + ldc.r4 POS_INF + ldc.r4 MIN + bne.un L56 + br FAIL + +L56: + ldc.r4 POS_INF + ldc.r4 MINUS_ONE + bne.un L57 + br FAIL + +L57: + ldc.r4 POS_INF + ldc.r4 MINUS_ZERO + bne.un L58 + br FAIL + +L58: + ldc.r4 POS_INF + ldc.r4 ZERO + bne.un L59 + br FAIL + +L59: + ldc.r4 POS_INF + ldc.r4 ONE + bne.un L60 + br FAIL + +L60: + ldc.r4 POS_INF + ldc.r4 MAX + bne.un L61 + br FAIL + +L61: + ldc.r4 POS_INF + ldc.r4 POS_INF + bne.un FAIL + + ldc.r4 POS_INF + ldc.r4 NAN + bne.un L62 + br FAIL + +L62: + ldc.r4 NAN + ldc.r4 NEG_INF + bne.un L63 + br FAIL + +L63: + ldc.r4 NAN + ldc.r4 MIN + bne.un L64 + br FAIL + +L64: + ldc.r4 NAN + ldc.r4 MINUS_ONE + bne.un L65 + br FAIL + +L65: + ldc.r4 NAN + ldc.r4 MINUS_ZERO + bne.un L66 + br FAIL + +L66: + ldc.r4 NAN + ldc.r4 ZERO + bne.un L67 + br FAIL + +L67: + ldc.r4 NAN + ldc.r4 ONE + bne.un L68 + br FAIL + +L68: + ldc.r4 NAN + ldc.r4 MAX + bne.un L69 + br FAIL + +L69: + ldc.r4 NAN + ldc.r4 POS_INF + bne.un L70 + br FAIL + +L70: + ldc.r4 NAN + ldc.r4 NAN bne.un BACKCHECK br FAIL diff --git a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bne_un_r8.il b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bne_un_r8.il index 4c160e9b583..1f0c535d102 100644 --- a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bne_un_r8.il +++ b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/bne_un_r8.il @@ -3,36 +3,46 @@ .assembly extern legacy library mscorlib {} +#define NEG_INF "float64(0xFFF0000000000000)" +#define MIN "float64(0xFF7FFFFFFFFFFFFF)" +#define MINUS_ONE "float64(0xBFF0000000000000)" +#define MINUS_ZERO "float64(0x8000000000000000)" +#define ZERO "float64(0x0000000000000000)" +#define ONE "float64(0x3FF0000000000000)" +#define MAX "float64(0x7FEFFFFFFFFFFFFF)" +#define POS_INF "float64(0x7FF0000000000000)" +#define NAN "float64(0x7FF8000000000000)" + .class public bne_un { -.field public static float64 _inf -.field public static float64 _min -.field public static float64 _one -.field public static float64 _zero +.field public static float64 neg_inf +.field public static float64 min +.field public static float64 minus_one +.field public static float64 minus_zero .field public static float64 zero .field public static float64 one .field public static float64 max -.field public static float64 inf +.field public static float64 pos_inf .field public static float64 NaN .method public static void initialize() { .maxstack 10 - ldc.r8 float64(0xFFF0000000000000) - stsfld float64 bne_un::_inf - ldc.r8 float64(0xFF7FFFFFFFFFFFFF) - stsfld float64 bne_un::_min - ldc.r8 float64(0xBFF0000000000000) - stsfld float64 bne_un::_one - ldc.r8 float64(0x8000000000000000) - stsfld float64 bne_un::_zero - ldc.r8 float64(0x0000000000000000) + ldc.r8 NEG_INF + stsfld float64 bne_un::neg_inf + ldc.r8 MIN + stsfld float64 bne_un::min + ldc.r8 MINUS_ONE + stsfld float64 bne_un::minus_one + ldc.r8 MINUS_ZERO + stsfld float64 bne_un::minus_zero + ldc.r8 ZERO stsfld float64 bne_un::zero - ldc.r8 float64(0x3FF0000000000000) + ldc.r8 ONE stsfld float64 bne_un::one - ldc.r8 float64(0x7FEFFFFFFFFFFFFF) + ldc.r8 MAX stsfld float64 bne_un::max - ldc.r8 float64(0x7FF0000000000000) - stsfld float64 bne_un::inf - ldc.r8 float64(0x7FF8000000000000) + ldc.r8 POS_INF + stsfld float64 bne_un::pos_inf + ldc.r8 NAN stsfld float64 bne_un::NaN ret } @@ -41,230 +51,230 @@ .entrypoint .maxstack 10 call void bne_un::initialize() - ldsfld float64 bne_un::_inf - ldsfld float64 bne_un::_inf + ldsfld float64 bne_un::neg_inf + ldsfld float64 bne_un::neg_inf bne.un FAIL - ldsfld float64 bne_un::_inf - ldsfld float64 bne_un::_min + ldsfld float64 bne_un::neg_inf + ldsfld float64 bne_un::min bne.un A br FAIL A: - ldsfld float64 bne_un::_inf - ldsfld float64 bne_un::_one + ldsfld float64 bne_un::neg_inf + ldsfld float64 bne_un::minus_one bne.un B br FAIL B: - ldsfld float64 bne_un::_inf - ldsfld float64 bne_un::_zero + ldsfld float64 bne_un::neg_inf + ldsfld float64 bne_un::minus_zero bne.un C br FAIL C: - ldsfld float64 bne_un::_inf + ldsfld float64 bne_un::neg_inf ldsfld float64 bne_un::zero bne.un D br FAIL D: - ldsfld float64 bne_un::_inf + ldsfld float64 bne_un::neg_inf ldsfld float64 bne_un::one bne.un E br FAIL E: - ldsfld float64 bne_un::_inf + ldsfld float64 bne_un::neg_inf ldsfld float64 bne_un::max bne.un F br FAIL F: - ldsfld float64 bne_un::_inf - ldsfld float64 bne_un::inf + ldsfld float64 bne_un::neg_inf + ldsfld float64 bne_un::pos_inf bne.un G br FAIL G: - ldsfld float64 bne_un::_inf + ldsfld float64 bne_un::neg_inf ldsfld float64 bne_un::NaN bne.un H br FAIL H: - ldsfld float64 bne_un::_min - ldsfld float64 bne_un::_inf + ldsfld float64 bne_un::min + ldsfld float64 bne_un::neg_inf bne.un I br FAIL I: - ldsfld float64 bne_un::_min - ldsfld float64 bne_un::_min + ldsfld float64 bne_un::min + ldsfld float64 bne_un::min bne.un FAIL - ldsfld float64 bne_un::_min - ldsfld float64 bne_un::_one + ldsfld float64 bne_un::min + ldsfld float64 bne_un::minus_one bne.un J br FAIL J: - ldsfld float64 bne_un::_min - ldsfld float64 bne_un::_zero + ldsfld float64 bne_un::min + ldsfld float64 bne_un::minus_zero bne.un K br FAIL K: - ldsfld float64 bne_un::_min + ldsfld float64 bne_un::min ldsfld float64 bne_un::zero bne.un L br FAIL L: - ldsfld float64 bne_un::_min + ldsfld float64 bne_un::min ldsfld float64 bne_un::one bne.un M br FAIL M: - ldsfld float64 bne_un::_min + ldsfld float64 bne_un::min ldsfld float64 bne_un::max bne.un N br FAIL N: - ldsfld float64 bne_un::_min - ldsfld float64 bne_un::inf + ldsfld float64 bne_un::min + ldsfld float64 bne_un::pos_inf bne.un O br FAIL O: - ldsfld float64 bne_un::_min + ldsfld float64 bne_un::min ldsfld float64 bne_un::NaN bne.un P br FAIL P: - ldsfld float64 bne_un::_one - ldsfld float64 bne_un::_inf + ldsfld float64 bne_un::minus_one + ldsfld float64 bne_un::neg_inf bne.un Q br FAIL Q: - ldsfld float64 bne_un::_one - ldsfld float64 bne_un::_min + ldsfld float64 bne_un::minus_one + ldsfld float64 bne_un::min bne.un R br FAIL R: - ldsfld float64 bne_un::_one - ldsfld float64 bne_un::_one + ldsfld float64 bne_un::minus_one + ldsfld float64 bne_un::minus_one bne.un FAIL S: - ldsfld float64 bne_un::_one - ldsfld float64 bne_un::_zero + ldsfld float64 bne_un::minus_one + ldsfld float64 bne_un::minus_zero bne.un T br FAIL T: - ldsfld float64 bne_un::_one + ldsfld float64 bne_un::minus_one ldsfld float64 bne_un::zero bne.un U br FAIL U: - ldsfld float64 bne_un::_one + ldsfld float64 bne_un::minus_one ldsfld float64 bne_un::one bne.un V br FAIL V: - ldsfld float64 bne_un::_one + ldsfld float64 bne_un::minus_one ldsfld float64 bne_un::max bne.un W br FAIL W: - ldsfld float64 bne_un::_one - ldsfld float64 bne_un::inf + ldsfld float64 bne_un::minus_one + ldsfld float64 bne_un::pos_inf bne.un X br FAIL X: - ldsfld float64 bne_un::_one + ldsfld float64 bne_un::minus_one ldsfld float64 bne_un::NaN bne.un Y br FAIL Y: - ldsfld float64 bne_un::_zero - ldsfld float64 bne_un::_inf + ldsfld float64 bne_un::minus_zero + ldsfld float64 bne_un::neg_inf bne.un Z br FAIL Z: - ldsfld float64 bne_un::_zero - ldsfld float64 bne_un::_min + ldsfld float64 bne_un::minus_zero + ldsfld float64 bne_un::min bne.un AA br FAIL AA: - ldsfld float64 bne_un::_zero - ldsfld float64 bne_un::_one + ldsfld float64 bne_un::minus_zero + ldsfld float64 bne_un::minus_one bne.un BB br FAIL BB: - ldsfld float64 bne_un::_zero - ldsfld float64 bne_un::_zero + ldsfld float64 bne_un::minus_zero + ldsfld float64 bne_un::minus_zero bne.un FAIL - ldsfld float64 bne_un::_zero + ldsfld float64 bne_un::minus_zero ldsfld float64 bne_un::zero bne.un FAIL - ldsfld float64 bne_un::_zero + ldsfld float64 bne_un::minus_zero ldsfld float64 bne_un::one bne.un CC br FAIL CC: - ldsfld float64 bne_un::_zero + ldsfld float64 bne_un::minus_zero ldsfld float64 bne_un::max bne.un DD br FAIL DD: - ldsfld float64 bne_un::_zero - ldsfld float64 bne_un::inf + ldsfld float64 bne_un::minus_zero + ldsfld float64 bne_un::pos_inf bne.un EE br FAIL EE: - ldsfld float64 bne_un::_zero + ldsfld float64 bne_un::minus_zero ldsfld float64 bne_un::NaN bne.un FF br FAIL FF: ldsfld float64 bne_un::zero - ldsfld float64 bne_un::_inf + ldsfld float64 bne_un::neg_inf bne.un GG br FAIL GG: ldsfld float64 bne_un::zero - ldsfld float64 bne_un::_min + ldsfld float64 bne_un::min bne.un HH br FAIL HH: ldsfld float64 bne_un::zero - ldsfld float64 bne_un::_one + ldsfld float64 bne_un::minus_one bne.un II br FAIL II: ldsfld float64 bne_un::zero - ldsfld float64 bne_un::_zero + ldsfld float64 bne_un::minus_zero bne.un FAIL ldsfld float64 bne_un::zero @@ -284,7 +294,7 @@ JJ: KK: ldsfld float64 bne_un::zero - ldsfld float64 bne_un::inf + ldsfld float64 bne_un::pos_inf bne.un LL br FAIL @@ -296,25 +306,25 @@ LL: MM: ldsfld float64 bne_un::one - ldsfld float64 bne_un::_inf + ldsfld float64 bne_un::neg_inf bne.un NN br FAIL NN: ldsfld float64 bne_un::one - ldsfld float64 bne_un::_min + ldsfld float64 bne_un::min bne.un OO br FAIL OO: ldsfld float64 bne_un::one - ldsfld float64 bne_un::_one + ldsfld float64 bne_un::minus_one bne.un PP br FAIL PP: ldsfld float64 bne_un::one - ldsfld float64 bne_un::_zero + ldsfld float64 bne_un::minus_zero bne.un QQ br FAIL @@ -337,7 +347,7 @@ SS: TT: ldsfld float64 bne_un::one - ldsfld float64 bne_un::inf + ldsfld float64 bne_un::pos_inf bne.un UU br FAIL @@ -349,25 +359,25 @@ UU: VV: ldsfld float64 bne_un::max - ldsfld float64 bne_un::_inf + ldsfld float64 bne_un::neg_inf bne.un WW br FAIL WW: ldsfld float64 bne_un::max - ldsfld float64 bne_un::_min + ldsfld float64 bne_un::min bne.un XX br FAIL XX: ldsfld float64 bne_un::max - ldsfld float64 bne_un::_one + ldsfld float64 bne_un::minus_one bne.un YY br FAIL YY: ldsfld float64 bne_un::max - ldsfld float64 bne_un::_zero + ldsfld float64 bne_un::minus_zero bne.un ZZ br FAIL @@ -389,7 +399,7 @@ BBB: bne.un FAIL ldsfld float64 bne_un::max - ldsfld float64 bne_un::inf + ldsfld float64 bne_un::pos_inf bne.un CCC br FAIL @@ -400,78 +410,78 @@ CCC: br FAIL DDD: - ldsfld float64 bne_un::inf - ldsfld float64 bne_un::_inf + ldsfld float64 bne_un::pos_inf + ldsfld float64 bne_un::neg_inf bne.un EEE br FAIL EEE: - ldsfld float64 bne_un::inf - ldsfld float64 bne_un::_min + ldsfld float64 bne_un::pos_inf + ldsfld float64 bne_un::min bne.un FFF br FAIL FFF: - ldsfld float64 bne_un::inf - ldsfld float64 bne_un::_one + ldsfld float64 bne_un::pos_inf + ldsfld float64 bne_un::minus_one bne.un GGG br FAIL GGG: - ldsfld float64 bne_un::inf - ldsfld float64 bne_un::_zero + ldsfld float64 bne_un::pos_inf + ldsfld float64 bne_un::minus_zero bne.un HHH br FAIL HHH: - ldsfld float64 bne_un::inf + ldsfld float64 bne_un::pos_inf ldsfld float64 bne_un::zero bne.un III br FAIL III: - ldsfld float64 bne_un::inf + ldsfld float64 bne_un::pos_inf ldsfld float64 bne_un::one bne.un JJJ br FAIL JJJ: - ldsfld float64 bne_un::inf + ldsfld float64 bne_un::pos_inf ldsfld float64 bne_un::max bne.un KK_ br FAIL KK_: - ldsfld float64 bne_un::inf - ldsfld float64 bne_un::inf + ldsfld float64 bne_un::pos_inf + ldsfld float64 bne_un::pos_inf bne.un FAIL - ldsfld float64 bne_un::inf + ldsfld float64 bne_un::pos_inf ldsfld float64 bne_un::NaN bne.un LLL br FAIL LLL: ldsfld float64 bne_un::NaN - ldsfld float64 bne_un::_inf + ldsfld float64 bne_un::neg_inf bne.un MMM br FAIL MMM: ldsfld float64 bne_un::NaN - ldsfld float64 bne_un::_min + ldsfld float64 bne_un::min bne.un NNN br FAIL NNN: ldsfld float64 bne_un::NaN - ldsfld float64 bne_un::_one + ldsfld float64 bne_un::minus_one bne.un OOO br FAIL OOO: ldsfld float64 bne_un::NaN - ldsfld float64 bne_un::_zero + ldsfld float64 bne_un::minus_zero bne.un PPP br FAIL @@ -495,13 +505,481 @@ RRR: SSS: ldsfld float64 bne_un::NaN - ldsfld float64 bne_un::inf + ldsfld float64 bne_un::pos_inf bne.un TTT br FAIL TTT: ldsfld float64 bne_un::NaN ldsfld float64 bne_un::NaN + bne.un L0 + br FAIL + + // Testing early folding logic + +L0: + ldc.r8 NEG_INF + ldc.r8 NEG_INF + bne.un FAIL + + ldc.r8 NEG_INF + ldc.r8 MIN + bne.un L1 + br FAIL + +L1: + ldc.r8 NEG_INF + ldc.r8 MINUS_ONE + bne.un L2 + br FAIL + +L2: + ldc.r8 NEG_INF + ldc.r8 MINUS_ZERO + bne.un L3 + br FAIL + +L3: + ldc.r8 NEG_INF + ldc.r8 ZERO + bne.un L4 + br FAIL + +L4: + ldc.r8 NEG_INF + ldc.r8 ONE + bne.un L5 + br FAIL + +L5: + ldc.r8 NEG_INF + ldc.r8 MAX + bne.un L6 + br FAIL + +L6: + ldc.r8 NEG_INF + ldc.r8 POS_INF + bne.un L7 + br FAIL + +L7: + ldc.r8 NEG_INF + ldc.r8 NAN + bne.un L8 + br FAIL + +L8: + ldc.r8 MIN + ldc.r8 NEG_INF + bne.un L9 + br FAIL + +L9: + ldc.r8 MIN + ldc.r8 MIN + bne.un FAIL + + ldc.r8 MIN + ldc.r8 MINUS_ONE + bne.un L10 + br FAIL + +L10: + ldc.r8 MIN + ldc.r8 MINUS_ZERO + bne.un L11 + br FAIL + +L11: + ldc.r8 MIN + ldc.r8 ZERO + bne.un L12 + br FAIL + +L12: + ldc.r8 MIN + ldc.r8 ONE + bne.un L13 + br FAIL + +L13: + ldc.r8 MIN + ldc.r8 MAX + bne.un L14 + br FAIL + +L14: + ldc.r8 MIN + ldc.r8 POS_INF + bne.un L15 + br FAIL + +L15: + ldc.r8 MIN + ldc.r8 NAN + bne.un L16 + br FAIL + +L16: + ldc.r8 MINUS_ONE + ldc.r8 NEG_INF + bne.un L17 + br FAIL + +L17: + ldc.r8 MINUS_ONE + ldc.r8 MIN + bne.un L18 + br FAIL + +L18: + ldc.r8 MINUS_ONE + ldc.r8 MINUS_ONE + bne.un FAIL + + ldc.r8 MINUS_ONE + ldc.r8 MINUS_ZERO + bne.un L19 + br FAIL + +L19: + ldc.r8 MINUS_ONE + ldc.r8 ZERO + bne.un L20 + br FAIL + +L20: + ldc.r8 MINUS_ONE + ldc.r8 ONE + bne.un L21 + br FAIL + +L21: + ldc.r8 MINUS_ONE + ldc.r8 MAX + bne.un L22 + br FAIL + +L22: + ldc.r8 MINUS_ONE + ldc.r8 POS_INF + bne.un L23 + br FAIL + +L23: + ldc.r8 MINUS_ONE + ldc.r8 NAN + bne.un L24 + br FAIL + +L24: + ldc.r8 MINUS_ZERO + ldc.r8 NEG_INF + bne.un L25 + br FAIL + +L25: + ldc.r8 MINUS_ZERO + ldc.r8 MIN + bne.un L26 + br FAIL + +L26: + ldc.r8 MINUS_ZERO + ldc.r8 MINUS_ONE + bne.un L27 + br FAIL + +L27: + ldc.r8 MINUS_ZERO + ldc.r8 MINUS_ZERO + bne.un FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 ZERO + bne.un FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 ONE + bne.un L28 + br FAIL + +L28: + ldc.r8 MINUS_ZERO + ldc.r8 MAX + bne.un L29 + br FAIL + +L29: + ldc.r8 MINUS_ZERO + ldc.r8 POS_INF + bne.un L30 + br FAIL + +L30: + ldc.r8 MINUS_ZERO + ldc.r8 NAN + bne.un L31 + br FAIL + +L31: + ldc.r8 ZERO + ldc.r8 NEG_INF + bne.un L32 + br FAIL + +L32: + ldc.r8 ZERO + ldc.r8 MIN + bne.un L33 + br FAIL + +L33: + ldc.r8 ZERO + ldc.r8 MINUS_ONE + bne.un L34 + br FAIL + +L34: + ldc.r8 ZERO + ldc.r8 MINUS_ZERO + bne.un FAIL + + ldc.r8 ZERO + ldc.r8 ZERO + bne.un FAIL + + ldc.r8 ZERO + ldc.r8 ONE + bne.un L35 + br FAIL + +L35: + ldc.r8 ZERO + ldc.r8 MAX + bne.un L36 + br FAIL + +L36: + ldc.r8 ZERO + ldc.r8 POS_INF + bne.un L37 + br FAIL + +L37: + ldc.r8 ZERO + ldc.r8 NAN + bne.un L38 + br FAIL + +L38: + ldc.r8 ONE + ldc.r8 NEG_INF + bne.un L39 + br FAIL + +L39: + ldc.r8 ONE + ldc.r8 MIN + bne.un L40 + br FAIL + +L40: + ldc.r8 ONE + ldc.r8 MINUS_ONE + bne.un L41 + br FAIL + +L41: + ldc.r8 ONE + ldc.r8 MINUS_ZERO + bne.un L42 + br FAIL + +L42: + ldc.r8 ONE + ldc.r8 ZERO + bne.un L43 + br FAIL + +L43: + ldc.r8 ONE + ldc.r8 ONE + bne.un FAIL + + ldc.r8 ONE + ldc.r8 MAX + bne.un L44 + br FAIL + +L44: + ldc.r8 ONE + ldc.r8 POS_INF + bne.un L45 + br FAIL + +L45: + ldc.r8 ONE + ldc.r8 NAN + bne.un L46 + br FAIL + +L46: + ldc.r8 MAX + ldc.r8 NEG_INF + bne.un L47 + br FAIL + +L47: + ldc.r8 MAX + ldc.r8 MIN + bne.un L48 + br FAIL + +L48: + ldc.r8 MAX + ldc.r8 MINUS_ONE + bne.un L49 + br FAIL + +L49: + ldc.r8 MAX + ldc.r8 MINUS_ZERO + bne.un L50 + br FAIL + +L50: + ldc.r8 MAX + ldc.r8 ZERO + bne.un L51 + br FAIL + +L51: + ldc.r8 MAX + ldc.r8 ONE + bne.un L52 + br FAIL + +L52: + ldc.r8 MAX + ldc.r8 MAX + bne.un FAIL + + ldc.r8 MAX + ldc.r8 POS_INF + bne.un L53 + br FAIL + +L53: + ldc.r8 MAX + ldc.r8 NAN + bne.un L54 + br FAIL + +L54: + ldc.r8 POS_INF + ldc.r8 NEG_INF + bne.un L55 + br FAIL + +L55: + ldc.r8 POS_INF + ldc.r8 MIN + bne.un L56 + br FAIL + +L56: + ldc.r8 POS_INF + ldc.r8 MINUS_ONE + bne.un L57 + br FAIL + +L57: + ldc.r8 POS_INF + ldc.r8 MINUS_ZERO + bne.un L58 + br FAIL + +L58: + ldc.r8 POS_INF + ldc.r8 ZERO + bne.un L59 + br FAIL + +L59: + ldc.r8 POS_INF + ldc.r8 ONE + bne.un L60 + br FAIL + +L60: + ldc.r8 POS_INF + ldc.r8 MAX + bne.un L61 + br FAIL + +L61: + ldc.r8 POS_INF + ldc.r8 POS_INF + bne.un FAIL + + ldc.r8 POS_INF + ldc.r8 NAN + bne.un L62 + br FAIL + +L62: + ldc.r8 NAN + ldc.r8 NEG_INF + bne.un L63 + br FAIL + +L63: + ldc.r8 NAN + ldc.r8 MIN + bne.un L64 + br FAIL + +L64: + ldc.r8 NAN + ldc.r8 MINUS_ONE + bne.un L65 + br FAIL + +L65: + ldc.r8 NAN + ldc.r8 MINUS_ZERO + bne.un L66 + br FAIL + +L66: + ldc.r8 NAN + ldc.r8 ZERO + bne.un L67 + br FAIL + +L67: + ldc.r8 NAN + ldc.r8 ONE + bne.un L68 + br FAIL + +L68: + ldc.r8 NAN + ldc.r8 MAX + bne.un L69 + br FAIL + +L69: + ldc.r8 NAN + ldc.r8 POS_INF + bne.un L70 + br FAIL + +L70: + ldc.r8 NAN + ldc.r8 NAN bne.un BACKCHECK br FAIL diff --git a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/cgt_un_r4.il b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/cgt_un_r4.il index bb8f47dab8a..1551d49e117 100644 --- a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/cgt_un_r4.il +++ b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/cgt_un_r4.il @@ -3,37 +3,47 @@ .assembly extern legacy library mscorlib {} +#define NEG_INF "float32(0xFF800000)" +#define MIN "float32(0xFF7FFFFF)" +#define MINUS_ONE "float32(0xBF800000)" +#define MINUS_ZERO "float32(0x80000000)" +#define ZERO "float32(0x00000000)" +#define ONE "float32(0x3F800000)" +#define MAX "float32(0x7F7FFFFF)" +#define POS_INF "float32(0x7F800000)" +#define NAN "float32(0x7FC00000)" + .class public cgt_un { -.field public static float32 _inf -.field public static float32 _min -.field public static float32 _one -.field public static float32 _zero +.field public static float32 neg_inf +.field public static float32 min +.field public static float32 minus_one +.field public static float32 minus_zero .field public static float32 zero .field public static float32 one .field public static float32 max -.field public static float32 inf +.field public static float32 pos_inf .field public static float32 NaN .method public static void initialize() { .maxstack 10 - ldc.r4 float32(0xFF800000) - stsfld float32 cgt_un::_inf - ldc.r4 float32(0xFF7FFFFF) - stsfld float32 cgt_un::_min - ldc.r4 float32(0xBF800000) - stsfld float32 cgt_un::_one - ldc.r4 float32(0x80000000) - stsfld float32 cgt_un::_zero - ldc.r4 float32(0x00000000) + ldc.r4 NEG_INF + stsfld float32 cgt_un::neg_inf + ldc.r4 MIN + stsfld float32 cgt_un::min + ldc.r4 MINUS_ONE + stsfld float32 cgt_un::minus_one + ldc.r4 MINUS_ZERO + stsfld float32 cgt_un::minus_zero + ldc.r4 ZERO stsfld float32 cgt_un::zero - ldc.r4 float32(0x3F800000) + ldc.r4 ONE stsfld float32 cgt_un::one - ldc.r4 float32(0x7F7FFFFF) + ldc.r4 MAX stsfld float32 cgt_un::max - ldc.r4 float32(0x7F800000) - stsfld float32 cgt_un::inf - ldc.r4 float32(0x7FC00000) + ldc.r4 POS_INF + stsfld float32 cgt_un::pos_inf + ldc.r4 NAN stsfld float32 cgt_un::NaN ret } @@ -42,202 +52,202 @@ .entrypoint .maxstack 10 call void cgt_un::initialize() - ldsfld float32 cgt_un::_inf - ldsfld float32 cgt_un::_inf + ldsfld float32 cgt_un::neg_inf + ldsfld float32 cgt_un::neg_inf cgt.un brtrue FAIL - ldsfld float32 cgt_un::_inf - ldsfld float32 cgt_un::_min + ldsfld float32 cgt_un::neg_inf + ldsfld float32 cgt_un::min cgt.un brtrue FAIL - ldsfld float32 cgt_un::_inf - ldsfld float32 cgt_un::_one + ldsfld float32 cgt_un::neg_inf + ldsfld float32 cgt_un::minus_one cgt.un brtrue FAIL - ldsfld float32 cgt_un::_inf - ldsfld float32 cgt_un::_zero + ldsfld float32 cgt_un::neg_inf + ldsfld float32 cgt_un::minus_zero cgt.un brtrue FAIL - ldsfld float32 cgt_un::_inf + ldsfld float32 cgt_un::neg_inf ldsfld float32 cgt_un::zero cgt.un brtrue FAIL - ldsfld float32 cgt_un::_inf + ldsfld float32 cgt_un::neg_inf ldsfld float32 cgt_un::one cgt.un brtrue FAIL - ldsfld float32 cgt_un::_inf + ldsfld float32 cgt_un::neg_inf ldsfld float32 cgt_un::max cgt.un brtrue FAIL - ldsfld float32 cgt_un::_inf - ldsfld float32 cgt_un::inf + ldsfld float32 cgt_un::neg_inf + ldsfld float32 cgt_un::pos_inf cgt.un brtrue FAIL - ldsfld float32 cgt_un::_inf + ldsfld float32 cgt_un::neg_inf ldsfld float32 cgt_un::NaN cgt.un brfalse FAIL - ldsfld float32 cgt_un::_min - ldsfld float32 cgt_un::_inf + ldsfld float32 cgt_un::min + ldsfld float32 cgt_un::neg_inf cgt.un brfalse FAIL - ldsfld float32 cgt_un::_min - ldsfld float32 cgt_un::_min + ldsfld float32 cgt_un::min + ldsfld float32 cgt_un::min cgt.un brtrue FAIL - ldsfld float32 cgt_un::_min - ldsfld float32 cgt_un::_one + ldsfld float32 cgt_un::min + ldsfld float32 cgt_un::minus_one cgt.un brtrue FAIL - ldsfld float32 cgt_un::_min - ldsfld float32 cgt_un::_zero + ldsfld float32 cgt_un::min + ldsfld float32 cgt_un::minus_zero cgt.un brtrue FAIL - ldsfld float32 cgt_un::_min + ldsfld float32 cgt_un::min ldsfld float32 cgt_un::zero cgt.un brtrue FAIL - ldsfld float32 cgt_un::_min + ldsfld float32 cgt_un::min ldsfld float32 cgt_un::one cgt.un brtrue FAIL - ldsfld float32 cgt_un::_min + ldsfld float32 cgt_un::min ldsfld float32 cgt_un::max cgt.un brtrue FAIL - ldsfld float32 cgt_un::_min - ldsfld float32 cgt_un::inf + ldsfld float32 cgt_un::min + ldsfld float32 cgt_un::pos_inf cgt.un brtrue FAIL - ldsfld float32 cgt_un::_min + ldsfld float32 cgt_un::min ldsfld float32 cgt_un::NaN cgt.un brfalse FAIL - ldsfld float32 cgt_un::_one - ldsfld float32 cgt_un::_inf + ldsfld float32 cgt_un::minus_one + ldsfld float32 cgt_un::neg_inf cgt.un brfalse FAIL - ldsfld float32 cgt_un::_one - ldsfld float32 cgt_un::_min + ldsfld float32 cgt_un::minus_one + ldsfld float32 cgt_un::min cgt.un brfalse FAIL - ldsfld float32 cgt_un::_one - ldsfld float32 cgt_un::_one + ldsfld float32 cgt_un::minus_one + ldsfld float32 cgt_un::minus_one cgt.un brtrue FAIL - ldsfld float32 cgt_un::_one - ldsfld float32 cgt_un::_zero + ldsfld float32 cgt_un::minus_one + ldsfld float32 cgt_un::minus_zero cgt.un brtrue FAIL - ldsfld float32 cgt_un::_one + ldsfld float32 cgt_un::minus_one ldsfld float32 cgt_un::zero cgt.un brtrue FAIL - ldsfld float32 cgt_un::_one + ldsfld float32 cgt_un::minus_one ldsfld float32 cgt_un::one cgt.un brtrue FAIL - ldsfld float32 cgt_un::_one + ldsfld float32 cgt_un::minus_one ldsfld float32 cgt_un::max cgt.un brtrue FAIL - ldsfld float32 cgt_un::_one - ldsfld float32 cgt_un::inf + ldsfld float32 cgt_un::minus_one + ldsfld float32 cgt_un::pos_inf cgt.un brtrue FAIL - ldsfld float32 cgt_un::_one + ldsfld float32 cgt_un::minus_one ldsfld float32 cgt_un::NaN cgt.un brfalse FAIL - ldsfld float32 cgt_un::_zero - ldsfld float32 cgt_un::_inf + ldsfld float32 cgt_un::minus_zero + ldsfld float32 cgt_un::neg_inf cgt.un brfalse FAIL - ldsfld float32 cgt_un::_zero - ldsfld float32 cgt_un::_min + ldsfld float32 cgt_un::minus_zero + ldsfld float32 cgt_un::min cgt.un brfalse FAIL - ldsfld float32 cgt_un::_zero - ldsfld float32 cgt_un::_one + ldsfld float32 cgt_un::minus_zero + ldsfld float32 cgt_un::minus_one cgt.un brfalse FAIL - ldsfld float32 cgt_un::_zero - ldsfld float32 cgt_un::_zero + ldsfld float32 cgt_un::minus_zero + ldsfld float32 cgt_un::minus_zero cgt.un brtrue FAIL - ldsfld float32 cgt_un::_zero + ldsfld float32 cgt_un::minus_zero ldsfld float32 cgt_un::zero cgt.un brtrue FAIL - ldsfld float32 cgt_un::_zero + ldsfld float32 cgt_un::minus_zero ldsfld float32 cgt_un::one cgt.un brtrue FAIL - ldsfld float32 cgt_un::_zero + ldsfld float32 cgt_un::minus_zero ldsfld float32 cgt_un::max cgt.un brtrue FAIL - ldsfld float32 cgt_un::_zero - ldsfld float32 cgt_un::inf + ldsfld float32 cgt_un::minus_zero + ldsfld float32 cgt_un::pos_inf cgt.un brtrue FAIL - ldsfld float32 cgt_un::_zero + ldsfld float32 cgt_un::minus_zero ldsfld float32 cgt_un::NaN cgt.un brfalse FAIL ldsfld float32 cgt_un::zero - ldsfld float32 cgt_un::_inf + ldsfld float32 cgt_un::neg_inf cgt.un brfalse FAIL ldsfld float32 cgt_un::zero - ldsfld float32 cgt_un::_min + ldsfld float32 cgt_un::min cgt.un brfalse FAIL ldsfld float32 cgt_un::zero - ldsfld float32 cgt_un::_one + ldsfld float32 cgt_un::minus_one cgt.un brfalse FAIL ldsfld float32 cgt_un::zero - ldsfld float32 cgt_un::_zero + ldsfld float32 cgt_un::minus_zero cgt.un brtrue FAIL @@ -257,7 +267,7 @@ brtrue FAIL ldsfld float32 cgt_un::zero - ldsfld float32 cgt_un::inf + ldsfld float32 cgt_un::pos_inf cgt.un brtrue FAIL @@ -267,22 +277,22 @@ brfalse FAIL ldsfld float32 cgt_un::one - ldsfld float32 cgt_un::_inf + ldsfld float32 cgt_un::neg_inf cgt.un brfalse FAIL ldsfld float32 cgt_un::one - ldsfld float32 cgt_un::_min + ldsfld float32 cgt_un::min cgt.un brfalse FAIL ldsfld float32 cgt_un::one - ldsfld float32 cgt_un::_one + ldsfld float32 cgt_un::minus_one cgt.un brfalse FAIL ldsfld float32 cgt_un::one - ldsfld float32 cgt_un::_zero + ldsfld float32 cgt_un::minus_zero cgt.un brfalse FAIL @@ -302,7 +312,7 @@ brtrue FAIL ldsfld float32 cgt_un::one - ldsfld float32 cgt_un::inf + ldsfld float32 cgt_un::pos_inf cgt.un brtrue FAIL @@ -312,22 +322,22 @@ brfalse FAIL ldsfld float32 cgt_un::max - ldsfld float32 cgt_un::_inf + ldsfld float32 cgt_un::neg_inf cgt.un brfalse FAIL ldsfld float32 cgt_un::max - ldsfld float32 cgt_un::_min + ldsfld float32 cgt_un::min cgt.un brfalse FAIL ldsfld float32 cgt_un::max - ldsfld float32 cgt_un::_one + ldsfld float32 cgt_un::minus_one cgt.un brfalse FAIL ldsfld float32 cgt_un::max - ldsfld float32 cgt_un::_zero + ldsfld float32 cgt_un::minus_zero cgt.un brfalse FAIL @@ -347,7 +357,7 @@ brtrue FAIL ldsfld float32 cgt_un::max - ldsfld float32 cgt_un::inf + ldsfld float32 cgt_un::pos_inf cgt.un brtrue FAIL @@ -356,68 +366,68 @@ cgt.un brfalse FAIL - ldsfld float32 cgt_un::inf - ldsfld float32 cgt_un::_inf + ldsfld float32 cgt_un::pos_inf + ldsfld float32 cgt_un::neg_inf cgt.un brfalse FAIL - ldsfld float32 cgt_un::inf - ldsfld float32 cgt_un::_min + ldsfld float32 cgt_un::pos_inf + ldsfld float32 cgt_un::min cgt.un brfalse FAIL - ldsfld float32 cgt_un::inf - ldsfld float32 cgt_un::_one + ldsfld float32 cgt_un::pos_inf + ldsfld float32 cgt_un::minus_one cgt.un brfalse FAIL - ldsfld float32 cgt_un::inf - ldsfld float32 cgt_un::_zero + ldsfld float32 cgt_un::pos_inf + ldsfld float32 cgt_un::minus_zero cgt.un brfalse FAIL - ldsfld float32 cgt_un::inf + ldsfld float32 cgt_un::pos_inf ldsfld float32 cgt_un::zero cgt.un brfalse FAIL - ldsfld float32 cgt_un::inf + ldsfld float32 cgt_un::pos_inf ldsfld float32 cgt_un::one cgt.un brfalse FAIL - ldsfld float32 cgt_un::inf + ldsfld float32 cgt_un::pos_inf ldsfld float32 cgt_un::max cgt.un brfalse FAIL - ldsfld float32 cgt_un::inf - ldsfld float32 cgt_un::inf + ldsfld float32 cgt_un::pos_inf + ldsfld float32 cgt_un::pos_inf cgt.un brtrue FAIL - ldsfld float32 cgt_un::inf + ldsfld float32 cgt_un::pos_inf ldsfld float32 cgt_un::NaN cgt.un brfalse FAIL ldsfld float32 cgt_un::NaN - ldsfld float32 cgt_un::_inf + ldsfld float32 cgt_un::neg_inf cgt.un brfalse FAIL ldsfld float32 cgt_un::NaN - ldsfld float32 cgt_un::_min + ldsfld float32 cgt_un::min cgt.un brfalse FAIL ldsfld float32 cgt_un::NaN - ldsfld float32 cgt_un::_one + ldsfld float32 cgt_un::minus_one cgt.un brfalse FAIL ldsfld float32 cgt_un::NaN - ldsfld float32 cgt_un::_zero + ldsfld float32 cgt_un::minus_zero cgt.un brfalse FAIL @@ -437,7 +447,7 @@ brfalse FAIL ldsfld float32 cgt_un::NaN - ldsfld float32 cgt_un::inf + ldsfld float32 cgt_un::pos_inf cgt.un brfalse FAIL @@ -446,6 +456,412 @@ cgt.un brfalse FAIL + // Testing early folding logic + + ldc.r4 NEG_INF + ldc.r4 NEG_INF + cgt.un + brtrue FAIL + + ldc.r4 NEG_INF + ldc.r4 MIN + cgt.un + brtrue FAIL + + ldc.r4 NEG_INF + ldc.r4 MINUS_ONE + cgt.un + brtrue FAIL + + ldc.r4 NEG_INF + ldc.r4 MINUS_ZERO + cgt.un + brtrue FAIL + + ldc.r4 NEG_INF + ldc.r4 ZERO + cgt.un + brtrue FAIL + + ldc.r4 NEG_INF + ldc.r4 ONE + cgt.un + brtrue FAIL + + ldc.r4 NEG_INF + ldc.r4 MAX + cgt.un + brtrue FAIL + + ldc.r4 NEG_INF + ldc.r4 POS_INF + cgt.un + brtrue FAIL + + ldc.r4 NEG_INF + ldc.r4 NAN + cgt.un + brfalse FAIL + ldc.r4 MIN + ldc.r4 NEG_INF + cgt.un + brfalse FAIL + + ldc.r4 MIN + ldc.r4 MIN + cgt.un + brtrue FAIL + + ldc.r4 MIN + ldc.r4 MINUS_ONE + cgt.un + brtrue FAIL + + ldc.r4 MIN + ldc.r4 MINUS_ZERO + cgt.un + brtrue FAIL + + ldc.r4 MIN + ldc.r4 ZERO + cgt.un + brtrue FAIL + + ldc.r4 MIN + ldc.r4 ONE + cgt.un + brtrue FAIL + + ldc.r4 MIN + ldc.r4 MAX + cgt.un + brtrue FAIL + + ldc.r4 MIN + ldc.r4 POS_INF + cgt.un + brtrue FAIL + + ldc.r4 MIN + ldc.r4 NAN + cgt.un + brfalse FAIL + + + ldc.r4 MINUS_ONE + ldc.r4 NEG_INF + cgt.un + brfalse FAIL + + ldc.r4 MINUS_ONE + ldc.r4 MIN + cgt.un + brfalse FAIL + + ldc.r4 MINUS_ONE + ldc.r4 MINUS_ONE + cgt.un + brtrue FAIL + + ldc.r4 MINUS_ONE + ldc.r4 MINUS_ZERO + cgt.un + brtrue FAIL + + ldc.r4 MINUS_ONE + ldc.r4 ZERO + cgt.un + brtrue FAIL + + ldc.r4 MINUS_ONE + ldc.r4 ONE + cgt.un + brtrue FAIL + + ldc.r4 MINUS_ONE + ldc.r4 MAX + cgt.un + brtrue FAIL + + ldc.r4 MINUS_ONE + ldc.r4 POS_INF + cgt.un + brtrue FAIL + + ldc.r4 MINUS_ONE + ldc.r4 NAN + cgt.un + brfalse FAIL + ldc.r4 MINUS_ZERO + ldc.r4 NEG_INF + cgt.un + brfalse FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 MIN + cgt.un + brfalse FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 MINUS_ONE + cgt.un + brfalse FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 MINUS_ZERO + cgt.un + brtrue FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 ZERO + cgt.un + brtrue FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 ONE + cgt.un + brtrue FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 MAX + cgt.un + brtrue FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 POS_INF + cgt.un + brtrue FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 NAN + cgt.un + brfalse FAIL + + ldc.r4 ZERO + ldc.r4 NEG_INF + cgt.un + brfalse FAIL + + ldc.r4 ZERO + ldc.r4 MIN + cgt.un + brfalse FAIL + + ldc.r4 ZERO + ldc.r4 MINUS_ONE + cgt.un + brfalse FAIL + + ldc.r4 ZERO + ldc.r4 MINUS_ZERO + cgt.un + brtrue FAIL + + ldc.r4 ZERO + ldc.r4 ZERO + cgt.un + brtrue FAIL + + ldc.r4 ZERO + ldc.r4 ONE + cgt.un + brtrue FAIL + + ldc.r4 ZERO + ldc.r4 MAX + cgt.un + brtrue FAIL + + ldc.r4 ZERO + ldc.r4 POS_INF + cgt.un + brtrue FAIL + + ldc.r4 ZERO + ldc.r4 NAN + cgt.un + brfalse FAIL + + ldc.r4 ONE + ldc.r4 NEG_INF + cgt.un + brfalse FAIL + + ldc.r4 ONE + ldc.r4 MIN + cgt.un + brfalse FAIL + + ldc.r4 ONE + ldc.r4 MINUS_ONE + cgt.un + brfalse FAIL + + ldc.r4 ONE + ldc.r4 MINUS_ZERO + cgt.un + brfalse FAIL + + ldc.r4 ONE + ldc.r4 ZERO + cgt.un + brfalse FAIL + + ldc.r4 ONE + ldc.r4 ONE + cgt.un + brtrue FAIL + + ldc.r4 ONE + ldc.r4 MAX + cgt.un + brtrue FAIL + + ldc.r4 ONE + ldc.r4 POS_INF + cgt.un + brtrue FAIL + + ldc.r4 ONE + ldc.r4 NAN + cgt.un + brfalse FAIL + + ldc.r4 MAX + ldc.r4 NEG_INF + cgt.un + brfalse FAIL + + ldc.r4 MAX + ldc.r4 MIN + cgt.un + brfalse FAIL + + ldc.r4 MAX + ldc.r4 MINUS_ONE + cgt.un + brfalse FAIL + + ldc.r4 MAX + ldc.r4 MINUS_ZERO + cgt.un + brfalse FAIL + + ldc.r4 MAX + ldc.r4 ZERO + cgt.un + brfalse FAIL + + ldc.r4 MAX + ldc.r4 ONE + cgt.un + brfalse FAIL + + ldc.r4 MAX + ldc.r4 MAX + cgt.un + brtrue FAIL + + ldc.r4 MAX + ldc.r4 POS_INF + cgt.un + brtrue FAIL + + ldc.r4 MAX + ldc.r4 NAN + cgt.un + brfalse FAIL + + ldc.r4 POS_INF + ldc.r4 NEG_INF + cgt.un + brfalse FAIL + + ldc.r4 POS_INF + ldc.r4 MIN + cgt.un + brfalse FAIL + + ldc.r4 POS_INF + ldc.r4 MINUS_ONE + cgt.un + brfalse FAIL + + ldc.r4 POS_INF + ldc.r4 MINUS_ZERO + cgt.un + brfalse FAIL + + ldc.r4 POS_INF + ldc.r4 ZERO + cgt.un + brfalse FAIL + + ldc.r4 POS_INF + ldc.r4 ONE + cgt.un + brfalse FAIL + + ldc.r4 POS_INF + ldc.r4 MAX + cgt.un + brfalse FAIL + + ldc.r4 POS_INF + ldc.r4 POS_INF + cgt.un + brtrue FAIL + + ldc.r4 POS_INF + ldc.r4 NAN + cgt.un + brfalse FAIL + + ldc.r4 NAN + ldc.r4 NEG_INF + cgt.un + brfalse FAIL + + ldc.r4 NAN + ldc.r4 MIN + cgt.un + brfalse FAIL + + ldc.r4 NAN + ldc.r4 MINUS_ONE + cgt.un + brfalse FAIL + + ldc.r4 NAN + ldc.r4 MINUS_ZERO + cgt.un + brfalse FAIL + + ldc.r4 NAN + ldc.r4 ZERO + cgt.un + brfalse FAIL + + ldc.r4 NAN + ldc.r4 ONE + cgt.un + brfalse FAIL + + ldc.r4 NAN + ldc.r4 MAX + cgt.un + brfalse FAIL + + ldc.r4 NAN + ldc.r4 POS_INF + cgt.un + brfalse FAIL + + ldc.r4 NAN + ldc.r4 NAN + cgt.un + brfalse FAIL + ldc.i4 100 ret FAIL: diff --git a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/cgt_un_r8.il b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/cgt_un_r8.il index 95af03090f6..fa5d1b315a5 100644 --- a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/cgt_un_r8.il +++ b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/cgt_un_r8.il @@ -3,37 +3,47 @@ .assembly extern legacy library mscorlib {} +#define NEG_INF "float64(0xFFF0000000000000)" +#define MIN "float64(0xFF7FFFFFFFFFFFFF)" +#define MINUS_ONE "float64(0xBFF0000000000000)" +#define MINUS_ZERO "float64(0x8000000000000000)" +#define ZERO "float64(0x0000000000000000)" +#define ONE "float64(0x3FF0000000000000)" +#define MAX "float64(0x7FEFFFFFFFFFFFFF)" +#define POS_INF "float64(0x7FF0000000000000)" +#define NAN "float64(0x7FF8000000000000)" + .class public cgt_un { -.field public static float64 _inf -.field public static float64 _min -.field public static float64 _one -.field public static float64 _zero +.field public static float64 neg_inf +.field public static float64 min +.field public static float64 minus_one +.field public static float64 minus_zero .field public static float64 zero .field public static float64 one .field public static float64 max -.field public static float64 inf +.field public static float64 pos_inf .field public static float64 NaN .method public static void initialize() { .maxstack 10 - ldc.r8 float64(0xFFF0000000000000) - stsfld float64 cgt_un::_inf - ldc.r8 float64(0xFF7FFFFFFFFFFFFF) - stsfld float64 cgt_un::_min - ldc.r8 float64(0xBFF0000000000000) - stsfld float64 cgt_un::_one - ldc.r8 float64(0x8000000000000000) - stsfld float64 cgt_un::_zero - ldc.r8 float64(0x0000000000000000) + ldc.r8 NEG_INF + stsfld float64 cgt_un::neg_inf + ldc.r8 MIN + stsfld float64 cgt_un::min + ldc.r8 MINUS_ONE + stsfld float64 cgt_un::minus_one + ldc.r8 MINUS_ZERO + stsfld float64 cgt_un::minus_zero + ldc.r8 ZERO stsfld float64 cgt_un::zero - ldc.r8 float64(0x3FF0000000000000) + ldc.r8 ONE stsfld float64 cgt_un::one - ldc.r8 float64(0x7FEFFFFFFFFFFFFF) + ldc.r8 MAX stsfld float64 cgt_un::max - ldc.r8 float64(0x7FF0000000000000) - stsfld float64 cgt_un::inf - ldc.r8 float64(0x7FF8000000000000) + ldc.r8 POS_INF + stsfld float64 cgt_un::pos_inf + ldc.r8 NAN stsfld float64 cgt_un::NaN ret } @@ -43,202 +53,202 @@ .maxstack 10 call void cgt_un::initialize() - ldsfld float64 cgt_un::_inf - ldsfld float64 cgt_un::_inf + ldsfld float64 cgt_un::neg_inf + ldsfld float64 cgt_un::neg_inf cgt.un brtrue FAIL - ldsfld float64 cgt_un::_inf - ldsfld float64 cgt_un::_min + ldsfld float64 cgt_un::neg_inf + ldsfld float64 cgt_un::min cgt.un brtrue FAIL - ldsfld float64 cgt_un::_inf - ldsfld float64 cgt_un::_one + ldsfld float64 cgt_un::neg_inf + ldsfld float64 cgt_un::minus_one cgt.un brtrue FAIL - ldsfld float64 cgt_un::_inf - ldsfld float64 cgt_un::_zero + ldsfld float64 cgt_un::neg_inf + ldsfld float64 cgt_un::minus_zero cgt.un brtrue FAIL - ldsfld float64 cgt_un::_inf + ldsfld float64 cgt_un::neg_inf ldsfld float64 cgt_un::zero cgt.un brtrue FAIL - ldsfld float64 cgt_un::_inf + ldsfld float64 cgt_un::neg_inf ldsfld float64 cgt_un::one cgt.un brtrue FAIL - ldsfld float64 cgt_un::_inf + ldsfld float64 cgt_un::neg_inf ldsfld float64 cgt_un::max cgt.un brtrue FAIL - ldsfld float64 cgt_un::_inf - ldsfld float64 cgt_un::inf + ldsfld float64 cgt_un::neg_inf + ldsfld float64 cgt_un::pos_inf cgt.un brtrue FAIL - ldsfld float64 cgt_un::_inf + ldsfld float64 cgt_un::neg_inf ldsfld float64 cgt_un::NaN cgt.un brfalse FAIL - ldsfld float64 cgt_un::_min - ldsfld float64 cgt_un::_inf + ldsfld float64 cgt_un::min + ldsfld float64 cgt_un::neg_inf cgt.un brfalse FAIL - ldsfld float64 cgt_un::_min - ldsfld float64 cgt_un::_min + ldsfld float64 cgt_un::min + ldsfld float64 cgt_un::min cgt.un brtrue FAIL - ldsfld float64 cgt_un::_min - ldsfld float64 cgt_un::_one + ldsfld float64 cgt_un::min + ldsfld float64 cgt_un::minus_one cgt.un brtrue FAIL - ldsfld float64 cgt_un::_min - ldsfld float64 cgt_un::_zero + ldsfld float64 cgt_un::min + ldsfld float64 cgt_un::minus_zero cgt.un brtrue FAIL - ldsfld float64 cgt_un::_min + ldsfld float64 cgt_un::min ldsfld float64 cgt_un::zero cgt.un brtrue FAIL - ldsfld float64 cgt_un::_min + ldsfld float64 cgt_un::min ldsfld float64 cgt_un::one cgt.un brtrue FAIL - ldsfld float64 cgt_un::_min + ldsfld float64 cgt_un::min ldsfld float64 cgt_un::max cgt.un brtrue FAIL - ldsfld float64 cgt_un::_min - ldsfld float64 cgt_un::inf + ldsfld float64 cgt_un::min + ldsfld float64 cgt_un::pos_inf cgt.un brtrue FAIL - ldsfld float64 cgt_un::_min + ldsfld float64 cgt_un::min ldsfld float64 cgt_un::NaN cgt.un brfalse FAIL - ldsfld float64 cgt_un::_one - ldsfld float64 cgt_un::_inf + ldsfld float64 cgt_un::minus_one + ldsfld float64 cgt_un::neg_inf cgt.un brfalse FAIL - ldsfld float64 cgt_un::_one - ldsfld float64 cgt_un::_min + ldsfld float64 cgt_un::minus_one + ldsfld float64 cgt_un::min cgt.un brfalse FAIL - ldsfld float64 cgt_un::_one - ldsfld float64 cgt_un::_one + ldsfld float64 cgt_un::minus_one + ldsfld float64 cgt_un::minus_one cgt.un brtrue FAIL - ldsfld float64 cgt_un::_one - ldsfld float64 cgt_un::_zero + ldsfld float64 cgt_un::minus_one + ldsfld float64 cgt_un::minus_zero cgt.un brtrue FAIL - ldsfld float64 cgt_un::_one + ldsfld float64 cgt_un::minus_one ldsfld float64 cgt_un::zero cgt.un brtrue FAIL - ldsfld float64 cgt_un::_one + ldsfld float64 cgt_un::minus_one ldsfld float64 cgt_un::one cgt.un brtrue FAIL - ldsfld float64 cgt_un::_one + ldsfld float64 cgt_un::minus_one ldsfld float64 cgt_un::max cgt.un brtrue FAIL - ldsfld float64 cgt_un::_one - ldsfld float64 cgt_un::inf + ldsfld float64 cgt_un::minus_one + ldsfld float64 cgt_un::pos_inf cgt.un brtrue FAIL - ldsfld float64 cgt_un::_one + ldsfld float64 cgt_un::minus_one ldsfld float64 cgt_un::NaN cgt.un brfalse FAIL - ldsfld float64 cgt_un::_zero - ldsfld float64 cgt_un::_inf + ldsfld float64 cgt_un::minus_zero + ldsfld float64 cgt_un::neg_inf cgt.un brfalse FAIL - ldsfld float64 cgt_un::_zero - ldsfld float64 cgt_un::_min + ldsfld float64 cgt_un::minus_zero + ldsfld float64 cgt_un::min cgt.un brfalse FAIL - ldsfld float64 cgt_un::_zero - ldsfld float64 cgt_un::_one + ldsfld float64 cgt_un::minus_zero + ldsfld float64 cgt_un::minus_one cgt.un brfalse FAIL - ldsfld float64 cgt_un::_zero - ldsfld float64 cgt_un::_zero + ldsfld float64 cgt_un::minus_zero + ldsfld float64 cgt_un::minus_zero cgt.un brtrue FAIL - ldsfld float64 cgt_un::_zero + ldsfld float64 cgt_un::minus_zero ldsfld float64 cgt_un::zero cgt.un brtrue FAIL - ldsfld float64 cgt_un::_zero + ldsfld float64 cgt_un::minus_zero ldsfld float64 cgt_un::one cgt.un brtrue FAIL - ldsfld float64 cgt_un::_zero + ldsfld float64 cgt_un::minus_zero ldsfld float64 cgt_un::max cgt.un brtrue FAIL - ldsfld float64 cgt_un::_zero - ldsfld float64 cgt_un::inf + ldsfld float64 cgt_un::minus_zero + ldsfld float64 cgt_un::pos_inf cgt.un brtrue FAIL - ldsfld float64 cgt_un::_zero + ldsfld float64 cgt_un::minus_zero ldsfld float64 cgt_un::NaN cgt.un brfalse FAIL ldsfld float64 cgt_un::zero - ldsfld float64 cgt_un::_inf + ldsfld float64 cgt_un::neg_inf cgt.un brfalse FAIL ldsfld float64 cgt_un::zero - ldsfld float64 cgt_un::_min + ldsfld float64 cgt_un::min cgt.un brfalse FAIL ldsfld float64 cgt_un::zero - ldsfld float64 cgt_un::_one + ldsfld float64 cgt_un::minus_one cgt.un brfalse FAIL ldsfld float64 cgt_un::zero - ldsfld float64 cgt_un::_zero + ldsfld float64 cgt_un::minus_zero cgt.un brtrue FAIL @@ -258,7 +268,7 @@ brtrue FAIL ldsfld float64 cgt_un::zero - ldsfld float64 cgt_un::inf + ldsfld float64 cgt_un::pos_inf cgt.un brtrue FAIL @@ -268,22 +278,22 @@ brfalse FAIL ldsfld float64 cgt_un::one - ldsfld float64 cgt_un::_inf + ldsfld float64 cgt_un::neg_inf cgt.un brfalse FAIL ldsfld float64 cgt_un::one - ldsfld float64 cgt_un::_min + ldsfld float64 cgt_un::min cgt.un brfalse FAIL ldsfld float64 cgt_un::one - ldsfld float64 cgt_un::_one + ldsfld float64 cgt_un::minus_one cgt.un brfalse FAIL ldsfld float64 cgt_un::one - ldsfld float64 cgt_un::_zero + ldsfld float64 cgt_un::minus_zero cgt.un brfalse FAIL @@ -303,7 +313,7 @@ brtrue FAIL ldsfld float64 cgt_un::one - ldsfld float64 cgt_un::inf + ldsfld float64 cgt_un::pos_inf cgt.un brtrue FAIL @@ -313,22 +323,22 @@ brfalse FAIL ldsfld float64 cgt_un::max - ldsfld float64 cgt_un::_inf + ldsfld float64 cgt_un::neg_inf cgt.un brfalse FAIL ldsfld float64 cgt_un::max - ldsfld float64 cgt_un::_min + ldsfld float64 cgt_un::min cgt.un brfalse FAIL ldsfld float64 cgt_un::max - ldsfld float64 cgt_un::_one + ldsfld float64 cgt_un::minus_one cgt.un brfalse FAIL ldsfld float64 cgt_un::max - ldsfld float64 cgt_un::_zero + ldsfld float64 cgt_un::minus_zero cgt.un brfalse FAIL @@ -348,7 +358,7 @@ brtrue FAIL ldsfld float64 cgt_un::max - ldsfld float64 cgt_un::inf + ldsfld float64 cgt_un::pos_inf cgt.un brtrue FAIL @@ -357,68 +367,68 @@ cgt.un brfalse FAIL - ldsfld float64 cgt_un::inf - ldsfld float64 cgt_un::_inf + ldsfld float64 cgt_un::pos_inf + ldsfld float64 cgt_un::neg_inf cgt.un brfalse FAIL - ldsfld float64 cgt_un::inf - ldsfld float64 cgt_un::_min + ldsfld float64 cgt_un::pos_inf + ldsfld float64 cgt_un::min cgt.un brfalse FAIL - ldsfld float64 cgt_un::inf - ldsfld float64 cgt_un::_one + ldsfld float64 cgt_un::pos_inf + ldsfld float64 cgt_un::minus_one cgt.un brfalse FAIL - ldsfld float64 cgt_un::inf - ldsfld float64 cgt_un::_zero + ldsfld float64 cgt_un::pos_inf + ldsfld float64 cgt_un::minus_zero cgt.un brfalse FAIL - ldsfld float64 cgt_un::inf + ldsfld float64 cgt_un::pos_inf ldsfld float64 cgt_un::zero cgt.un brfalse FAIL - ldsfld float64 cgt_un::inf + ldsfld float64 cgt_un::pos_inf ldsfld float64 cgt_un::one cgt.un brfalse FAIL - ldsfld float64 cgt_un::inf + ldsfld float64 cgt_un::pos_inf ldsfld float64 cgt_un::max cgt.un brfalse FAIL - ldsfld float64 cgt_un::inf - ldsfld float64 cgt_un::inf + ldsfld float64 cgt_un::pos_inf + ldsfld float64 cgt_un::pos_inf cgt.un brtrue FAIL - ldsfld float64 cgt_un::inf + ldsfld float64 cgt_un::pos_inf ldsfld float64 cgt_un::NaN cgt.un brfalse FAIL ldsfld float64 cgt_un::NaN - ldsfld float64 cgt_un::_inf + ldsfld float64 cgt_un::neg_inf cgt.un brfalse FAIL ldsfld float64 cgt_un::NaN - ldsfld float64 cgt_un::_min + ldsfld float64 cgt_un::min cgt.un brfalse FAIL ldsfld float64 cgt_un::NaN - ldsfld float64 cgt_un::_one + ldsfld float64 cgt_un::minus_one cgt.un brfalse FAIL ldsfld float64 cgt_un::NaN - ldsfld float64 cgt_un::_zero + ldsfld float64 cgt_un::minus_zero cgt.un brfalse FAIL @@ -438,7 +448,7 @@ brfalse FAIL ldsfld float64 cgt_un::NaN - ldsfld float64 cgt_un::inf + ldsfld float64 cgt_un::pos_inf cgt.un brfalse FAIL @@ -447,6 +457,412 @@ cgt.un brfalse FAIL + // Testing early folding logic + + ldc.r8 NEG_INF + ldc.r8 NEG_INF + cgt.un + brtrue FAIL + + ldc.r8 NEG_INF + ldc.r8 MIN + cgt.un + brtrue FAIL + + ldc.r8 NEG_INF + ldc.r8 MINUS_ONE + cgt.un + brtrue FAIL + + ldc.r8 NEG_INF + ldc.r8 MINUS_ZERO + cgt.un + brtrue FAIL + + ldc.r8 NEG_INF + ldc.r8 ZERO + cgt.un + brtrue FAIL + + ldc.r8 NEG_INF + ldc.r8 ONE + cgt.un + brtrue FAIL + + ldc.r8 NEG_INF + ldc.r8 MAX + cgt.un + brtrue FAIL + + ldc.r8 NEG_INF + ldc.r8 POS_INF + cgt.un + brtrue FAIL + + ldc.r8 NEG_INF + ldc.r8 NAN + cgt.un + brfalse FAIL + ldc.r8 MIN + ldc.r8 NEG_INF + cgt.un + brfalse FAIL + + ldc.r8 MIN + ldc.r8 MIN + cgt.un + brtrue FAIL + + ldc.r8 MIN + ldc.r8 MINUS_ONE + cgt.un + brtrue FAIL + + ldc.r8 MIN + ldc.r8 MINUS_ZERO + cgt.un + brtrue FAIL + + ldc.r8 MIN + ldc.r8 ZERO + cgt.un + brtrue FAIL + + ldc.r8 MIN + ldc.r8 ONE + cgt.un + brtrue FAIL + + ldc.r8 MIN + ldc.r8 MAX + cgt.un + brtrue FAIL + + ldc.r8 MIN + ldc.r8 POS_INF + cgt.un + brtrue FAIL + + ldc.r8 MIN + ldc.r8 NAN + cgt.un + brfalse FAIL + + + ldc.r8 MINUS_ONE + ldc.r8 NEG_INF + cgt.un + brfalse FAIL + + ldc.r8 MINUS_ONE + ldc.r8 MIN + cgt.un + brfalse FAIL + + ldc.r8 MINUS_ONE + ldc.r8 MINUS_ONE + cgt.un + brtrue FAIL + + ldc.r8 MINUS_ONE + ldc.r8 MINUS_ZERO + cgt.un + brtrue FAIL + + ldc.r8 MINUS_ONE + ldc.r8 ZERO + cgt.un + brtrue FAIL + + ldc.r8 MINUS_ONE + ldc.r8 ONE + cgt.un + brtrue FAIL + + ldc.r8 MINUS_ONE + ldc.r8 MAX + cgt.un + brtrue FAIL + + ldc.r8 MINUS_ONE + ldc.r8 POS_INF + cgt.un + brtrue FAIL + + ldc.r8 MINUS_ONE + ldc.r8 NAN + cgt.un + brfalse FAIL + ldc.r8 MINUS_ZERO + ldc.r8 NEG_INF + cgt.un + brfalse FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 MIN + cgt.un + brfalse FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 MINUS_ONE + cgt.un + brfalse FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 MINUS_ZERO + cgt.un + brtrue FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 ZERO + cgt.un + brtrue FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 ONE + cgt.un + brtrue FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 MAX + cgt.un + brtrue FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 POS_INF + cgt.un + brtrue FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 NAN + cgt.un + brfalse FAIL + + ldc.r8 ZERO + ldc.r8 NEG_INF + cgt.un + brfalse FAIL + + ldc.r8 ZERO + ldc.r8 MIN + cgt.un + brfalse FAIL + + ldc.r8 ZERO + ldc.r8 MINUS_ONE + cgt.un + brfalse FAIL + + ldc.r8 ZERO + ldc.r8 MINUS_ZERO + cgt.un + brtrue FAIL + + ldc.r8 ZERO + ldc.r8 ZERO + cgt.un + brtrue FAIL + + ldc.r8 ZERO + ldc.r8 ONE + cgt.un + brtrue FAIL + + ldc.r8 ZERO + ldc.r8 MAX + cgt.un + brtrue FAIL + + ldc.r8 ZERO + ldc.r8 POS_INF + cgt.un + brtrue FAIL + + ldc.r8 ZERO + ldc.r8 NAN + cgt.un + brfalse FAIL + + ldc.r8 ONE + ldc.r8 NEG_INF + cgt.un + brfalse FAIL + + ldc.r8 ONE + ldc.r8 MIN + cgt.un + brfalse FAIL + + ldc.r8 ONE + ldc.r8 MINUS_ONE + cgt.un + brfalse FAIL + + ldc.r8 ONE + ldc.r8 MINUS_ZERO + cgt.un + brfalse FAIL + + ldc.r8 ONE + ldc.r8 ZERO + cgt.un + brfalse FAIL + + ldc.r8 ONE + ldc.r8 ONE + cgt.un + brtrue FAIL + + ldc.r8 ONE + ldc.r8 MAX + cgt.un + brtrue FAIL + + ldc.r8 ONE + ldc.r8 POS_INF + cgt.un + brtrue FAIL + + ldc.r8 ONE + ldc.r8 NAN + cgt.un + brfalse FAIL + + ldc.r8 MAX + ldc.r8 NEG_INF + cgt.un + brfalse FAIL + + ldc.r8 MAX + ldc.r8 MIN + cgt.un + brfalse FAIL + + ldc.r8 MAX + ldc.r8 MINUS_ONE + cgt.un + brfalse FAIL + + ldc.r8 MAX + ldc.r8 MINUS_ZERO + cgt.un + brfalse FAIL + + ldc.r8 MAX + ldc.r8 ZERO + cgt.un + brfalse FAIL + + ldc.r8 MAX + ldc.r8 ONE + cgt.un + brfalse FAIL + + ldc.r8 MAX + ldc.r8 MAX + cgt.un + brtrue FAIL + + ldc.r8 MAX + ldc.r8 POS_INF + cgt.un + brtrue FAIL + + ldc.r8 MAX + ldc.r8 NAN + cgt.un + brfalse FAIL + + ldc.r8 POS_INF + ldc.r8 NEG_INF + cgt.un + brfalse FAIL + + ldc.r8 POS_INF + ldc.r8 MIN + cgt.un + brfalse FAIL + + ldc.r8 POS_INF + ldc.r8 MINUS_ONE + cgt.un + brfalse FAIL + + ldc.r8 POS_INF + ldc.r8 MINUS_ZERO + cgt.un + brfalse FAIL + + ldc.r8 POS_INF + ldc.r8 ZERO + cgt.un + brfalse FAIL + + ldc.r8 POS_INF + ldc.r8 ONE + cgt.un + brfalse FAIL + + ldc.r8 POS_INF + ldc.r8 MAX + cgt.un + brfalse FAIL + + ldc.r8 POS_INF + ldc.r8 POS_INF + cgt.un + brtrue FAIL + + ldc.r8 POS_INF + ldc.r8 NAN + cgt.un + brfalse FAIL + + ldc.r8 NAN + ldc.r8 NEG_INF + cgt.un + brfalse FAIL + + ldc.r8 NAN + ldc.r8 MIN + cgt.un + brfalse FAIL + + ldc.r8 NAN + ldc.r8 MINUS_ONE + cgt.un + brfalse FAIL + + ldc.r8 NAN + ldc.r8 MINUS_ZERO + cgt.un + brfalse FAIL + + ldc.r8 NAN + ldc.r8 ZERO + cgt.un + brfalse FAIL + + ldc.r8 NAN + ldc.r8 ONE + cgt.un + brfalse FAIL + + ldc.r8 NAN + ldc.r8 MAX + cgt.un + brfalse FAIL + + ldc.r8 NAN + ldc.r8 POS_INF + cgt.un + brfalse FAIL + + ldc.r8 NAN + ldc.r8 NAN + cgt.un + brfalse FAIL + ldc.i4 100 ret FAIL: diff --git a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/clt_un_r4.il b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/clt_un_r4.il index 8e753f2e9c3..91b57cc74d2 100644 --- a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/clt_un_r4.il +++ b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/clt_un_r4.il @@ -3,36 +3,46 @@ .assembly extern legacy library mscorlib {} +#define NEG_INF "float32(0xFF800000)" +#define MIN "float32(0xFF7FFFFF)" +#define MINUS_ONE "float32(0xBF800000)" +#define MINUS_ZERO "float32(0x80000000)" +#define ZERO "float32(0x00000000)" +#define ONE "float32(0x3F800000)" +#define MAX "float32(0x7F7FFFFF)" +#define POS_INF "float32(0x7F800000)" +#define NAN "float32(0x7FC00000)" + .class public clt_un { -.field public static float32 _inf -.field public static float32 _min -.field public static float32 _one -.field public static float32 _zero +.field public static float32 neg_inf +.field public static float32 min +.field public static float32 minus_one +.field public static float32 minus_zero .field public static float32 zero .field public static float32 one .field public static float32 max -.field public static float32 inf +.field public static float32 pos_inf .field public static float32 NaN .method public static void initialize() { .maxstack 10 - ldc.r4 float32(0xFF800000) - stsfld float32 clt_un::_inf - ldc.r4 float32(0xFF7FFFFF) - stsfld float32 clt_un::_min - ldc.r4 float32(0xBF800000) - stsfld float32 clt_un::_one - ldc.r4 float32(0x80000000) - stsfld float32 clt_un::_zero - ldc.r4 float32(0x00000000) + ldc.r4 NEG_INF + stsfld float32 clt_un::neg_inf + ldc.r4 MIN + stsfld float32 clt_un::min + ldc.r4 MINUS_ONE + stsfld float32 clt_un::minus_one + ldc.r4 MINUS_ZERO + stsfld float32 clt_un::minus_zero + ldc.r4 ZERO stsfld float32 clt_un::zero - ldc.r4 float32(0x3F800000) + ldc.r4 ONE stsfld float32 clt_un::one - ldc.r4 float32(0x7F7FFFFF) + ldc.r4 MAX stsfld float32 clt_un::max - ldc.r4 float32(0x7F800000) - stsfld float32 clt_un::inf - ldc.r4 float32(0x7FC00000) + ldc.r4 POS_INF + stsfld float32 clt_un::pos_inf + ldc.r4 NAN stsfld float32 clt_un::NaN ret } @@ -41,202 +51,202 @@ .entrypoint .maxstack 10 call void clt_un::initialize() - ldsfld float32 clt_un::_inf - ldsfld float32 clt_un::_inf + ldsfld float32 clt_un::neg_inf + ldsfld float32 clt_un::neg_inf clt.un brtrue FAIL - ldsfld float32 clt_un::_inf - ldsfld float32 clt_un::_min + ldsfld float32 clt_un::neg_inf + ldsfld float32 clt_un::min clt.un brfalse FAIL - ldsfld float32 clt_un::_inf - ldsfld float32 clt_un::_one + ldsfld float32 clt_un::neg_inf + ldsfld float32 clt_un::minus_one clt.un brfalse FAIL - ldsfld float32 clt_un::_inf - ldsfld float32 clt_un::_zero + ldsfld float32 clt_un::neg_inf + ldsfld float32 clt_un::minus_zero clt.un brfalse FAIL - ldsfld float32 clt_un::_inf + ldsfld float32 clt_un::neg_inf ldsfld float32 clt_un::zero clt.un brfalse FAIL - ldsfld float32 clt_un::_inf + ldsfld float32 clt_un::neg_inf ldsfld float32 clt_un::one clt.un brfalse FAIL - ldsfld float32 clt_un::_inf + ldsfld float32 clt_un::neg_inf ldsfld float32 clt_un::max clt.un brfalse FAIL - ldsfld float32 clt_un::_inf - ldsfld float32 clt_un::inf + ldsfld float32 clt_un::neg_inf + ldsfld float32 clt_un::pos_inf clt.un brfalse FAIL - ldsfld float32 clt_un::_inf + ldsfld float32 clt_un::neg_inf ldsfld float32 clt_un::NaN clt.un brfalse FAIL - ldsfld float32 clt_un::_min - ldsfld float32 clt_un::_inf + ldsfld float32 clt_un::min + ldsfld float32 clt_un::neg_inf clt.un brtrue FAIL - ldsfld float32 clt_un::_min - ldsfld float32 clt_un::_min + ldsfld float32 clt_un::min + ldsfld float32 clt_un::min clt.un brtrue FAIL - ldsfld float32 clt_un::_min - ldsfld float32 clt_un::_one + ldsfld float32 clt_un::min + ldsfld float32 clt_un::minus_one clt.un brfalse FAIL - ldsfld float32 clt_un::_min - ldsfld float32 clt_un::_zero + ldsfld float32 clt_un::min + ldsfld float32 clt_un::minus_zero clt.un brfalse FAIL - ldsfld float32 clt_un::_min + ldsfld float32 clt_un::min ldsfld float32 clt_un::zero clt.un brfalse FAIL - ldsfld float32 clt_un::_min + ldsfld float32 clt_un::min ldsfld float32 clt_un::one clt.un brfalse FAIL - ldsfld float32 clt_un::_min + ldsfld float32 clt_un::min ldsfld float32 clt_un::max clt.un brfalse FAIL - ldsfld float32 clt_un::_min - ldsfld float32 clt_un::inf + ldsfld float32 clt_un::min + ldsfld float32 clt_un::pos_inf clt.un brfalse FAIL - ldsfld float32 clt_un::_min + ldsfld float32 clt_un::min ldsfld float32 clt_un::NaN clt.un brfalse FAIL - ldsfld float32 clt_un::_one - ldsfld float32 clt_un::_inf + ldsfld float32 clt_un::minus_one + ldsfld float32 clt_un::neg_inf clt.un brtrue FAIL - ldsfld float32 clt_un::_one - ldsfld float32 clt_un::_min + ldsfld float32 clt_un::minus_one + ldsfld float32 clt_un::min clt.un brtrue FAIL - ldsfld float32 clt_un::_one - ldsfld float32 clt_un::_one + ldsfld float32 clt_un::minus_one + ldsfld float32 clt_un::minus_one clt.un brtrue FAIL - ldsfld float32 clt_un::_one - ldsfld float32 clt_un::_zero + ldsfld float32 clt_un::minus_one + ldsfld float32 clt_un::minus_zero clt.un brfalse FAIL - ldsfld float32 clt_un::_one + ldsfld float32 clt_un::minus_one ldsfld float32 clt_un::zero clt.un brfalse FAIL - ldsfld float32 clt_un::_one + ldsfld float32 clt_un::minus_one ldsfld float32 clt_un::one clt.un brfalse FAIL - ldsfld float32 clt_un::_one + ldsfld float32 clt_un::minus_one ldsfld float32 clt_un::max clt.un brfalse FAIL - ldsfld float32 clt_un::_one - ldsfld float32 clt_un::inf + ldsfld float32 clt_un::minus_one + ldsfld float32 clt_un::pos_inf clt.un brfalse FAIL - ldsfld float32 clt_un::_one + ldsfld float32 clt_un::minus_one ldsfld float32 clt_un::NaN clt.un brfalse FAIL - ldsfld float32 clt_un::_zero - ldsfld float32 clt_un::_inf + ldsfld float32 clt_un::minus_zero + ldsfld float32 clt_un::neg_inf clt.un brtrue FAIL - ldsfld float32 clt_un::_zero - ldsfld float32 clt_un::_min + ldsfld float32 clt_un::minus_zero + ldsfld float32 clt_un::min clt.un brtrue FAIL - ldsfld float32 clt_un::_zero - ldsfld float32 clt_un::_one + ldsfld float32 clt_un::minus_zero + ldsfld float32 clt_un::minus_one clt.un brtrue FAIL - ldsfld float32 clt_un::_zero - ldsfld float32 clt_un::_zero + ldsfld float32 clt_un::minus_zero + ldsfld float32 clt_un::minus_zero clt.un brtrue FAIL - ldsfld float32 clt_un::_zero + ldsfld float32 clt_un::minus_zero ldsfld float32 clt_un::zero clt.un brtrue FAIL - ldsfld float32 clt_un::_zero + ldsfld float32 clt_un::minus_zero ldsfld float32 clt_un::one clt.un brfalse FAIL - ldsfld float32 clt_un::_zero + ldsfld float32 clt_un::minus_zero ldsfld float32 clt_un::max clt.un brfalse FAIL - ldsfld float32 clt_un::_zero - ldsfld float32 clt_un::inf + ldsfld float32 clt_un::minus_zero + ldsfld float32 clt_un::pos_inf clt.un brfalse FAIL - ldsfld float32 clt_un::_zero + ldsfld float32 clt_un::minus_zero ldsfld float32 clt_un::NaN clt.un brfalse FAIL ldsfld float32 clt_un::zero - ldsfld float32 clt_un::_inf + ldsfld float32 clt_un::neg_inf clt.un brtrue FAIL ldsfld float32 clt_un::zero - ldsfld float32 clt_un::_min + ldsfld float32 clt_un::min clt.un brtrue FAIL ldsfld float32 clt_un::zero - ldsfld float32 clt_un::_one + ldsfld float32 clt_un::minus_one clt.un brtrue FAIL ldsfld float32 clt_un::zero - ldsfld float32 clt_un::_zero + ldsfld float32 clt_un::minus_zero clt.un brtrue FAIL @@ -256,7 +266,7 @@ brfalse FAIL ldsfld float32 clt_un::zero - ldsfld float32 clt_un::inf + ldsfld float32 clt_un::pos_inf clt.un brfalse FAIL @@ -266,22 +276,22 @@ brfalse FAIL ldsfld float32 clt_un::one - ldsfld float32 clt_un::_inf + ldsfld float32 clt_un::neg_inf clt.un brtrue FAIL ldsfld float32 clt_un::one - ldsfld float32 clt_un::_min + ldsfld float32 clt_un::min clt.un brtrue FAIL ldsfld float32 clt_un::one - ldsfld float32 clt_un::_one + ldsfld float32 clt_un::minus_one clt.un brtrue FAIL ldsfld float32 clt_un::one - ldsfld float32 clt_un::_zero + ldsfld float32 clt_un::minus_zero clt.un brtrue FAIL @@ -301,7 +311,7 @@ brfalse FAIL ldsfld float32 clt_un::one - ldsfld float32 clt_un::inf + ldsfld float32 clt_un::pos_inf clt.un brfalse FAIL @@ -311,22 +321,22 @@ brfalse FAIL ldsfld float32 clt_un::max - ldsfld float32 clt_un::_inf + ldsfld float32 clt_un::neg_inf clt.un brtrue FAIL ldsfld float32 clt_un::max - ldsfld float32 clt_un::_min + ldsfld float32 clt_un::min clt.un brtrue FAIL ldsfld float32 clt_un::max - ldsfld float32 clt_un::_one + ldsfld float32 clt_un::minus_one clt.un brtrue FAIL ldsfld float32 clt_un::max - ldsfld float32 clt_un::_zero + ldsfld float32 clt_un::minus_zero clt.un brtrue FAIL @@ -346,7 +356,7 @@ brtrue FAIL ldsfld float32 clt_un::max - ldsfld float32 clt_un::inf + ldsfld float32 clt_un::pos_inf clt.un brfalse FAIL @@ -355,68 +365,68 @@ clt.un brfalse FAIL - ldsfld float32 clt_un::inf - ldsfld float32 clt_un::_inf + ldsfld float32 clt_un::pos_inf + ldsfld float32 clt_un::neg_inf clt.un brtrue FAIL - ldsfld float32 clt_un::inf - ldsfld float32 clt_un::_min + ldsfld float32 clt_un::pos_inf + ldsfld float32 clt_un::min clt.un brtrue FAIL - ldsfld float32 clt_un::inf - ldsfld float32 clt_un::_one + ldsfld float32 clt_un::pos_inf + ldsfld float32 clt_un::minus_one clt.un brtrue FAIL - ldsfld float32 clt_un::inf - ldsfld float32 clt_un::_zero + ldsfld float32 clt_un::pos_inf + ldsfld float32 clt_un::minus_zero clt.un brtrue FAIL - ldsfld float32 clt_un::inf + ldsfld float32 clt_un::pos_inf ldsfld float32 clt_un::zero clt.un brtrue FAIL - ldsfld float32 clt_un::inf + ldsfld float32 clt_un::pos_inf ldsfld float32 clt_un::one clt.un brtrue FAIL - ldsfld float32 clt_un::inf + ldsfld float32 clt_un::pos_inf ldsfld float32 clt_un::max clt.un brtrue FAIL - ldsfld float32 clt_un::inf - ldsfld float32 clt_un::inf + ldsfld float32 clt_un::pos_inf + ldsfld float32 clt_un::pos_inf clt.un brtrue FAIL - ldsfld float32 clt_un::inf + ldsfld float32 clt_un::pos_inf ldsfld float32 clt_un::NaN clt.un brfalse FAIL ldsfld float32 clt_un::NaN - ldsfld float32 clt_un::_inf + ldsfld float32 clt_un::neg_inf clt.un brfalse FAIL ldsfld float32 clt_un::NaN - ldsfld float32 clt_un::_min + ldsfld float32 clt_un::min clt.un brfalse FAIL ldsfld float32 clt_un::NaN - ldsfld float32 clt_un::_one + ldsfld float32 clt_un::minus_one clt.un brfalse FAIL ldsfld float32 clt_un::NaN - ldsfld float32 clt_un::_zero + ldsfld float32 clt_un::minus_zero clt.un brfalse FAIL @@ -436,7 +446,7 @@ brfalse FAIL ldsfld float32 clt_un::NaN - ldsfld float32 clt_un::inf + ldsfld float32 clt_un::pos_inf clt.un brfalse FAIL @@ -445,6 +455,412 @@ clt.un brfalse FAIL + // Testing early folding logic + + ldc.r4 NEG_INF + ldc.r4 NEG_INF + clt.un + brtrue FAIL + + ldc.r4 NEG_INF + ldc.r4 MIN + clt.un + brfalse FAIL + + ldc.r4 NEG_INF + ldc.r4 MINUS_ONE + clt.un + brfalse FAIL + + ldc.r4 NEG_INF + ldc.r4 MINUS_ZERO + clt.un + brfalse FAIL + + ldc.r4 NEG_INF + ldc.r4 ZERO + clt.un + brfalse FAIL + + ldc.r4 NEG_INF + ldc.r4 ONE + clt.un + brfalse FAIL + + ldc.r4 NEG_INF + ldc.r4 MAX + clt.un + brfalse FAIL + + ldc.r4 NEG_INF + ldc.r4 POS_INF + clt.un + brfalse FAIL + + ldc.r4 NEG_INF + ldc.r4 NAN + clt.un + brfalse FAIL + ldc.r4 MIN + ldc.r4 NEG_INF + clt.un + brtrue FAIL + + ldc.r4 MIN + ldc.r4 MIN + clt.un + brtrue FAIL + + ldc.r4 MIN + ldc.r4 MINUS_ONE + clt.un + brfalse FAIL + + ldc.r4 MIN + ldc.r4 MINUS_ZERO + clt.un + brfalse FAIL + + ldc.r4 MIN + ldc.r4 ZERO + clt.un + brfalse FAIL + + ldc.r4 MIN + ldc.r4 ONE + clt.un + brfalse FAIL + + ldc.r4 MIN + ldc.r4 MAX + clt.un + brfalse FAIL + + ldc.r4 MIN + ldc.r4 POS_INF + clt.un + brfalse FAIL + + ldc.r4 MIN + ldc.r4 NAN + clt.un + brfalse FAIL + + + ldc.r4 MINUS_ONE + ldc.r4 NEG_INF + clt.un + brtrue FAIL + + ldc.r4 MINUS_ONE + ldc.r4 MIN + clt.un + brtrue FAIL + + ldc.r4 MINUS_ONE + ldc.r4 MINUS_ONE + clt.un + brtrue FAIL + + ldc.r4 MINUS_ONE + ldc.r4 MINUS_ZERO + clt.un + brfalse FAIL + + ldc.r4 MINUS_ONE + ldc.r4 ZERO + clt.un + brfalse FAIL + + ldc.r4 MINUS_ONE + ldc.r4 ONE + clt.un + brfalse FAIL + + ldc.r4 MINUS_ONE + ldc.r4 MAX + clt.un + brfalse FAIL + + ldc.r4 MINUS_ONE + ldc.r4 POS_INF + clt.un + brfalse FAIL + + ldc.r4 MINUS_ONE + ldc.r4 NAN + clt.un + brfalse FAIL + ldc.r4 MINUS_ZERO + ldc.r4 NEG_INF + clt.un + brtrue FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 MIN + clt.un + brtrue FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 MINUS_ONE + clt.un + brtrue FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 MINUS_ZERO + clt.un + brtrue FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 ZERO + clt.un + brtrue FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 ONE + clt.un + brfalse FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 MAX + clt.un + brfalse FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 POS_INF + clt.un + brfalse FAIL + + ldc.r4 MINUS_ZERO + ldc.r4 NAN + clt.un + brfalse FAIL + + ldc.r4 ZERO + ldc.r4 NEG_INF + clt.un + brtrue FAIL + + ldc.r4 ZERO + ldc.r4 MIN + clt.un + brtrue FAIL + + ldc.r4 ZERO + ldc.r4 MINUS_ONE + clt.un + brtrue FAIL + + ldc.r4 ZERO + ldc.r4 MINUS_ZERO + clt.un + brtrue FAIL + + ldc.r4 ZERO + ldc.r4 ZERO + clt.un + brtrue FAIL + + ldc.r4 ZERO + ldc.r4 ONE + clt.un + brfalse FAIL + + ldc.r4 ZERO + ldc.r4 MAX + clt.un + brfalse FAIL + + ldc.r4 ZERO + ldc.r4 POS_INF + clt.un + brfalse FAIL + + ldc.r4 ZERO + ldc.r4 NAN + clt.un + brfalse FAIL + + ldc.r4 ONE + ldc.r4 NEG_INF + clt.un + brtrue FAIL + + ldc.r4 ONE + ldc.r4 MIN + clt.un + brtrue FAIL + + ldc.r4 ONE + ldc.r4 MINUS_ONE + clt.un + brtrue FAIL + + ldc.r4 ONE + ldc.r4 MINUS_ZERO + clt.un + brtrue FAIL + + ldc.r4 ONE + ldc.r4 ZERO + clt.un + brtrue FAIL + + ldc.r4 ONE + ldc.r4 ONE + clt.un + brtrue FAIL + + ldc.r4 ONE + ldc.r4 MAX + clt.un + brfalse FAIL + + ldc.r4 ONE + ldc.r4 POS_INF + clt.un + brfalse FAIL + + ldc.r4 ONE + ldc.r4 NAN + clt.un + brfalse FAIL + + ldc.r4 MAX + ldc.r4 NEG_INF + clt.un + brtrue FAIL + + ldc.r4 MAX + ldc.r4 MIN + clt.un + brtrue FAIL + + ldc.r4 MAX + ldc.r4 MINUS_ONE + clt.un + brtrue FAIL + + ldc.r4 MAX + ldc.r4 MINUS_ZERO + clt.un + brtrue FAIL + + ldc.r4 MAX + ldc.r4 ZERO + clt.un + brtrue FAIL + + ldc.r4 MAX + ldc.r4 ONE + clt.un + brtrue FAIL + + ldc.r4 MAX + ldc.r4 MAX + clt.un + brtrue FAIL + + ldc.r4 MAX + ldc.r4 POS_INF + clt.un + brfalse FAIL + + ldc.r4 MAX + ldc.r4 NAN + clt.un + brfalse FAIL + + ldc.r4 POS_INF + ldc.r4 NEG_INF + clt.un + brtrue FAIL + + ldc.r4 POS_INF + ldc.r4 MIN + clt.un + brtrue FAIL + + ldc.r4 POS_INF + ldc.r4 MINUS_ONE + clt.un + brtrue FAIL + + ldc.r4 POS_INF + ldc.r4 MINUS_ZERO + clt.un + brtrue FAIL + + ldc.r4 POS_INF + ldc.r4 ZERO + clt.un + brtrue FAIL + + ldc.r4 POS_INF + ldc.r4 ONE + clt.un + brtrue FAIL + + ldc.r4 POS_INF + ldc.r4 MAX + clt.un + brtrue FAIL + + ldc.r4 POS_INF + ldc.r4 POS_INF + clt.un + brtrue FAIL + + ldc.r4 POS_INF + ldc.r4 NAN + clt.un + brfalse FAIL + + ldc.r4 NAN + ldc.r4 NEG_INF + clt.un + brfalse FAIL + + ldc.r4 NAN + ldc.r4 MIN + clt.un + brfalse FAIL + + ldc.r4 NAN + ldc.r4 MINUS_ONE + clt.un + brfalse FAIL + + ldc.r4 NAN + ldc.r4 MINUS_ZERO + clt.un + brfalse FAIL + + ldc.r4 NAN + ldc.r4 ZERO + clt.un + brfalse FAIL + + ldc.r4 NAN + ldc.r4 ONE + clt.un + brfalse FAIL + + ldc.r4 NAN + ldc.r4 MAX + clt.un + brfalse FAIL + + ldc.r4 NAN + ldc.r4 POS_INF + clt.un + brfalse FAIL + + ldc.r4 NAN + ldc.r4 NAN + clt.un + brfalse FAIL + ldc.i4 100 ret FAIL: diff --git a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/clt_un_r8.il b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/clt_un_r8.il index 1585af3efe8..9187df14d7f 100644 --- a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/clt_un_r8.il +++ b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/clt_un_r8.il @@ -3,36 +3,46 @@ .assembly extern legacy library mscorlib {} +#define NEG_INF "float64(0xFFF0000000000000)" +#define MIN "float64(0xFF7FFFFFFFFFFFFF)" +#define MINUS_ONE "float64(0xBFF0000000000000)" +#define MINUS_ZERO "float64(0x8000000000000000)" +#define ZERO "float64(0x0000000000000000)" +#define ONE "float64(0x3FF0000000000000)" +#define MAX "float64(0x7FEFFFFFFFFFFFFF)" +#define POS_INF "float64(0x7FF0000000000000)" +#define NAN "float64(0x7FF8000000000000)" + .class public clt_un { -.field public static float64 _inf -.field public static float64 _min -.field public static float64 _one -.field public static float64 _zero +.field public static float64 neg_inf +.field public static float64 min +.field public static float64 minus_one +.field public static float64 minus_zero .field public static float64 zero .field public static float64 one .field public static float64 max -.field public static float64 inf +.field public static float64 pos_inf .field public static float64 NaN .method public static void initialize() { .maxstack 10 - ldc.r8 float64(0xFFF0000000000000) - stsfld float64 clt_un::_inf - ldc.r8 float64(0xFF7FFFFFFFFFFFFF) - stsfld float64 clt_un::_min - ldc.r8 float64(0xBFF0000000000000) - stsfld float64 clt_un::_one - ldc.r8 float64(0x8000000000000000) - stsfld float64 clt_un::_zero - ldc.r8 float64(0x0000000000000000) + ldc.r8 NEG_INF + stsfld float64 clt_un::neg_inf + ldc.r8 MIN + stsfld float64 clt_un::min + ldc.r8 MINUS_ONE + stsfld float64 clt_un::minus_one + ldc.r8 MINUS_ZERO + stsfld float64 clt_un::minus_zero + ldc.r8 ZERO stsfld float64 clt_un::zero - ldc.r8 float64(0x3FF0000000000000) + ldc.r8 ONE stsfld float64 clt_un::one - ldc.r8 float64(0x7FEFFFFFFFFFFFFF) + ldc.r8 MAX stsfld float64 clt_un::max - ldc.r8 float64(0x7FF0000000000000) - stsfld float64 clt_un::inf - ldc.r8 float64(0x7FF8000000000000) + ldc.r8 POS_INF + stsfld float64 clt_un::pos_inf + ldc.r8 NAN stsfld float64 clt_un::NaN ret } @@ -41,199 +51,199 @@ .entrypoint .maxstack 10 call void clt_un::initialize() - ldsfld float64 clt_un::_inf - ldsfld float64 clt_un::_inf + ldsfld float64 clt_un::neg_inf + ldsfld float64 clt_un::neg_inf clt.un brtrue FAIL - ldsfld float64 clt_un::_inf - ldsfld float64 clt_un::_min + ldsfld float64 clt_un::neg_inf + ldsfld float64 clt_un::min clt.un brfalse FAIL - ldsfld float64 clt_un::_inf - ldsfld float64 clt_un::_one + ldsfld float64 clt_un::neg_inf + ldsfld float64 clt_un::minus_one clt.un brfalse FAIL - ldsfld float64 clt_un::_inf - ldsfld float64 clt_un::_zero + ldsfld float64 clt_un::neg_inf + ldsfld float64 clt_un::minus_zero clt.un brfalse FAIL - ldsfld float64 clt_un::_inf + ldsfld float64 clt_un::neg_inf ldsfld float64 clt_un::zero clt.un brfalse FAIL - ldsfld float64 clt_un::_inf + ldsfld float64 clt_un::neg_inf ldsfld float64 clt_un::one clt.un brfalse FAIL - ldsfld float64 clt_un::_inf + ldsfld float64 clt_un::neg_inf ldsfld float64 clt_un::max clt.un brfalse FAIL - ldsfld float64 clt_un::_inf - ldsfld float64 clt_un::inf + ldsfld float64 clt_un::neg_inf + ldsfld float64 clt_un::pos_inf clt.un brfalse FAIL - ldsfld float64 clt_un::_inf + ldsfld float64 clt_un::neg_inf ldsfld float64 clt_un::NaN clt.un brfalse FAIL - ldsfld float64 clt_un::_min - ldsfld float64 clt_un::_inf + ldsfld float64 clt_un::min + ldsfld float64 clt_un::neg_inf clt.un brtrue FAIL - ldsfld float64 clt_un::_min - ldsfld float64 clt_un::_min + ldsfld float64 clt_un::min + ldsfld float64 clt_un::min clt.un brtrue FAIL - ldsfld float64 clt_un::_min - ldsfld float64 clt_un::_one + ldsfld float64 clt_un::min + ldsfld float64 clt_un::minus_one clt.un brfalse FAIL - ldsfld float64 clt_un::_min - ldsfld float64 clt_un::_zero + ldsfld float64 clt_un::min + ldsfld float64 clt_un::minus_zero clt.un brfalse FAIL - ldsfld float64 clt_un::_min + ldsfld float64 clt_un::min ldsfld float64 clt_un::zero clt.un brfalse FAIL - ldsfld float64 clt_un::_min + ldsfld float64 clt_un::min ldsfld float64 clt_un::one clt.un brfalse FAIL - ldsfld float64 clt_un::_min + ldsfld float64 clt_un::min ldsfld float64 clt_un::max clt.un brfalse FAIL - ldsfld float64 clt_un::_min - ldsfld float64 clt_un::inf + ldsfld float64 clt_un::min + ldsfld float64 clt_un::pos_inf clt.un brfalse FAIL - ldsfld float64 clt_un::_min + ldsfld float64 clt_un::min ldsfld float64 clt_un::NaN clt.un brfalse FAIL - ldsfld float64 clt_un::_one - ldsfld float64 clt_un::_inf + ldsfld float64 clt_un::minus_one + ldsfld float64 clt_un::neg_inf clt.un brtrue FAIL - ldsfld float64 clt_un::_one - ldsfld float64 clt_un::_min + ldsfld float64 clt_un::minus_one + ldsfld float64 clt_un::min clt.un brtrue FAIL - ldsfld float64 clt_un::_one - ldsfld float64 clt_un::_one + ldsfld float64 clt_un::minus_one + ldsfld float64 clt_un::minus_one clt.un brtrue FAIL - ldsfld float64 clt_un::_one - ldsfld float64 clt_un::_zero + ldsfld float64 clt_un::minus_one + ldsfld float64 clt_un::minus_zero clt.un brfalse FAIL - ldsfld float64 clt_un::_one + ldsfld float64 clt_un::minus_one ldsfld float64 clt_un::zero clt.un brfalse FAIL - ldsfld float64 clt_un::_one + ldsfld float64 clt_un::minus_one ldsfld float64 clt_un::one clt.un brfalse FAIL - ldsfld float64 clt_un::_one + ldsfld float64 clt_un::minus_one ldsfld float64 clt_un::max clt.un brfalse FAIL - ldsfld float64 clt_un::_one - ldsfld float64 clt_un::inf + ldsfld float64 clt_un::minus_one + ldsfld float64 clt_un::pos_inf clt.un brfalse FAIL - ldsfld float64 clt_un::_one + ldsfld float64 clt_un::minus_one ldsfld float64 clt_un::NaN clt.un brfalse FAIL - ldsfld float64 clt_un::_zero - ldsfld float64 clt_un::_inf + ldsfld float64 clt_un::minus_zero + ldsfld float64 clt_un::neg_inf clt.un brtrue FAIL - ldsfld float64 clt_un::_zero - ldsfld float64 clt_un::_min + ldsfld float64 clt_un::minus_zero + ldsfld float64 clt_un::min clt.un brtrue FAIL - ldsfld float64 clt_un::_zero - ldsfld float64 clt_un::_one + ldsfld float64 clt_un::minus_zero + ldsfld float64 clt_un::minus_one clt.un brtrue FAIL - ldsfld float64 clt_un::_zero - ldsfld float64 clt_un::_zero + ldsfld float64 clt_un::minus_zero + ldsfld float64 clt_un::minus_zero clt.un brtrue FAIL - ldsfld float64 clt_un::_zero + ldsfld float64 clt_un::minus_zero ldsfld float64 clt_un::zero clt.un brtrue FAIL - ldsfld float64 clt_un::_zero + ldsfld float64 clt_un::minus_zero ldsfld float64 clt_un::one clt.un brfalse FAIL - ldsfld float64 clt_un::_zero + ldsfld float64 clt_un::minus_zero ldsfld float64 clt_un::max clt.un brfalse FAIL - ldsfld float64 clt_un::_zero - ldsfld float64 clt_un::inf + ldsfld float64 clt_un::minus_zero + ldsfld float64 clt_un::pos_inf clt.un brfalse FAIL - ldsfld float64 clt_un::_zero + ldsfld float64 clt_un::minus_zero ldsfld float64 clt_un::NaN clt.un brfalse FAIL ldsfld float64 clt_un::zero - ldsfld float64 clt_un::_inf + ldsfld float64 clt_un::neg_inf clt.un brtrue FAIL ldsfld float64 clt_un::zero - ldsfld float64 clt_un::_min + ldsfld float64 clt_un::min clt.un brtrue FAIL ldsfld float64 clt_un::zero - ldsfld float64 clt_un::_one + ldsfld float64 clt_un::minus_one clt.un brtrue FAIL ldsfld float64 clt_un::zero - ldsfld float64 clt_un::_zero + ldsfld float64 clt_un::minus_zero clt.un brtrue FAIL @@ -253,7 +263,7 @@ brfalse FAIL ldsfld float64 clt_un::zero - ldsfld float64 clt_un::inf + ldsfld float64 clt_un::pos_inf clt.un brfalse FAIL @@ -263,22 +273,22 @@ brfalse FAIL ldsfld float64 clt_un::one - ldsfld float64 clt_un::_inf + ldsfld float64 clt_un::neg_inf clt.un brtrue FAIL ldsfld float64 clt_un::one - ldsfld float64 clt_un::_min + ldsfld float64 clt_un::min clt.un brtrue FAIL ldsfld float64 clt_un::one - ldsfld float64 clt_un::_one + ldsfld float64 clt_un::minus_one clt.un brtrue FAIL ldsfld float64 clt_un::one - ldsfld float64 clt_un::_zero + ldsfld float64 clt_un::minus_zero clt.un brtrue FAIL @@ -298,7 +308,7 @@ brfalse FAIL ldsfld float64 clt_un::one - ldsfld float64 clt_un::inf + ldsfld float64 clt_un::pos_inf clt.un brfalse FAIL @@ -308,22 +318,22 @@ brfalse FAIL ldsfld float64 clt_un::max - ldsfld float64 clt_un::_inf + ldsfld float64 clt_un::neg_inf clt.un brtrue FAIL ldsfld float64 clt_un::max - ldsfld float64 clt_un::_min + ldsfld float64 clt_un::min clt.un brtrue FAIL ldsfld float64 clt_un::max - ldsfld float64 clt_un::_one + ldsfld float64 clt_un::minus_one clt.un brtrue FAIL ldsfld float64 clt_un::max - ldsfld float64 clt_un::_zero + ldsfld float64 clt_un::minus_zero clt.un brtrue FAIL @@ -343,7 +353,7 @@ brtrue FAIL ldsfld float64 clt_un::max - ldsfld float64 clt_un::inf + ldsfld float64 clt_un::pos_inf clt.un brfalse FAIL @@ -352,68 +362,68 @@ clt.un brfalse FAIL - ldsfld float64 clt_un::inf - ldsfld float64 clt_un::_inf + ldsfld float64 clt_un::pos_inf + ldsfld float64 clt_un::neg_inf clt.un brtrue FAIL - ldsfld float64 clt_un::inf - ldsfld float64 clt_un::_min + ldsfld float64 clt_un::pos_inf + ldsfld float64 clt_un::min clt.un brtrue FAIL - ldsfld float64 clt_un::inf - ldsfld float64 clt_un::_one + ldsfld float64 clt_un::pos_inf + ldsfld float64 clt_un::minus_one clt.un brtrue FAIL - ldsfld float64 clt_un::inf - ldsfld float64 clt_un::_zero + ldsfld float64 clt_un::pos_inf + ldsfld float64 clt_un::minus_zero clt.un brtrue FAIL - ldsfld float64 clt_un::inf + ldsfld float64 clt_un::pos_inf ldsfld float64 clt_un::zero clt.un brtrue FAIL - ldsfld float64 clt_un::inf + ldsfld float64 clt_un::pos_inf ldsfld float64 clt_un::one clt.un brtrue FAIL - ldsfld float64 clt_un::inf + ldsfld float64 clt_un::pos_inf ldsfld float64 clt_un::max clt.un brtrue FAIL - ldsfld float64 clt_un::inf - ldsfld float64 clt_un::inf + ldsfld float64 clt_un::pos_inf + ldsfld float64 clt_un::pos_inf clt.un brtrue FAIL - ldsfld float64 clt_un::inf + ldsfld float64 clt_un::pos_inf ldsfld float64 clt_un::NaN clt.un brfalse FAIL ldsfld float64 clt_un::NaN - ldsfld float64 clt_un::_inf + ldsfld float64 clt_un::neg_inf clt.un brfalse FAIL ldsfld float64 clt_un::NaN - ldsfld float64 clt_un::_min + ldsfld float64 clt_un::min clt.un brfalse FAIL ldsfld float64 clt_un::NaN - ldsfld float64 clt_un::_one + ldsfld float64 clt_un::minus_one clt.un brfalse FAIL ldsfld float64 clt_un::NaN - ldsfld float64 clt_un::_zero + ldsfld float64 clt_un::minus_zero clt.un brfalse FAIL @@ -433,7 +443,7 @@ brfalse FAIL ldsfld float64 clt_un::NaN - ldsfld float64 clt_un::inf + ldsfld float64 clt_un::pos_inf clt.un brfalse FAIL @@ -442,6 +452,409 @@ clt.un brfalse FAIL + // Testing early folding logic + + ldc.r8 NEG_INF + ldc.r8 NEG_INF + clt.un + brtrue FAIL + + ldc.r8 NEG_INF + ldc.r8 MIN + clt.un + brfalse FAIL + + ldc.r8 NEG_INF + ldc.r8 MINUS_ONE + clt.un + brfalse FAIL + + ldc.r8 NEG_INF + ldc.r8 MINUS_ZERO + clt.un + brfalse FAIL + + ldc.r8 NEG_INF + ldc.r8 ZERO + clt.un + brfalse FAIL + + ldc.r8 NEG_INF + ldc.r8 ONE + clt.un + brfalse FAIL + + ldc.r8 NEG_INF + ldc.r8 MAX + clt.un + brfalse FAIL + + ldc.r8 NEG_INF + ldc.r8 POS_INF + clt.un + brfalse FAIL + + ldc.r8 NEG_INF + ldc.r8 NAN + clt.un + brfalse FAIL + ldc.r8 MIN + ldc.r8 NEG_INF + clt.un + brtrue FAIL + + ldc.r8 MIN + ldc.r8 MIN + clt.un + brtrue FAIL + + ldc.r8 MIN + ldc.r8 MINUS_ONE + clt.un + brfalse FAIL + + ldc.r8 MIN + ldc.r8 MINUS_ZERO + clt.un + brfalse FAIL + + ldc.r8 MIN + ldc.r8 ZERO + clt.un + brfalse FAIL + + ldc.r8 MIN + ldc.r8 ONE + clt.un + brfalse FAIL + + ldc.r8 MIN + ldc.r8 MAX + clt.un + brfalse FAIL + + ldc.r8 MIN + ldc.r8 POS_INF + clt.un + brfalse FAIL + + ldc.r8 MIN + ldc.r8 NAN + clt.un + brfalse FAIL + ldc.r8 MINUS_ONE + ldc.r8 NEG_INF + clt.un + brtrue FAIL + + ldc.r8 MINUS_ONE + ldc.r8 MIN + clt.un + brtrue FAIL + + ldc.r8 MINUS_ONE + ldc.r8 MINUS_ONE + clt.un + brtrue FAIL + + ldc.r8 MINUS_ONE + ldc.r8 MINUS_ZERO + clt.un + brfalse FAIL + + ldc.r8 MINUS_ONE + ldc.r8 ZERO + clt.un + brfalse FAIL + + ldc.r8 MINUS_ONE + ldc.r8 ONE + clt.un + brfalse FAIL + + ldc.r8 MINUS_ONE + ldc.r8 MAX + clt.un + brfalse FAIL + + ldc.r8 MINUS_ONE + ldc.r8 POS_INF + clt.un + brfalse FAIL + + ldc.r8 MINUS_ONE + ldc.r8 NAN + clt.un + brfalse FAIL + ldc.r8 MINUS_ZERO + ldc.r8 NEG_INF + clt.un + brtrue FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 MIN + clt.un + brtrue FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 MINUS_ONE + clt.un + brtrue FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 MINUS_ZERO + clt.un + brtrue FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 ZERO + clt.un + brtrue FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 ONE + clt.un + brfalse FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 MAX + clt.un + brfalse FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 POS_INF + clt.un + brfalse FAIL + + ldc.r8 MINUS_ZERO + ldc.r8 NAN + clt.un + brfalse FAIL + ldc.r8 ZERO + ldc.r8 NEG_INF + clt.un + brtrue FAIL + + ldc.r8 ZERO + ldc.r8 MIN + clt.un + brtrue FAIL + + ldc.r8 ZERO + ldc.r8 MINUS_ONE + clt.un + brtrue FAIL + + ldc.r8 ZERO + ldc.r8 MINUS_ZERO + clt.un + brtrue FAIL + + ldc.r8 ZERO + ldc.r8 ZERO + clt.un + brtrue FAIL + + ldc.r8 ZERO + ldc.r8 ONE + clt.un + brfalse FAIL + + ldc.r8 ZERO + ldc.r8 MAX + clt.un + brfalse FAIL + + ldc.r8 ZERO + ldc.r8 POS_INF + clt.un + brfalse FAIL + + ldc.r8 ZERO + ldc.r8 NAN + clt.un + brfalse FAIL + + ldc.r8 ONE + ldc.r8 NEG_INF + clt.un + brtrue FAIL + + ldc.r8 ONE + ldc.r8 MIN + clt.un + brtrue FAIL + + ldc.r8 ONE + ldc.r8 MINUS_ONE + clt.un + brtrue FAIL + + ldc.r8 ONE + ldc.r8 MINUS_ZERO + clt.un + brtrue FAIL + + ldc.r8 ONE + ldc.r8 ZERO + clt.un + brtrue FAIL + + ldc.r8 ONE + ldc.r8 ONE + clt.un + brtrue FAIL + + ldc.r8 ONE + ldc.r8 MAX + clt.un + brfalse FAIL + + ldc.r8 ONE + ldc.r8 POS_INF + clt.un + brfalse FAIL + + ldc.r8 ONE + ldc.r8 NAN + clt.un + brfalse FAIL + + ldc.r8 MAX + ldc.r8 NEG_INF + clt.un + brtrue FAIL + + ldc.r8 MAX + ldc.r8 MIN + clt.un + brtrue FAIL + + ldc.r8 MAX + ldc.r8 MINUS_ONE + clt.un + brtrue FAIL + + ldc.r8 MAX + ldc.r8 MINUS_ZERO + clt.un + brtrue FAIL + + ldc.r8 MAX + ldc.r8 ZERO + clt.un + brtrue FAIL + + ldc.r8 MAX + ldc.r8 ONE + clt.un + brtrue FAIL + + ldc.r8 MAX + ldc.r8 MAX + clt.un + brtrue FAIL + + ldc.r8 MAX + ldc.r8 POS_INF + clt.un + brfalse FAIL + + ldc.r8 MAX + ldc.r8 NAN + clt.un + brfalse FAIL + + ldc.r8 POS_INF + ldc.r8 NEG_INF + clt.un + brtrue FAIL + + ldc.r8 POS_INF + ldc.r8 MIN + clt.un + brtrue FAIL + + ldc.r8 POS_INF + ldc.r8 MINUS_ONE + clt.un + brtrue FAIL + + ldc.r8 POS_INF + ldc.r8 MINUS_ZERO + clt.un + brtrue FAIL + + ldc.r8 POS_INF + ldc.r8 ZERO + clt.un + brtrue FAIL + + ldc.r8 POS_INF + ldc.r8 ONE + clt.un + brtrue FAIL + + ldc.r8 POS_INF + ldc.r8 MAX + clt.un + brtrue FAIL + + ldc.r8 POS_INF + ldc.r8 POS_INF + clt.un + brtrue FAIL + + ldc.r8 POS_INF + ldc.r8 NAN + clt.un + brfalse FAIL + + ldc.r8 NAN + ldc.r8 NEG_INF + clt.un + brfalse FAIL + + ldc.r8 NAN + ldc.r8 MIN + clt.un + brfalse FAIL + + ldc.r8 NAN + ldc.r8 MINUS_ONE + clt.un + brfalse FAIL + + ldc.r8 NAN + ldc.r8 MINUS_ZERO + clt.un + brfalse FAIL + + ldc.r8 NAN + ldc.r8 ZERO + clt.un + brfalse FAIL + + ldc.r8 NAN + ldc.r8 ONE + clt.un + brfalse FAIL + + ldc.r8 NAN + ldc.r8 MAX + clt.un + brfalse FAIL + + ldc.r8 NAN + ldc.r8 POS_INF + clt.un + brfalse FAIL + + ldc.r8 NAN + ldc.r8 NAN + clt.un + brfalse FAIL + ldc.i4 100 ret FAIL: |