go/test
Keith Randall 14f3ca56ed cmd/internal/obj: ARM, use immediates instead of constant pool entries
When a constant doesn't fit in a single instruction, use two
paired instructions instead of the constant pool.  For example

  ADD $0xaa00bb, R0, R1

Used to rewrite to:

  MOV ?(IP), R11
  ADD R11, R0, R1

Instead, do:

  ADD $0xaa0000, R0, R1
  ADD $0xbb, R1, R1

Same number of instructions.
Good:
  4 less bytes (no constant pool entry)
  One less load.
Bad:
  Critical path is one instruction longer.

It's probably worth it to avoid the loads, they are expensive.

Dave Cheney got us some performance numbers: https://perf.golang.org/search?q=upload:20170426.1
TL;DR mean 1.37% improvement.

Change-Id: Ib206836161fdc94a3962db6f9caa635c87d57cf1
Reviewed-on: https://go-review.googlesource.com/41612
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2017-04-27 16:45:01 +00:00
..
alias3.dir [dev.typealias] cmd/compile: export/import test cases for type aliases 2017-01-20 05:55:53 +00:00
bench test/bench/go1: fix typo in parserdata_test.go comment 2017-03-22 03:23:16 +00:00
chan cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
ddd2.dir
dwarf
fixedbugs cmd/compile: zero ambiguously live variables at VARKILLs 2017-04-20 23:47:43 +00:00
import2.dir
import4.dir
interface cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
intrinsic.dir cmd/compile: intrinsics for math/bits.TrailingZerosX 2017-03-16 02:44:16 +00:00
ken
linkname.dir cmd/compile: include linknames in export data 2017-02-08 20:59:45 +00:00
method4.dir
safe
stress
syntax cmd/compile/internal/parser: improved a couple of error messages 2017-02-24 18:54:36 +00:00
uintptrescapes.dir
64bit.go
235.go
alg.go
alias.go
alias1.go
alias2.go [dev.typealias] cmd/compile: declare methods after resolving receiver type 2017-01-25 08:04:17 +00:00
alias3.go [dev.typealias] cmd/compile: export/import test cases for type aliases 2017-01-20 05:55:53 +00:00
append.go
append1.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
args.go
armimm.go cmd/internal/obj: ARM, use immediates instead of constant pool entries 2017-04-27 16:45:01 +00:00
assign.go
assign1.go
atomicload.go
bigalg.go
bigmap.go
blank.go
blank1.go
bom.go
bombad.go
bounds.go
chancap.go
chanlinear.go
char_lit.go
char_lit1.go
checkbce.go cmd/compile: improve generic rules for BCE based on AND operations. 2017-03-04 16:13:07 +00:00
clearfat.go
closedchan.go
closure.go
closure1.go
closure2.go
cmp.go
cmp6.go
cmplx.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
cmplxdivide.c runtime: make complex division c99 compatible 2017-03-15 22:45:17 +00:00
cmplxdivide.go runtime: make complex division c99 compatible 2017-03-15 22:45:17 +00:00
cmplxdivide1.go runtime: make complex division c99 compatible 2017-03-15 22:45:17 +00:00
complit.go
complit1.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
compos.go
const.go
const1.go
const2.go
const3.go
const4.go
const5.go
const6.go
convert.go
convert1.go
convert2.go
convert3.go
convlit.go
convlit1.go
convT2X.go
copy.go
copy1.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
crlf.go
ddd.go
ddd1.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
ddd2.go
decl.go
declbad.go
defer.go
deferfin.go
deferprint.go
deferprint.out
devirt.go cmd/compile: de-virtualize interface calls 2017-03-14 18:49:23 +00:00
divide.go
divmod.go
empty.go
env.go
eof.go
eof1.go
errchk
escape.go
escape2.go cmd/compile: ignore some dead code during escape analysis 2017-02-27 21:31:04 +00:00
escape2n.go
escape3.go
escape4.go
escape5.go cmd/compile: unnamed parameters do not escape 2017-03-24 17:14:00 +00:00
escape_array.go
escape_because.go cmd/compile: add explicit 'where' to EscStep data for explanations 2016-10-26 18:46:59 +00:00
escape_calls.go
escape_closure.go cmd/compile/internal/syntax: establish principled position information 2017-02-15 01:33:03 +00:00
escape_field.go
escape_iface.go
escape_indir.go
escape_level.go
escape_map.go
escape_param.go
escape_slice.go
escape_struct_param1.go
escape_struct_param2.go
escape_struct_return.go
fibo.go
finprofiled.go
float_lit.go
float_lit2.go
float_lit3.go
floatcmp.go
for.go
func.go
func1.go
func2.go
func3.go
func4.go
func5.go
func6.go
func7.go
func8.go
funcdup.go
funcdup2.go
gc.go
gc1.go
gc2.go
gcstring.go
goprint.go
goprint.out
goto.go cmd/compile: report block start for gotos jumping into blocks 2017-04-19 02:27:58 +00:00
heapsampling.go
helloworld.go
helloworld.out
if.go
import.go
import1.go
import2.go
import4.go
import5.go cmd/compile: be slightly more tolerant in case of certain syntax errors 2017-03-24 20:07:15 +00:00
import6.go cmd/compile/internal/syntax: removed gcCompat code needed to pass orig. tests 2017-02-10 01:22:30 +00:00
index.go
index0.go
index1.go
index2.go
indirect.go
indirect1.go
init.go Revert "cmd/compile: improve error message if init is directly invoked" 2017-03-06 23:48:37 +00:00
init1.go
initcomma.go
initialize.go
initializerr.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
initloop.go
inline.go
inline_caller.go runtime: skip logical frames in runtime.Caller 2017-04-18 19:56:30 +00:00
inline_callers.go runtime: include inlined calls in result of CallersFrames 2017-03-29 17:27:38 +00:00
inline_literal.go cmd/compile: copy literals when inlining 2017-03-03 21:29:32 +00:00
inline_variadic.go cmd/compile: generate code that type checks when inlining variadic functions 2016-11-30 19:46:00 +00:00
int_lit.go
intcvt.go
intrinsic.go
intrinsic_atomic.go
iota.go
label.go
label1.go cmd/compile/internal/gc: don't panic on continue in switch 2017-04-12 14:27:45 +00:00
linkmain.go
linkmain_run.go
linkname.go cmd/compile: include linknames in export data 2017-02-08 20:59:45 +00:00
linkobj.go
linkx.go
linkx_run.go
literal.go
live.go runtime: add mapdelete_fast* 2017-03-21 06:07:24 +00:00
live1.go
live2.go cmd/compile: mark temps with new AutoTemp flag, and use it. 2016-10-31 19:38:50 +00:00
live_syscall.go cmd/compile: mark temps with new AutoTemp flag, and use it. 2016-10-31 19:38:50 +00:00
locklinear.go test: deflake locklinear again 2017-04-05 18:46:31 +00:00
loopbce.go cmd/compile: check loop rescheduling with stack bound, not counter 2017-03-08 18:52:12 +00:00
makenew.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
mallocfin.go
map.go
map1.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
maplinear.go
method.go
method1.go
method2.go test: avoid matching file names in errcheck 2016-10-18 05:32:37 +00:00
method3.go
method4.go
method5.go
named.go
named1.go
nil.go
nilcheck.go
nilptr.go
nilptr2.go
nilptr3.go cmd/compile: re-enable nilcheck removal in same block 2017-02-17 19:19:59 +00:00
nilptr4.go
nosplit.go cmd/internal/objabi: extract shared functionality from obj 2017-04-19 00:00:09 +00:00
notinheap.go cmd/compile/internal/gc: inline typedcl0 and typedcl1 2017-02-01 22:52:32 +00:00
notinheap2.go cmd/compile: add go:notinheap type pragma 2016-10-15 17:58:14 +00:00
nowritebarrier.go cmd/compile, runtime: add go:yeswritebarrierrec pragma 2016-10-15 17:58:11 +00:00
nul1.go cmd/compile/internal/gc: enable new parser by default 2016-10-25 22:28:40 +00:00
opt_branchlikely.go cmd/compile: insert scheduling checks on loop backedges 2017-01-09 21:01:29 +00:00
parentype.go
peano.go
phiopt.go
print.go
print.out
printbig.go
printbig.out
prove.go cmd/compile/internal/gc: improve comparison with constant strings 2017-04-07 15:40:25 +00:00
range.go cmd/compile: fix assignment order in string range loop 2017-02-28 08:23:52 +00:00
recover.go
recover1.go
recover2.go
recover3.go
recover4.go
recover5.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
reflectmethod1.go
reflectmethod2.go
reflectmethod3.go
reflectmethod4.go
rename.go
rename1.go
reorder.go cmd/compile: Ensure left-to-right assignment 2017-02-11 21:46:21 +00:00
reorder2.go
return.go
rotate.go
rotate0.go
rotate1.go
rotate2.go
rotate3.go
run.go test: allow flags in run action 2017-03-29 17:22:00 +00:00
rune.go
runtime.go cmd/compile/internal/gc: separate builtin and real runtime packages 2017-03-01 01:06:32 +00:00
shift1.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
shift2.go
sieve.go
sigchld.go
sigchld.out
simassign.go
sinit.go
sinit_run.go
sizeof.go
slice3.go
slice3err.go
slicecap.go
sliceopt.go cmd/compile: use masks instead of branches for slicing 2016-10-27 20:22:49 +00:00
solitaire.go
stack.go
strength.go
string_lit.go
stringrange.go
struct0.go
switch.go
switch2.go
switch3.go
switch4.go
switch5.go cmd/compile/internal/syntax: removed gcCompat code needed to pass orig. tests 2017-02-10 01:22:30 +00:00
switch6.go cmd/compile: improve error for wrong type in switch 2017-02-02 17:36:43 +00:00
tinyfin.go
torture.go
turing.go
typecheck.go
typecheckloop.go
typeswitch.go
typeswitch1.go
typeswitch2.go cmd/compile/internal/syntax: removed gcCompat code needed to pass orig. tests 2017-02-10 01:22:30 +00:00
typeswitch3.go cmd/compile: add test for non interface type switch 2017-03-25 22:52:54 +00:00
uintptrescapes.go
uintptrescapes2.go cmd/compile: mark temps with new AutoTemp flag, and use it. 2016-10-31 19:38:50 +00:00
undef.go
utf.go
varerr.go
varinit.go
writebarrier.go cmd/compile: do not use "oaslit" for global 2017-02-07 17:23:23 +00:00
zerodivide.go test: lock in test for _ assignment evaluation/zerodivide panic 2016-12-23 17:35:24 +00:00