• Ben Shi's avatar
    cmd/internal/obj/arm64: fix two issues in the assembler · 3d6e4ec0
    Ben Shi authored
    There are two issues in the arm64 assembler.
    
    1. "CMPW $0x22220000, RSP" is encoded to 5b44a4d2ff031b6b, which
       is the combination of "MOVD $0x22220000, Rtmp" and
       "NEGSW Rtmp, ZR".
       The right encoding should be a combination of
       "MOVD $0x22220000, Rtmp" and "CMPW Rtmp, RSP".
    
    2. "AND $0x22220000, R2, RSP" is encoded to 5b44a4d25f601b00,
       which is the combination of "MOVD $0x22220000, Rtmp" and
       an illegal instruction.
       The right behavior should be an error report of
       "illegal combination", since "AND Rtmp, RSP, RSP" is invalid
       in armv8.
    
    This CL fixes the above 2 issues and adds more test cases.
    
    fixes #25557
    
    Change-Id: Ia510be26b58a229f5dfe8a5fa0b35569b2d566e7
    Reviewed-on: https://go-review.googlesource.com/114796
    Run-TryBot: Ben Shi <powerman1st@163.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarKeith Randall <khr@golang.org>
    Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
    3d6e4ec0
arm64error.s 7.94 KB