1
0
mirror of https://github.com/golang/go synced 2024-11-18 08:14:41 -07:00
go/test
Lynn Boger a1550d3ca3 cmd/compile: use isel with variable shifts on ppc64x
This changes the code generated for variable length shift
counts to use isel instead of instructions that set and
read the carry flag.

This reduces the generated code for shifts like this
by 1 instruction and avoids the use of instructions to
set and read the carry flag.

This sequence can be found in strconv with these results
on power9:

Atof64Decimal                          71.6ns ± 0%  68.3ns ± 0%   -4.61%
Atof64Float                            95.3ns ± 0%  90.9ns ± 0%   -4.62%
Atof64FloatExp                          153ns ± 0%   149ns ± 0%   -2.61%
Atof64Big                               234ns ± 0%   232ns ± 0%   -0.85%
Atof64RandomBits                        348ns ± 0%   369ns ± 0%   +6.03%
Atof64RandomFloats                      262ns ± 0%   262ns ± 0%     ~
Atof32Decimal                          72.0ns ± 0%  68.2ns ± 0%   -5.28%
Atof32Float                            92.1ns ± 0%  87.1ns ± 0%   -5.43%
Atof32FloatExp                          159ns ± 0%   158ns ± 0%   -0.63%
Atof32Random                            194ns ± 0%   191ns ± 0%   -1.55%

Some tests in codegen/shift.go are enabled to verify the
expected instructions are generated.

