blob: a4db35497a9a7ca51549b630247c908f9611e36d [file]
// 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.
//go:build riscv64
package cpu_test
import (
. "internal/cpu"
"internal/godebug"
"testing"
)
func TestRISCV64VectorLength(t *testing.T) {
if RISCV64.HasV && RISCV64.VLENB == 0 {
t.Fatal("VLENB should be non-zero when HasV is true")
}
}
func TestDisableZbb(t *testing.T) {
if GetGORISCV64level() > 20 {
t.Skip("skipping test: can't run on GORISCV64>rva20u64")
}
runDebugOptionsTest(t, "TestZbbDebugOption", "cpu.zbb=off")
}
func TestZbbDebugOption(t *testing.T) {
MustHaveDebugOptionsSupport(t)
if godebug.New("#cpu.zbb").Value() != "off" {
t.Skipf("skipping test: GODEBUG=cpu.zbb=off not set")
}
if RISCV64.HasZbb {
t.Errorf("RISCV64.HasZbb is true, want false")
}
}
func TestDisableV(t *testing.T) {
if GetGORISCV64level() > 22 {
t.Skip("skipping test: can't run on GORISCV64>rva22u64")
}
runDebugOptionsTest(t, "TestVDebugOption", "cpu.v=off")
}
func TestVDebugOption(t *testing.T) {
MustHaveDebugOptionsSupport(t)
if godebug.New("#cpu.v").Value() != "off" {
t.Skipf("skipping test: GODEBUG=cpu.v=off not set")
}
if RISCV64.HasV {
t.Errorf("RISCV64.HasV is true, want false")
}
}
func TestDisableZvbb(t *testing.T) {
if GetGORISCV64level() > 22 {
t.Skip("skipping test: can't run on GORISCV64>rva22u64")
}
runDebugOptionsTest(t, "TestZvbbDebugOption", "cpu.zvbb=off")
}
func TestZvbbDebugOption(t *testing.T) {
MustHaveDebugOptionsSupport(t)
if godebug.New("#cpu.zvbb").Value() != "off" {
t.Skipf("skipping test: GODEBUG=cpu.zvbb=off not set")
}
if RISCV64.HasZvbb {
t.Errorf("RISCV64.HasZvbb is true, want false")
}
}
func TestRISCV64ZvbbHasV(t *testing.T) {
if RISCV64.HasZvbb && !RISCV64.HasV {
t.Fatalf("HasV is false when HasZvbb is true, want true")
}
}
func TestRISCV64ZvbcHasV(t *testing.T) {
if RISCV64.HasZvbc && !RISCV64.HasV {
t.Fatalf("HasV is false when HasZvbc is true, want true")
}
}
func TestRISCV64ZvkgHasV(t *testing.T) {
if RISCV64.HasZvkg && !RISCV64.HasV {
t.Fatalf("HasV is false when HasZvkg is true, want true")
}
}
func TestRISCV64ZvknedHasV(t *testing.T) {
if RISCV64.HasZvkned && !RISCV64.HasV {
t.Fatalf("HasV is false when HasZvkned is true, want true")
}
}
func TestRISCV64ZvknhaHasV(t *testing.T) {
if RISCV64.HasZvknha && !RISCV64.HasV {
t.Fatalf("HasV is false when HasZvknha is true, want true")
}
}
func TestRISCV64ZvknhbHasV(t *testing.T) {
if RISCV64.HasZvknhb && !RISCV64.HasV {
t.Fatalf("HasV is false when HasZvknhb is true, want true")
}
}
func TestRISCV64ZvksedHasV(t *testing.T) {
if RISCV64.HasZvksed && !RISCV64.HasV {
t.Fatalf("HasV is false when HasZvksed is true, want true")
}
}
func TestRISCV64ZvkshHasV(t *testing.T) {
if RISCV64.HasZvksh && !RISCV64.HasV {
t.Fatalf("HasV is false when HasZvksh is true, want true")
}
}
func TestRISCV64ZvktHasV(t *testing.T) {
if RISCV64.HasZvkt && !RISCV64.HasV {
t.Fatalf("HasV is false when HasZvkt is true, want true")
}
}