// asmcheck -gcflags=-spectre=index

//go:build amd64

// Copyright 2020 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

func IndexArray(x *[10]int, i int) int {
	// amd64:`CMOVQCC`
	return x[i]
}

func IndexString(x string, i int) byte {
	// amd64:`CMOVQ(LS|CC)`
	return x[i]
}

func IndexSlice(x []float64, i int) float64 {
	// amd64:`CMOVQ(LS|CC)`
	return x[i]
}

func SliceArray(x *[10]int, i, j int) []int {
	// amd64:`CMOVQHI`
	return x[i:j]
}

func SliceString(x string, i, j int) string {
	// amd64:`CMOVQHI`
	return x[i:j]
}

func SliceSlice(x []float64, i, j int) []float64 {
	// amd64:`CMOVQHI`
	return x[i:j]
}
