48 lines
1.3 KiB
C#
48 lines
1.3 KiB
C#
|
using ARMeilleure.IntermediateRepresentation;
|
||
|
using System;
|
||
|
|
||
|
namespace ARMeilleure.CodeGen.Arm64
|
||
|
{
|
||
|
enum ArmCondition
|
||
|
{
|
||
|
Eq = 0,
|
||
|
Ne = 1,
|
||
|
GeUn = 2,
|
||
|
LtUn = 3,
|
||
|
Mi = 4,
|
||
|
Pl = 5,
|
||
|
Vs = 6,
|
||
|
Vc = 7,
|
||
|
GtUn = 8,
|
||
|
LeUn = 9,
|
||
|
Ge = 10,
|
||
|
Lt = 11,
|
||
|
Gt = 12,
|
||
|
Le = 13,
|
||
|
Al = 14,
|
||
|
Nv = 15
|
||
|
}
|
||
|
|
||
|
static class ComparisonArm64Extensions
|
||
|
{
|
||
|
public static ArmCondition ToArmCondition(this Comparison comp)
|
||
|
{
|
||
|
return comp switch
|
||
|
{
|
||
|
Comparison.Equal => ArmCondition.Eq,
|
||
|
Comparison.NotEqual => ArmCondition.Ne,
|
||
|
Comparison.Greater => ArmCondition.Gt,
|
||
|
Comparison.LessOrEqual => ArmCondition.Le,
|
||
|
Comparison.GreaterUI => ArmCondition.GtUn,
|
||
|
Comparison.LessOrEqualUI => ArmCondition.LeUn,
|
||
|
Comparison.GreaterOrEqual => ArmCondition.Ge,
|
||
|
Comparison.Less => ArmCondition.Lt,
|
||
|
Comparison.GreaterOrEqualUI => ArmCondition.GeUn,
|
||
|
Comparison.LessUI => ArmCondition.LtUn,
|
||
|
|
||
|
_ => throw new ArgumentException(null, nameof(comp))
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
}
|