From 36ecff0893e8f30c2ff659acf8c62401f4dcebf7 Mon Sep 17 00:00:00 2001 From: "Paul E. Murphy" Date: Mon, 18 Sep 2023 17:14:03 -0500 Subject: cmd/internal/obj/ppc64: generate small, shifted constants in register Check for shifted 16b constants, and transform them to avoid the load penalty. This should be much faster than loading, and reduce binary size by reducing the constant pool size. Change-Id: I6834e08be7ca88e3b77449d226d08d199db84299 Reviewed-on: https://go-review.googlesource.com/c/go/+/531119 TryBot-Result: Gopher Robot Reviewed-by: Lynn Boger Reviewed-by: Michael Pratt Reviewed-by: Matthew Dempsky Run-TryBot: Paul Murphy LUCI-TryBot-Result: Go LUCI --- test/codegen/constants.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 test/codegen/constants.go (limited to 'test/codegen') diff --git a/test/codegen/constants.go b/test/codegen/constants.go new file mode 100644 index 0000000000..756aeda5f7 --- /dev/null +++ b/test/codegen/constants.go @@ -0,0 +1,25 @@ +// asmcheck + +// Copyright 2023 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. + +package codegen + +func shifted16BitConstants(out [64]uint64) { + // ppc64x: "MOVD\t[$]8193,", "SLD\t[$]27," + out[0] = 0x0000010008000000 + // ppc64x: "MOVD\t[$]-32767", "SLD\t[$]26," + out[1] = 0xFFFFFE0004000000 + // ppc64x: "MOVD\t[$]-1", "SLD\t[$]48," + out[2] = 0xFFFF000000000000 + // ppc64x: "MOVD\t[$]65535", "SLD\t[$]44," + out[3] = 0x0FFFF00000000000 + + // ppc64x: "MOVD\t[$]i64.fffff00000000001[(]SB[)]" + out[4] = 0xFFFFF00000000001 + // ppc64x: "MOVD\t[$]i64.fffff80000000001[(]SB[)]" + out[5] = 0xFFFFF80000000001 + // ppc64x: "MOVD\t[$]i64.0ffff80000000000[(]SB[)]" + out[6] = 0x0FFFF80000000000 +} -- cgit v1.3-5-g9baa