diff options
Diffstat (limited to 'src/cmd/compile/internal/ssa/gen/AMD64splitload.rules')
| -rw-r--r-- | src/cmd/compile/internal/ssa/gen/AMD64splitload.rules | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/cmd/compile/internal/ssa/gen/AMD64splitload.rules b/src/cmd/compile/internal/ssa/gen/AMD64splitload.rules index 5fd4429a1b..381feb662e 100644 --- a/src/cmd/compile/internal/ssa/gen/AMD64splitload.rules +++ b/src/cmd/compile/internal/ssa/gen/AMD64splitload.rules @@ -2,14 +2,19 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// This file contains rules used by flagalloc to split -// a flag-generating merged load op into separate load and op. +// This file contains rules used by flagalloc and addressingmodes to +// split a flag-generating merged load op into separate load and op. // Unlike with the other rules files, not all of these // rules will be applied to all values. // Rather, flagalloc will request for rules to be applied // to a particular problematic value. // These are often the exact inverse of rules in AMD64.rules, // only with the conditions removed. +// +// For addressingmodes, certain single instructions are slower than the two instruction +// split generated here (which is different from the inputs to addressingmodes). +// For example: +// (CMPBconstload c (ADDQ x y)) -> (CMPBconstloadidx1 c x y) -> (CMPB c (MOVBloadidx1 x y)) (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) |
