OXIESEC PANEL
- Current Dir:
/
/
opt
/
golang
/
1.22.0
/
test
/
codegen
Server IP: 191.96.63.230
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
02/02/2024 06:09:55 PM
rwxr-xr-x
📄
README
5.21 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
addrcalc.go
324 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
alloc.go
902 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
arithmetic.go
14.15 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
bitfield.go
9.64 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
bits.go
7.71 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
bmi.go
4.21 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
bool.go
6.73 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
clobberdead.go
1.31 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
clobberdeadreg.go
1.29 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
compare_and_branch.go
4.5 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
comparisons.go
14.74 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
condmove.go
6.24 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
constants.go
1.11 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
copy.go
3.14 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
floats.go
3.27 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
fuse.go
4.79 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
ifaces.go
621 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
issue22703.go
5.43 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
issue25378.go
445 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
issue31618.go
504 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
issue33580.go
459 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
issue38554.go
355 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
issue42610.go
623 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
issue48054.go
464 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
issue52635.go
816 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
issue54467.go
949 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
issue56440.go
689 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
issue58166.go
554 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
issue60324.go
805 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
issue60673.go
360 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
issue61356.go
1.1 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
issue63332.go
264 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
logic.go
1.06 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
mapaccess.go
9.11 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
maps.go
3.64 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
math.go
6.14 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
mathbits.go
19.34 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
memcombine.go
29.38 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
memops.go
12.48 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
memops_bigoffset.go
2.5 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
noextend.go
5.39 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
race.go
651 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
regabi_regalloc.go
494 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
retpoline.go
580 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
rotate.go
5.29 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
select.go
373 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
shift.go
11.1 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
shortcircuit.go
368 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
slices.go
9.81 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
smallintiface.go
500 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
spectre.go
734 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
stack.go
2.83 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
strings.go
2.4 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
structs.go
923 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
switch.go
3.6 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
writebarrier.go
1.5 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
zerosize.go
650 bytes
02/02/2024 06:09:55 PM
rw-r--r--
Editing: rotate.go
Close
// 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" // ppc64x:"ROTL\t[$]7" // loong64: "ROTRV\t[$]57" a += x<<7 | x>>57 // amd64:"ROLQ\t[$]8" // arm64:"ROR\t[$]56" // s390x:"RISBGZ\t[$]0, [$]63, [$]8, " // ppc64x:"ROTL\t[$]8" // loong64: "ROTRV\t[$]56" a += x<<8 + x>>56 // amd64:"ROLQ\t[$]9" // arm64:"ROR\t[$]55" // s390x:"RISBGZ\t[$]0, [$]63, [$]9, " // ppc64x:"ROTL\t[$]9" // loong64: "ROTRV\t[$]55" a += x<<9 ^ x>>55 // amd64:"ROLQ\t[$]10" // arm64:"ROR\t[$]54" // s390x:"RISBGZ\t[$]0, [$]63, [$]10, " // ppc64x:"ROTL\t[$]10" // arm64:"ROR\t[$]54" // s390x:"RISBGZ\t[$]0, [$]63, [$]10, " // loong64: "ROTRV\t[$]54" a += bits.RotateLeft64(x, 10) return a } func rot32(x uint32) uint32 { var a uint32 // amd64:"ROLL\t[$]7" // arm:"MOVW\tR\\d+@>25" // ppc64x:"ROTLW\t[$]7" // loong64: "ROTR\t[$]25" a += x<<7 | x>>25 // amd64:`ROLL\t[$]8` // arm:"MOVW\tR\\d+@>24" // arm64:"RORW\t[$]24" // s390x:"RLL\t[$]8" // ppc64x:"ROTLW\t[$]8" // loong64: "ROTR\t[$]24" a += x<<8 + x>>24 // amd64:"ROLL\t[$]9" // arm:"MOVW\tR\\d+@>23" // arm64:"RORW\t[$]23" // s390x:"RLL\t[$]9" // ppc64x:"ROTLW\t[$]9" // loong64: "ROTR\t[$]23" a += x<<9 ^ x>>23 // amd64:"ROLL\t[$]10" // arm:"MOVW\tR\\d+@>22" // arm64:"RORW\t[$]22" // s390x:"RLL\t[$]10" // ppc64x:"ROTLW\t[$]10" // arm64:"RORW\t[$]22" // s390x:"RLL\t[$]10" // loong64: "ROTR\t[$]22" a += bits.RotateLeft32(x, 10) 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",-"AND" // arm64:"ROR","NEG",-"AND" // ppc64x:"ROTL",-"NEG",-"AND" // loong64: "ROTRV", -"AND" a += x<<z | x>>(64-z) // amd64:"RORQ",-"AND" // arm64:"ROR",-"NEG",-"AND" // ppc64x:"ROTL","NEG",-"AND" // loong64: "ROTRV", -"AND" a += x>>z | x<<(64-z) return a } func rot32nc(x uint32, z uint) uint32 { var a uint32 z &= 31 // amd64:"ROLL",-"AND" // arm64:"ROR","NEG",-"AND" // ppc64x:"ROTLW",-"NEG",-"AND" // loong64: "ROTR", -"AND" a += x<<z | x>>(32-z) // amd64:"RORL",-"AND" // arm64:"ROR",-"NEG",-"AND" // ppc64x:"ROTLW","NEG",-"AND" // loong64: "ROTR", -"AND" a += x>>z | x<<(32-z) return a } func rot16nc(x uint16, z uint) uint16 { var a uint16 z &= 15 // amd64:"ROLW",-"ANDQ" a += x<<z | x>>(16-z) // amd64:"RORW",-"ANDQ" a += x>>z | x<<(16-z) return a } func rot8nc(x uint8, z uint) uint8 { var a uint8 z &= 7 // amd64:"ROLB",-"ANDQ" a += x<<z | x>>(8-z) // amd64:"RORB",-"ANDQ" 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) } func doubleRotate(x uint64) uint64 { x = (x << 5) | (x >> 59) // amd64:"ROLQ\t[$]15" // arm64:"ROR\t[$]49" x = (x << 10) | (x >> 54) return x } // --------------------------------------- // // Combined Rotate + Masking operations // // --------------------------------------- // func checkMaskedRotate32(a []uint32, r int) { i := 0 // ppc64x: "RLWNM\t[$]16, R[0-9]+, [$]8, [$]15, R[0-9]+" a[i] = bits.RotateLeft32(a[i], 16) & 0xFF0000 i++ // ppc64x: "RLWNM\t[$]16, R[0-9]+, [$]8, [$]15, R[0-9]+" a[i] = bits.RotateLeft32(a[i]&0xFF, 16) i++ // ppc64x: "RLWNM\t[$]4, R[0-9]+, [$]20, [$]27, R[0-9]+" a[i] = bits.RotateLeft32(a[i], 4) & 0xFF0 i++ // ppc64x: "RLWNM\t[$]16, R[0-9]+, [$]24, [$]31, R[0-9]+" a[i] = bits.RotateLeft32(a[i]&0xFF0000, 16) i++ // ppc64x: "RLWNM\tR[0-9]+, R[0-9]+, [$]8, [$]15, R[0-9]+" a[i] = bits.RotateLeft32(a[i], r) & 0xFF0000 i++ // ppc64x: "RLWNM\tR[0-9]+, R[0-9]+, [$]16, [$]23, R[0-9]+" a[i] = bits.RotateLeft32(a[i], r) & 0xFF00 i++ // ppc64x: "RLWNM\tR[0-9]+, R[0-9]+, [$]20, [$]11, R[0-9]+" a[i] = bits.RotateLeft32(a[i], r) & 0xFFF00FFF i++ // ppc64x: "RLWNM\t[$]4, R[0-9]+, [$]20, [$]11, R[0-9]+" a[i] = bits.RotateLeft32(a[i], 4) & 0xFFF00FFF i++ } // combined arithmetic and rotate on arm64 func checkArithmeticWithRotate(a *[1000]uint64) { // arm64: "AND\tR[0-9]+@>51, R[0-9]+, R[0-9]+" a[2] = a[1] & bits.RotateLeft64(a[0], 13) // arm64: "ORR\tR[0-9]+@>51, R[0-9]+, R[0-9]+" a[5] = a[4] | bits.RotateLeft64(a[3], 13) // arm64: "EOR\tR[0-9]+@>51, R[0-9]+, R[0-9]+" a[8] = a[7] ^ bits.RotateLeft64(a[6], 13) // arm64: "MVN\tR[0-9]+@>51, R[0-9]+" a[10] = ^bits.RotateLeft64(a[9], 13) // arm64: "BIC\tR[0-9]+@>51, R[0-9]+, R[0-9]+" a[13] = a[12] &^ bits.RotateLeft64(a[11], 13) // arm64: "EON\tR[0-9]+@>51, R[0-9]+, R[0-9]+" a[16] = a[15] ^ ^bits.RotateLeft64(a[14], 13) // arm64: "ORN\tR[0-9]+@>51, R[0-9]+, R[0-9]+" a[19] = a[18] | ^bits.RotateLeft64(a[17], 13) // arm64: "TST\tR[0-9]+@>51, R[0-9]+" if a[18]&bits.RotateLeft64(a[19], 13) == 0 { a[20] = 1 } }