| // 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) | |
| } | |