X7ROOT File Manager
Current Path:
/opt/golang/1.19.4/src/cmd/compile/internal/ssa/gen
opt
/
golang
/
1.19.4
/
src
/
cmd
/
compile
/
internal
/
ssa
/
gen
/
📁
..
📄
386.rules
(48.83 KB)
📄
386Ops.go
(44.57 KB)
📄
386splitload.rules
(620 B)
📄
AMD64.rules
(115.41 KB)
📄
AMD64Ops.go
(102.51 KB)
📄
AMD64splitload.rules
(3.36 KB)
📄
ARM.rules
(90.11 KB)
📄
ARM64.rules
(157.38 KB)
📄
ARM64Ops.go
(57.35 KB)
📄
ARMOps.go
(41 KB)
📄
LOONG64.rules
(35.63 KB)
📄
LOONG64Ops.go
(24.16 KB)
📄
MIPS.rules
(34.6 KB)
📄
MIPS64.rules
(36.64 KB)
📄
MIPS64Ops.go
(24.44 KB)
📄
MIPSOps.go
(23.57 KB)
📄
PPC64.rules
(75.66 KB)
📄
PPC64Ops.go
(41.43 KB)
📄
README
(287 B)
📄
RISCV64.rules
(34.53 KB)
📄
RISCV64Ops.go
(27.62 KB)
📄
S390X.rules
(83.63 KB)
📄
S390XOps.go
(52.51 KB)
📄
Wasm.rules
(17.27 KB)
📄
WasmOps.go
(17.7 KB)
📄
cover.bash
(667 B)
📄
dec.rules
(2.65 KB)
📄
dec64.rules
(13.94 KB)
📄
dec64Ops.go
(401 B)
📄
decOps.go
(391 B)
📄
generic.rules
(114.75 KB)
📄
genericOps.go
(40.74 KB)
📄
main.go
(16.75 KB)
📄
rulegen.go
(48.72 KB)
Editing: AMD64splitload.rules
// Copyright 2019 The Go Authors. All rights reserved. // 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 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) (CMP(Q|L|W|B)constload {sym} [vo] ptr mem) && vo.Val() == 0 => (TEST(Q|L|W|B) x:(MOV(Q|L|W|B)load {sym} [vo.Off()] ptr mem) x) (CMPQconstload {sym} [vo] ptr mem) && vo.Val() != 0 => (CMPQconst (MOVQload {sym} [vo.Off()] ptr mem) [vo.Val()]) (CMPLconstload {sym} [vo] ptr mem) && vo.Val() != 0 => (CMPLconst (MOVLload {sym} [vo.Off()] ptr mem) [vo.Val()]) (CMPWconstload {sym} [vo] ptr mem) && vo.Val() != 0 => (CMPWconst (MOVWload {sym} [vo.Off()] ptr mem) [vo.Val16()]) (CMPBconstload {sym} [vo] ptr mem) && vo.Val() != 0 => (CMPBconst (MOVBload {sym} [vo.Off()] ptr mem) [vo.Val8()]) (CMP(Q|L|W|B)loadidx1 {sym} [off] ptr idx x mem) => (CMP(Q|L|W|B) (MOV(Q|L|W|B)loadidx1 {sym} [off] ptr idx mem) x) (CMPQloadidx8 {sym} [off] ptr idx x mem) => (CMPQ (MOVQloadidx8 {sym} [off] ptr idx mem) x) (CMPLloadidx4 {sym} [off] ptr idx x mem) => (CMPL (MOVLloadidx4 {sym} [off] ptr idx mem) x) (CMPWloadidx2 {sym} [off] ptr idx x mem) => (CMPW (MOVWloadidx2 {sym} [off] ptr idx mem) x) (CMP(Q|L|W|B)constloadidx1 {sym} [vo] ptr idx mem) && vo.Val() == 0 => (TEST(Q|L|W|B) x:(MOV(Q|L|W|B)loadidx1 {sym} [vo.Off()] ptr idx mem) x) (CMPQconstloadidx8 {sym} [vo] ptr idx mem) && vo.Val() == 0 => (TESTQ x:(MOVQloadidx8 {sym} [vo.Off()] ptr idx mem) x) (CMPLconstloadidx4 {sym} [vo] ptr idx mem) && vo.Val() == 0 => (TESTL x:(MOVLloadidx4 {sym} [vo.Off()] ptr idx mem) x) (CMPWconstloadidx2 {sym} [vo] ptr idx mem) && vo.Val() == 0 => (TESTW x:(MOVWloadidx2 {sym} [vo.Off()] ptr idx mem) x) (CMPQconstloadidx1 {sym} [vo] ptr idx mem) && vo.Val() != 0 => (CMPQconst (MOVQloadidx1 {sym} [vo.Off()] ptr idx mem) [vo.Val()]) (CMPLconstloadidx1 {sym} [vo] ptr idx mem) && vo.Val() != 0 => (CMPLconst (MOVLloadidx1 {sym} [vo.Off()] ptr idx mem) [vo.Val()]) (CMPWconstloadidx1 {sym} [vo] ptr idx mem) && vo.Val() != 0 => (CMPWconst (MOVWloadidx1 {sym} [vo.Off()] ptr idx mem) [vo.Val16()]) (CMPBconstloadidx1 {sym} [vo] ptr idx mem) && vo.Val() != 0 => (CMPBconst (MOVBloadidx1 {sym} [vo.Off()] ptr idx mem) [vo.Val8()]) (CMPQconstloadidx8 {sym} [vo] ptr idx mem) && vo.Val() != 0 => (CMPQconst (MOVQloadidx8 {sym} [vo.Off()] ptr idx mem) [vo.Val()]) (CMPLconstloadidx4 {sym} [vo] ptr idx mem) && vo.Val() != 0 => (CMPLconst (MOVLloadidx4 {sym} [vo.Off()] ptr idx mem) [vo.Val()]) (CMPWconstloadidx2 {sym} [vo] ptr idx mem) && vo.Val() != 0 => (CMPWconst (MOVWloadidx2 {sym} [vo.Off()] ptr idx mem) [vo.Val16()])
Upload File
Create Folder