// Copyright 2026 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 main // Regression test to verify that cgocallback restores X15 = 0 as required by // ABIInternal. /* #include void go_callback_amd64(); static void call_go_callback_amd64() { // Clobber X15. uint64_t val = 42; asm volatile( "vmovdqu %0, %%xmm15;" : : "m" (val) : "xmm15"); go_callback_amd64(); } */ import "C" import ( "runtime/testdata/testprogcgo/goasm" ) func init() { register("CgoCallbackX15", CgoCallbackX15) } //export go_callback_amd64 func go_callback_amd64() { v := goasm.ReadX15() if v != 0 { println("X15 =", v) panic("non-zero X15") } } func CgoCallbackX15() { C.call_go_callback_amd64() println("OK") }