| // asmcheck | |
| // Copyright 2022 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 | |
| type I interface{ M() } | |
| func NopConvertIface(x I) I { | |
| // amd64:-`.*runtime.convI2I` | |
| return I(x) | |
| } | |
| func NopConvertGeneric[T any](x T) T { | |
| // amd64:-`.*runtime.convI2I` | |
| return T(x) | |
| } | |
| var NopConvertGenericIface = NopConvertGeneric[I] | |
| func ConvToM(x any) I { | |
| // amd64:`CALL runtime.typeAssert`,`MOVL 16\(.*\)`,`MOVQ 8\(.*\)(.*\*1)` | |
| // arm64:`CALL runtime.typeAssert`,`LDAR`,`MOVWU`,`MOVD \(R.*\)\(R.*\)` | |
| return x.(I) | |
| } | |
| func e1(x any, y *int) bool { | |
| // amd64:-`.*faceeq`,`SETEQ` | |
| // arm64:-`.*faceeq`,`CSET EQ` | |
| return x == y | |
| } | |
| func e2(x any, y *int) bool { | |
| // amd64:-`.*faceeq`,`SETEQ` | |
| // arm64:-`.*faceeq`,`CSET EQ` | |
| return y == x | |
| } | |
| type E *int | |
| func e3(x any, y E) bool { | |
| // amd64:-`.*faceeq`,`SETEQ` | |
| // arm64:-`.*faceeq`,`CSET EQ` | |
| return x == y | |
| } | |
| type T int | |
| func (t *T) M() {} | |
| func i1(x I, y *T) bool { | |
| // amd64:-`.*faceeq`,`SETEQ` | |
| // arm64:-`.*faceeq`,`CSET EQ` | |
| return x == y | |
| } | |
| func i2(x I, y *T) bool { | |
| // amd64:-`.*faceeq`,`SETEQ` | |
| // arm64:-`.*faceeq`,`CSET EQ` | |
| return y == x | |
| } | |