github.com/gagliardetto/golang-go@v0.0.0-20201020153340-53909ea70814/cmd/compile/internal/ssa/gen/AMD64splitload.rules (about)

     1  // Copyright 2019 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // This file contains rules used by flagalloc to split
     6  // a flag-generating merged load op into separate load and op.
     7  // Unlike with the other rules files, not all of these
     8  // rules will be applied to all values.
     9  // Rather, flagalloc will request for rules to be applied
    10  // to a particular problematic value.
    11  // These are often the exact inverse of rules in AMD64.rules,
    12  // only with the conditions removed.
    13  
    14  (CMP(Q|L|W|B)load {sym} [off] ptr x mem) -> (CMP(Q|L|W|B) (MOV(Q|L|W|B)load {sym} [off] ptr mem) x)
    15  
    16  (CMP(Q|L|W|B)constload {sym} [vo] ptr mem) -> (CMP(Q|L|W|B)const (MOV(Q|L|W|B)load {sym} [offOnly(vo)] ptr mem) [valOnly(vo)])