Skip to content

cmd/asm: change canonical spelling of CMOVLEQ to CMOVL.EQ etc #20173

Open
@dlespiau

Description

@dlespiau

This proposal is originally from @rsc in issue #14069 and is about CMOVLEQ being ambiguous. I Extracted it as I believe it deserves its own issue.

Recounting this to @aclements I figured out what is going on with CMOVLEQ. The GNU form is CMOV[cond][size] but the form added for Go is CMOV[size][cond]. So GNU's cmovleq is cmov-le-q while Go's CMOVLEQ is CMOV-L-EQ. The Intel syntax has no size suffix and is CMOVEQ/CMOVLE, but it seems clear that Go should not be inserting a size suffix in the middle of the defined opcode name. While in general I feel that we need to put up with past mistakes in our assembly definitions to avoid breaking existing assembly programs, this one seems so egregious and error-prone that I think we have no choice but to change these names for Go 1.7 to match the Intel and GNU syntax.

Unfortunately it seems too late for such a breaking change so the proposal evolved into introducing new aliases like CMOVL.EQ (CMOV%size.%cond) to lift the ambiguity and then, later on, remove the old versions. Maybe.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions