| // asmcheck |
| |
| // Copyright 2025 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 |
| |
| import "math/bits" |
| |
| func f(n int) int { |
| r := 0 |
| // arm64:-"MOVD R[0-9]+, R[0-9]+" |
| // amd64:-"LEAQ" "INCQ" |
| for i := range n { |
| r += i |
| } |
| return r |
| } |
| |
| // addVW has loop body with both a flag-producing op and an induction-variable increment. |
| // It ensures that the induction increment doesn't get pointlessly spilled. |
| func addVWLike(z, x []uint, y uint) uint { |
| c := y |
| // arm64:-"MOVD R[0-9]+, R[0-9]+" |
| // amd64:-"LEAQ" "INCQ" |
| for i := range z { |
| zi, cc := bits.Add(x[i], c, 0) |
| z[i] = zi |
| c = cc |
| } |
| return c |
| } |