Change-Id: I968715d10ada405a8c46132bf19b8ed9b85796d1
Reviewed-on: https://go-review.googlesource.com/c/go/+/227337
Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-04-09 19:18:56 +00:00
..
alias3.dir
bench test/bench/go1: add go.mod file 2019-03-06 18:53:12 +00:00
chan test/chan: fix trivial typos 2020-03-25 22:22:20 +00:00
closure3.dir cmd/compile: skip escape analysis diagnostics for OADDR 2019-04-02 16:34:03 +00:00
codegen cmd/compile: use isel with variable shifts on ppc64x 2020-04-09 19:18:56 +00:00
ddd2.dir
dwarf
fixedbugs all: remove darwin/arm build-tags and files 2020-04-08 18:35:43 +00:00
import2.dir
import4.dir
interface test: add tests for runtime.itab.init 2019-11-06 09:09:59 +00:00
intrinsic.dir
ken all: fix typos 2019-09-08 17:28:20 +00:00
linkname.dir cmd/compile: trim function name prefix from escape diagnostics 2019-09-16 15:30:51 +00:00
method4.dir
oldescape_linkname.dir cmd/compile: update escape analysis tests for newescape 2019-04-16 16:20:39 +00:00
retjmp.dir
runtime test: remove -newescape from regress tests 2019-08-28 19:27:20 +00:00
stress
syntax cmd/compile/internal/syntax: better error when an assignment is used in value context 2020-02-21 22:57:52 +00:00
uintptrescapes.dir
64bit.go
235.go
alg.go
alias1.go
alias2.go
alias3.go
alias.go
align.go
append1.go
append.go
args.go
armimm.go
assign1.go
assign.go
atomicload.go
bigalg.go
bigmap.go
blank1.go test, test/fixedbugs, crypto/x509, go/internal/gccgoimporter: fix typos 2020-03-29 17:12:56 +00:00
blank.go
bom.go
bombad.go
bounds.go
chancap.go
chanlinear.go test, test/fixedbugs, crypto/x509, go/internal/gccgoimporter: fix typos 2020-03-29 17:12:56 +00:00
char_lit1.go
char_lit.go
checkbce.go cmd/compile: fix ordering for short-circuiting ops 2019-03-06 20:04:07 +00:00
clearfat.go
closedchan.go
closure1.go
closure2.go all: fix typos 2019-09-08 17:28:20 +00:00
closure3.go
closure4.go
closure.go
cmp6.go
cmp.go
cmplx.go cmd/compile: rewrite f(g()) for multi-value g() during typecheck 2019-03-14 21:00:20 +00:00
cmplxdivide1.go
cmplxdivide.c
cmplxdivide.go
complit1.go cmd/compile: simplify OPTRLIT handling 2019-09-26 18:45:53 +00:00
complit.go
compos.go
const1.go cmd/compile: fix ICE from invalid operations on float/complex constants 2019-03-28 17:46:55 +00:00
const2.go
const3.go
const4.go
const5.go
const6.go
const.go cmd/compile: apply constant folding to ORUNESTR 2019-09-26 23:54:29 +00:00
convert1.go
convert2.go
convert3.go
convert.go
convlit1.go
convlit.go cmd/compile: rewrite untyped constant conversion logic 2019-09-06 23:15:48 +00:00
convT2X.go
copy1.go cmd/compile: rewrite f(g()) for multi-value g() during typecheck 2019-03-14 21:00:20 +00:00
copy.go
crlf.go
ddd1.go cmd/compile: rewrite untyped constant conversion logic 2019-09-06 23:15:48 +00:00
ddd2.go
ddd.go
decl.go
declbad.go
defer.go
defererrcheck.go test: re-enable open-coded defer test on riscv64 2020-02-26 16:54:17 +00:00
deferfin.go
defernil.go cmd/compile: on Wasm and AIX, let deferred nil function panic at invocation 2019-10-16 00:05:37 +00:00
deferprint.go
deferprint.out
devirt.go
divide.go
divmod.go
empty.go
env.go
eof1.go
eof.go
escape2.go test: add regress test for #27557 2019-09-25 17:06:15 +00:00
escape2n.go test: add regress test for #27557 2019-09-25 17:06:15 +00:00
escape3.go
escape4.go cmd/compile: skip escape analysis diagnostics for OADDR 2019-04-02 16:34:03 +00:00
escape5.go cmd/compile: silence esc diagnostics about directiface OCONVIFACEs 2019-09-03 17:52:06 +00:00
escape_array.go cmd/compile: trim function name prefix from escape diagnostics 2019-09-16 15:30:51 +00:00
escape_calls.go cmd/compile: trim function name prefix from escape diagnostics 2019-09-16 15:30:51 +00:00
escape_closure.go cmd/compile: trim function name prefix from escape diagnostics 2019-09-16 15:30:51 +00:00
escape_field.go cmd/compile: trim function name prefix from escape diagnostics 2019-09-16 15:30:51 +00:00
escape_goto.go cmd/compile: preserve loop depth when evaluating block 2019-09-06 01:35:46 +00:00
escape_hash_maphash.go hash/maphash: mark call into runtime hash function as not escaping 2019-11-16 20:31:45 +00:00
escape_iface.go cmd/compile: use underlying OCOMPLIT's position for OPTRLIT 2019-09-25 17:07:09 +00:00
escape_indir.go cmd/compile: trim function name prefix from escape diagnostics 2019-09-16 15:30:51 +00:00
escape_level.go cmd/compile: silence esc diagnostics about directiface OCONVIFACEs 2019-09-03 17:52:06 +00:00
escape_map.go cmd/compile: silence esc diagnostics about directiface OCONVIFACEs 2019-09-03 17:52:06 +00:00
escape_param.go cmd/compile: reimplement parameter leak encoding 2019-10-07 18:50:14 +00:00
escape_runtime_atomic.go test: fix escape_runtime_atomic.go 2019-04-17 22:55:26 +00:00
escape_selfassign.go test: add regress test cases for self-assignment 2019-04-17 16:36:56 +00:00
escape_slice.go cmd/compile: make isSmallMakeSlice checks slice cap only 2020-03-31 21:51:51 +00:00
escape_struct_param1.go cmd/compile: trim function name prefix from escape diagnostics 2019-09-16 15:30:51 +00:00
escape_struct_param2.go cmd/compile: trim function name prefix from escape diagnostics 2019-09-16 15:30:51 +00:00
escape_struct_return.go test: remove -newescape from regress tests 2019-08-28 19:27:20 +00:00
escape_sync_atomic.go runtime/internal/atomic: remove bad go:noescape annotations on Loadp 2019-04-17 19:09:15 +00:00
escape_unsafe.go cmd/compile: silence esc diagnostics about directiface OCONVIFACEs 2019-09-03 17:52:06 +00:00
escape.go
fibo.go
finprofiled.go all: fix typos 2019-09-08 17:28:20 +00:00
float_lit2.go
float_lit3.go
float_lit.go
floatcmp.go
for.go
func1.go
func2.go
func3.go
func4.go
func5.go
func6.go
func7.go
func8.go
func.go
funcdup2.go
funcdup.go
gc1.go
gc2.go
gc.go
gcgort.go
gcstring.go
goprint.go test: adjust a test to work with js/wasm's background goroutine 2019-10-10 19:38:06 +00:00
goprint.out
goto.go
heapsampling.go test: improve test coverage for heap sampling 2019-03-07 21:05:15 +00:00
helloworld.go
helloworld.out
if.go
import1.go
import2.go
import4.go
import5.go
import6.go
import.go
index0.go
index1.go
index2.go
index.go all: fix typos 2019-09-08 17:28:20 +00:00
indirect1.go
indirect.go
init1.go
init.go cmd/compile: reorganize init functions 2019-03-18 20:10:55 +00:00
initcomma.go
initempty.go cmd/compile: add test for skipping empty init functions 2019-11-04 20:19:15 +00:00
initialize.go
initializerr.go
initloop.go
inline_big.go cmd/compile: output cost while inlining function with Debug['m'] > 1 2020-02-26 14:44:24 +00:00
inline_caller.go
inline_callers.go
inline_literal.go
inline_math_bits_rotate.go
inline_sync.go test: re-enable atomic intrinsic related tests on riscv64 2020-03-25 01:11:15 +00:00
inline_variadic.go
inline.go cmd/compile: allow mid-stack inlining when there is a cycle of recursion 2020-04-03 21:43:52 +00:00
int_lit.go
intcvt.go
intrinsic_atomic.go test: re-enable atomic intrinsic related tests on riscv64 2020-03-25 01:11:15 +00:00
intrinsic.go
iota.go
label1.go
label.go
linkmain_run.go test: avoid writing temporary files to GOROOT 2019-11-18 14:40:07 +00:00
linkmain.go
linkname.go test: remove -newescape from regress tests 2019-08-28 19:27:20 +00:00
linkobj.go
linkx_run.go cmd/compile: don't statically copy string-typed variables 2019-10-03 18:08:32 +00:00
linkx.go [dev.link] all: clean up some TODOs 2019-11-01 20:13:05 +00:00
literal2.go
literal.go
live1.go
live2.go cmd/compile: extend ssa.go to handle 1-element array and 1-field struct 2019-09-03 19:33:04 +00:00
live_syscall.go cmd/compile: trim function name prefix from escape diagnostics 2019-09-16 15:30:51 +00:00
live.go cmd/compile,cmd/link: fix and re-enable open-coded defers on riscv64 2020-01-29 16:34:44 +00:00
locklinear.go
loopbce.go cmd/compile: detect indvars that are bound by other indvars 2019-09-26 18:47:12 +00:00
makechan.go
makemap.go
makenew.go
mallocfin.go
map1.go
map.go
mapclear.go
maplinear.go
mergemul.go
method1.go
method2.go
method3.go
method4.go
method5.go
method6.go
method7.go
method.go
named1.go
named.go
nil.go
nilcheck.go
nilptr2.go test: use a real use function in nilptr2.go 2019-05-11 03:02:33 +00:00
nilptr3.go
nilptr4.go
nilptr5_aix.go
nilptr5_wasm.go
nilptr5.go
nilptr_aix.go
nilptr.go
nosplit.go runtime: static lock ranking for the runtime (enabled by GOEXPERIMENT) 2020-04-07 21:51:03 +00:00
notinheap2.go
notinheap3.go
notinheap.go
nowritebarrier.go cmd/compile: allow mid-stack inlining when there is a cycle of recursion 2020-04-03 21:43:52 +00:00
nul1.go
opt_branchlikely.go all: fix typos 2019-09-08 17:28:20 +00:00
parentype.go
peano.go
phiopt.go
print.go
print.out
printbig.go
printbig.out
prove.go cmd/compile: remove Greater* and Geq* generic integer ops 2020-02-26 13:11:53 +00:00
range.go
README.md
recover1.go
recover2.go cmd/compile,runtime: generate hash functions only for types which are map keys 2019-09-03 20:41:29 +00:00
recover3.go
recover4.go
recover5.go
recover.go
reflectmethod1.go
reflectmethod2.go
reflectmethod3.go
reflectmethod4.go
rename1.go cmd/compile: rewrite untyped constant conversion logic 2019-09-06 23:15:48 +00:00
rename.go
reorder2.go
reorder.go
retjmp.go
return.go
rotate0.go
rotate1.go
rotate2.go
rotate3.go
rotate.go
run.go test: make runindir tests pass regardless of whether module mode is in use 2020-03-25 14:19:25 +00:00
rune.go
runtime.go
shift1.go cmd/compile: rewrite untyped constant conversion logic 2019-09-06 23:15:48 +00:00
shift2.go
sieve.go
sigchld.go
sigchld.out
simassign.go
sinit_run.go test: avoid writing temporary files to GOROOT 2019-11-18 14:40:07 +00:00
sinit.go
sizeof.go
slice3.go
slice3err.go
slicecap.go
sliceopt.go
solitaire.go
stack.go
stackobj2.go
stackobj3.go
stackobj.go
strcopy.go
strength.go all: fix typos 2019-09-08 17:28:20 +00:00
string_lit.go
stringrange.go
struct0.go
switch2.go
switch3.go
switch4.go
switch5.go
switch6.go
switch7.go
switch.go
tinyfin.go
torture.go
turing.go
typecheck.go
typecheckloop.go
typeswitch1.go
typeswitch2.go cmd/compile: move duplicate type-case checking into typecheck 2019-09-11 23:33:11 +00:00
typeswitch2b.go cmd/compile/internal/gc: reword "declared and not used" error message 2019-10-28 23:34:13 +00:00
typeswitch3.go
typeswitch.go
uintptrescapes2.go cmd/compile: fix //go:uintptrescapes for basic method calls 2019-11-05 00:26:30 +00:00
uintptrescapes3.go cmd/compile: fix //go:uintptrescapes for basic method calls 2019-11-05 00:26:30 +00:00
uintptrescapes.go
undef.go
utf.go
varerr.go
varinit.go
winbatch.go build: force all Windows batch files to CRLF 2020-03-22 08:42:38 +00:00
writebarrier.go cmd/compile: better write barrier removal when initializing new objects 2019-03-18 21:16:19 +00:00
zerodivide.go

The test directory contains tests of the Go tool chain and runtime. It includes black box tests, regression tests, and error output tests. They are run as part of all.bash.

To run just these tests, execute:

../bin/go run run.go

Standard library tests should be written as regular Go tests in the appropriate package.

The tool chain and runtime also have regular Go tests in their packages. The main reasons to add a new test to this directory are:

  • it is most naturally expressed using the test runner; or
  • it is also applicable to gccgo and other Go tool chains.