X7ROOT File Manager
Current Path:
/opt/golang/1.17.2/test/codegen
opt
/
golang
/
1.17.2
/
test
/
codegen
/
📁
..
📄
README
(5.21 KB)
📄
addrcalc.go
(324 B)
📄
alloc.go
(902 B)
📄
arithmetic.go
(13.13 KB)
📄
bitfield.go
(7.23 KB)
📄
bits.go
(5.82 KB)
📄
bool.go
(705 B)
📄
clobberdead.go
(860 B)
📄
clobberdeadreg.go
(1.29 KB)
📄
compare_and_branch.go
(3.79 KB)
📄
comparisons.go
(10.04 KB)
📄
condmove.go
(5.3 KB)
📄
copy.go
(3.17 KB)
📄
floats.go
(3.21 KB)
📄
fuse.go
(4.79 KB)
📄
issue22703.go
(5.43 KB)
📄
issue25378.go
(445 B)
📄
issue31618.go
(504 B)
📄
issue33580.go
(459 B)
📄
issue38554.go
(355 B)
📄
issue42610.go
(673 B)
📄
logic.go
(665 B)
📄
mapaccess.go
(9.21 KB)
📄
maps.go
(2.78 KB)
📄
math.go
(5.41 KB)
📄
mathbits.go
(15.46 KB)
📄
memcombine.go
(22.8 KB)
📄
memops.go
(11.55 KB)
📄
noextend.go
(5.57 KB)
📄
race.go
(651 B)
📄
regabi_regalloc.go
(494 B)
📄
retpoline.go
(224 B)
📄
rotate.go
(4.25 KB)
📄
select.go
(353 B)
📄
shift.go
(7.74 KB)
📄
shortcircuit.go
(368 B)
📄
slices.go
(8.09 KB)
📄
smallintiface.go
(500 B)
📄
spectre.go
(722 B)
📄
stack.go
(2.96 KB)
📄
strings.go
(2.08 KB)
📄
structs.go
(887 B)
📄
switch.go
(409 B)
📄
zerosize.go
(610 B)
Editing: rotate.go
// asmcheck // Copyright 2018 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. package codegen import "math/bits" // ------------------- // // const rotates // // ------------------- // func rot64(x uint64) uint64 { var a uint64 // amd64:"ROLQ\t[$]7" // ppc64:"ROTL\t[$]7" // ppc64le:"ROTL\t[$]7" a += x<<7 | x>>57 // amd64:"ROLQ\t[$]8" // arm64:"ROR\t[$]56" // s390x:"RISBGZ\t[$]0, [$]63, [$]8, " // ppc64:"ROTL\t[$]8" // ppc64le:"ROTL\t[$]8" a += x<<8 + x>>56 // amd64:"ROLQ\t[$]9" // arm64:"ROR\t[$]55" // s390x:"RISBGZ\t[$]0, [$]63, [$]9, " // ppc64:"ROTL\t[$]9" // ppc64le:"ROTL\t[$]9" a += x<<9 ^ x>>55 // s390x:"RISBGZ\t[$]0, [$]63, [$]7, " // arm64:"ROR\t[$]57" // TODO this is not great line numbering, but then again, the instruction did appear return a } func rot32(x uint32) uint32 { var a uint32 // amd64:"ROLL\t[$]7" // arm:"MOVW\tR\\d+@>25" // ppc64:"ROTLW\t[$]7" // ppc64le:"ROTLW\t[$]7" a += x<<7 | x>>25 // amd64:`ROLL\t[$]8` // arm:"MOVW\tR\\d+@>24" // arm64:"RORW\t[$]24" // s390x:"RLL\t[$]8" // ppc64:"ROTLW\t[$]8" // ppc64le:"ROTLW\t[$]8" a += x<<8 + x>>24 // amd64:"ROLL\t[$]9" // arm:"MOVW\tR\\d+@>23" // arm64:"RORW\t[$]23" // s390x:"RLL\t[$]9" // ppc64:"ROTLW\t[$]9" // ppc64le:"ROTLW\t[$]9" a += x<<9 ^ x>>23 // s390x:"RLL\t[$]7" // arm64:"RORW\t[$]25" // TODO this is not great line numbering, but then again, the instruction did appear return a } func rot16(x uint16) uint16 { var a uint16 // amd64:"ROLW\t[$]7" a += x<<7 | x>>9 // amd64:`ROLW\t[$]8` a += x<<8 + x>>8 // amd64:"ROLW\t[$]9" a += x<<9 ^ x>>7 return a } func rot8(x uint8) uint8 { var a uint8 // amd64:"ROLB\t[$]5" a += x<<5 | x>>3 // amd64:`ROLB\t[$]6` a += x<<6 + x>>2 // amd64:"ROLB\t[$]7" a += x<<7 ^ x>>1 return a } // ----------------------- // // non-const rotates // // ----------------------- // func rot64nc(x uint64, z uint) uint64 { var a uint64 z &= 63 // amd64:"ROLQ" // ppc64:"ROTL" // ppc64le:"ROTL" a += x<<z | x>>(64-z) // amd64:"RORQ" a += x>>z | x<<(64-z) return a } func rot32nc(x uint32, z uint) uint32 { var a uint32 z &= 31 // amd64:"ROLL" // ppc64:"ROTLW" // ppc64le:"ROTLW" a += x<<z | x>>(32-z) // amd64:"RORL" a += x>>z | x<<(32-z) return a } func rot16nc(x uint16, z uint) uint16 { var a uint16 z &= 15 // amd64:"ROLW" a += x<<z | x>>(16-z) // amd64:"RORW" a += x>>z | x<<(16-z) return a } func rot8nc(x uint8, z uint) uint8 { var a uint8 z &= 7 // amd64:"ROLB" a += x<<z | x>>(8-z) // amd64:"RORB" a += x>>z | x<<(8-z) return a } // Issue 18254: rotate after inlining func f32(x uint32) uint32 { // amd64:"ROLL\t[$]7" return rot32nc(x, 7) } // --------------------------------------- // // Combined Rotate + Masking operations // // --------------------------------------- // func checkMaskedRotate32(a []uint32, r int) { i := 0 // ppc64le: "RLWNM\t[$]16, R[0-9]+, [$]8, [$]15, R[0-9]+" // ppc64: "RLWNM\t[$]16, R[0-9]+, [$]8, [$]15, R[0-9]+" a[i] = bits.RotateLeft32(a[i], 16) & 0xFF0000 i++ // ppc64le: "RLWNM\t[$]16, R[0-9]+, [$]8, [$]15, R[0-9]+" // ppc64: "RLWNM\t[$]16, R[0-9]+, [$]8, [$]15, R[0-9]+" a[i] = bits.RotateLeft32(a[i]&0xFF, 16) i++ // ppc64le: "RLWNM\t[$]4, R[0-9]+, [$]20, [$]27, R[0-9]+" // ppc64: "RLWNM\t[$]4, R[0-9]+, [$]20, [$]27, R[0-9]+" a[i] = bits.RotateLeft32(a[i], 4) & 0xFF0 i++ // ppc64le: "RLWNM\t[$]16, R[0-9]+, [$]24, [$]31, R[0-9]+" // ppc64: "RLWNM\t[$]16, R[0-9]+, [$]24, [$]31, R[0-9]+" a[i] = bits.RotateLeft32(a[i]&0xFF0000, 16) i++ // ppc64le: "RLWNM\tR[0-9]+, R[0-9]+, [$]8, [$]15, R[0-9]+" // ppc64: "RLWNM\tR[0-9]+, R[0-9]+, [$]8, [$]15, R[0-9]+" a[i] = bits.RotateLeft32(a[i], r) & 0xFF0000 i++ // ppc64le: "RLWNM\tR[0-9]+, R[0-9]+, [$]16, [$]23, R[0-9]+" // ppc64: "RLWNM\tR[0-9]+, R[0-9]+, [$]16, [$]23, R[0-9]+" a[i] = bits.RotateLeft32(a[3], r) & 0xFF00 i++ // ppc64le: "RLWNM\tR[0-9]+, R[0-9]+, [$]20, [$]11, R[0-9]+" // ppc64: "RLWNM\tR[0-9]+, R[0-9]+, [$]20, [$]11, R[0-9]+" a[i] = bits.RotateLeft32(a[3], r) & 0xFFF00FFF i++ // ppc64le: "RLWNM\t[$]4, R[0-9]+, [$]20, [$]11, R[0-9]+" // ppc64: "RLWNM\t[$]4, R[0-9]+, [$]20, [$]11, R[0-9]+" a[i] = bits.RotateLeft32(a[3], 4) & 0xFFF00FFF i++ }
Upload File
Create Folder