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: switch.go
Close
// asmcheck // 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. // These tests check code generation of switch statements. package codegen // see issue 33934 func f(x string) int { // amd64:-`cmpstring` switch x { case "": return -1 case "1", "2", "3": return -2 default: return -3 } } // use jump tables for 8+ int cases func square(x int) int { // amd64:`JMP\s\(.*\)\(.*\)$` // arm64:`MOVD\s\(R.*\)\(R.*<<3\)`,`JMP\s\(R.*\)$` switch x { case 1: return 1 case 2: return 4 case 3: return 9 case 4: return 16 case 5: return 25 case 6: return 36 case 7: return 49 case 8: return 64 default: return x * x } } // use jump tables for 8+ string lengths func length(x string) int { // amd64:`JMP\s\(.*\)\(.*\)$` // arm64:`MOVD\s\(R.*\)\(R.*<<3\)`,`JMP\s\(R.*\)$` switch x { case "a": return 1 case "bb": return 2 case "ccc": return 3 case "dddd": return 4 case "eeeee": return 5 case "ffffff": return 6 case "ggggggg": return 7 case "hhhhhhhh": return 8 default: return len(x) } } // Use single-byte ordered comparisons for binary searching strings. // See issue 53333. func mimetype(ext string) string { // amd64: `CMPB\s1\(.*\), \$104$`,-`cmpstring` // arm64: `MOVB\s1\(R.*\), R.*$`, `CMPW\s\$104, R.*$`, -`cmpstring` switch ext { // amd64: `CMPL\s\(.*\), \$1836345390$` // arm64: `MOVD\s\$1836345390`, `CMPW\sR.*, R.*$` case ".htm": return "A" // amd64: `CMPL\s\(.*\), \$1953457454$` // arm64: `MOVD\s\$1953457454`, `CMPW\sR.*, R.*$` case ".eot": return "B" // amd64: `CMPL\s\(.*\), \$1735815982$` // arm64: `MOVD\s\$1735815982`, `CMPW\sR.*, R.*$` case ".svg": return "C" // amd64: `CMPL\s\(.*\), \$1718907950$` // arm64: `MOVD\s\$1718907950`, `CMPW\sR.*, R.*$` case ".ttf": return "D" default: return "" } } // use jump tables for type switches to concrete types. func typeSwitch(x any) int { // amd64:`JMP\s\(.*\)\(.*\)$` // arm64:`MOVD\s\(R.*\)\(R.*<<3\)`,`JMP\s\(R.*\)$` switch x.(type) { case int: return 0 case int8: return 1 case int16: return 2 case int32: return 3 case int64: return 4 } return 7 } type I interface { foo() } type J interface { bar() } type IJ interface { I J } type K interface { baz() } // use a runtime call for type switches to interface types. func interfaceSwitch(x any) int { // amd64:`CALL\truntime.interfaceSwitch`,`MOVL\t16\(AX\)`,`MOVQ\t8\(.*\)(.*\*8)` // arm64:`CALL\truntime.interfaceSwitch`,`LDAR`,`MOVWU\t16\(R0\)`,`MOVD\t\(R.*\)\(R.*\)` switch x.(type) { case I: return 1 case J: return 2 default: return 3 } } func interfaceSwitch2(x K) int { // amd64:`CALL\truntime.interfaceSwitch`,`MOVL\t16\(AX\)`,`MOVQ\t8\(.*\)(.*\*8)` // arm64:`CALL\truntime.interfaceSwitch`,`LDAR`,`MOVWU\t16\(R0\)`,`MOVD\t\(R.*\)\(R.*\)` switch x.(type) { case I: return 1 case J: return 2 default: return 3 } } func interfaceCast(x any) int { // amd64:`CALL\truntime.typeAssert`,`MOVL\t16\(AX\)`,`MOVQ\t8\(.*\)(.*\*1)` // arm64:`CALL\truntime.typeAssert`,`LDAR`,`MOVWU\t16\(R0\)`,`MOVD\t\(R.*\)\(R.*\)` if _, ok := x.(I); ok { return 3 } return 5 } func interfaceCast2(x K) int { // amd64:`CALL\truntime.typeAssert`,`MOVL\t16\(AX\)`,`MOVQ\t8\(.*\)(.*\*1)` // arm64:`CALL\truntime.typeAssert`,`LDAR`,`MOVWU\t16\(R0\)`,`MOVD\t\(R.*\)\(R.*\)` if _, ok := x.(I); ok { return 3 } return 5 } func interfaceConv(x IJ) I { // amd64:`CALL\truntime.typeAssert`,`MOVL\t16\(AX\)`,`MOVQ\t8\(.*\)(.*\*1)` // arm64:`CALL\truntime.typeAssert`,`LDAR`,`MOVWU\t16\(R0\)`,`MOVD\t\(R.*\)\(R.*\)` return x }