From 33a9f01729cb88b80f915ae6d2ae9779106b9f0c Mon Sep 17 00:00:00 2001 From: Alberto Donizetti Date: Fri, 3 Nov 2017 11:11:27 +0100 Subject: [PATCH] =?utf8?q?cmd/compile:=20add=20mul=20by=20=C2=B12=E2=81=BF?= =?utf8?q?=20code-generation=20tests=20for=20arm/arm64?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- src/cmd/compile/internal/gc/asm_test.go | 40 +++++++++++++++++++++++++ 1 file changed, 40 insertions(+) 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 { -- 2.48.1