int CompareStmts(ImplAccStatement x, ImplAccStatement y) { if (x.Kind != y.Kind) { return(x.Kind.CompareTo(y.Kind)); } switch (x) { case NoArgImplAccStatement: return(0); case EmmiImplAccStatement emmi_a: var emmi_b = (EmmiImplAccStatement)y; return(emmi_a.CompareTo(emmi_b)); case IntArgImplAccStatement ia_a: var ia_b = (IntArgImplAccStatement)y; return(ia_a.CompareTo(ia_b)); case IntX2ArgImplAccStatement ia2_a: var ia2_b = (IntX2ArgImplAccStatement)y; return(ia2_a.CompareTo(ia2_b)); case RegisterRangeImplAccStatement range_a: var range_b = (RegisterRangeImplAccStatement)y; return(range_a.CompareTo(range_b)); case RegisterImplAccStatement reg_a: var reg_b = (RegisterImplAccStatement)y; return(reg_a.CompareTo(reg_b)); case MemoryImplAccStatement mem_a: var mem_b = (MemoryImplAccStatement)y; return(mem_a.CompareTo(mem_b)); default: throw new InvalidOperationException(); } }
public override bool Equals([AllowNull] ImplAccStatement obj) => obj is RegisterRangeImplAccStatement other && Access == other.Access && RegisterFirst == other.RegisterFirst && RegisterLast == other.RegisterLast;
public override bool Equals([AllowNull] ImplAccStatement obj) => obj is IntX2ArgImplAccStatement other && Kind == other.Kind && Arg1 == other.Arg1 && Arg2 == other.Arg2;