| // 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 "cmp" |
| |
| func isNaN[T cmp.Ordered](x T) bool { |
| return x != x |
| } |
| |
| func compare[T cmp.Ordered](x, y T) int { |
| // amd64:-"TESTB" |
| // arm64:-"MOVB" |
| xNaN := isNaN(x) |
| yNaN := isNaN(y) |
| if xNaN { |
| if yNaN { |
| return 0 |
| } |
| return -1 |
| } |
| if yNaN { |
| return +1 |
| } |
| if x < y { |
| return -1 |
| } |
| if x > y { |
| return +1 |
| } |
| return 0 |
| } |
| |
| func usesCompare(a, b int) int { |
| return compare(a, b) |
| } |