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)])