From: Alberto Donizetti Date: Fri, 3 Nov 2017 10:11:27 +0000 (+0100) Subject: cmd/compile: add mul by ±2ⁿ code-generation tests for arm/arm64 X-Git-Tag: go1.10beta1~400 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=33a9f01729cb88b80f915ae6d2ae9779106b9f0c;p=gostls13.git cmd/compile: add mul by ±2ⁿ code-generation tests for arm/arm64 This change adds code generation tests for multiplication by ±2ⁿ for arm and arm64, in preparation for a future CL which will remove the relevant architecture-specific SSA rules (the reduction is already performed by rules in generic.rules added in CL 36323). Change-Id: Iebdd5c3bb2fc632c85888569ff0c49f78569a862 Reviewed-on: https://go-review.googlesource.com/75752 Reviewed-by: Cherry Zhang --- diff --git a/src/cmd/compile/internal/gc/asm_test.go b/src/cmd/compile/internal/gc/asm_test.go index 57853001fd..78c6c5e2b7 100644 --- a/src/cmd/compile/internal/gc/asm_test.go +++ b/src/cmd/compile/internal/gc/asm_test.go @@ -1816,6 +1816,26 @@ var linuxS390XTests = []*asmTest{ } var linuxARMTests = []*asmTest{ + // multiplication by powers of two + { + fn: ` + func $(n int) int { + return 16*n + } + `, + pos: []string{"\tSLL\t[$]4"}, + neg: []string{"\tMUL\t"}, + }, + { + fn: ` + func $(n int) int { + return -32*n + } + `, + pos: []string{"\tSLL\t[$]5"}, + neg: []string{"\tMUL\t"}, + }, + { fn: ` func f0(x uint32) uint32 { @@ -1943,6 +1963,26 @@ var linuxARMTests = []*asmTest{ } var linuxARM64Tests = []*asmTest{ + // multiplication by powers of two + { + fn: ` + func $(n int) int { + return 64*n + } + `, + pos: []string{"\tLSL\t[$]6"}, + neg: []string{"\tMUL\t"}, + }, + { + fn: ` + func $(n int) int { + return -128*n + } + `, + pos: []string{"\tLSL\t[$]7"}, + neg: []string{"\tMUL\t"}, + }, + { fn: ` func f0(x uint64) uint64 {