// Copyright 2016 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 s390x

import (
	"cmd/internal/obj"
)

// This file contains utility functions for use when
// assembling vector instructions.

// vop returns the opcode, element size and condition
// setting for the given (possibly extended) mnemonic.
func vop(as obj.As) (opcode, es, cs uint32) {
	switch as {
	default:
		return 0, 0, 0
	case AVA:
		return op_VA, 0, 0
	case AVAB:
		return op_VA, 0, 0
	case AVAH:
		return op_VA, 1, 0
	case AVAF:
		return op_VA, 2, 0
	case AVAG:
		return op_VA, 3, 0
	case AVAQ:
		return op_VA, 4, 0
	case AVACC:
		return op_VACC, 0, 0
	case AVACCB:
		return op_VACC, 0, 0
	case AVACCH:
		return op_VACC, 1, 0
	case AVACCF:
		return op_VACC, 2, 0
	case AVACCG:
		return op_VACC, 3, 0
	case AVACCQ:
		return op_VACC, 4, 0
	case AVAC:
		return op_VAC, 0, 0
	case AVACQ:
		return op_VAC, 4, 0
	case AVACCC:
		return op_VACCC, 0, 0
	case AVACCCQ:
		return op_VACCC, 4, 0
	case AVN:
		return op_VN, 0, 0
	case AVNC:
		return op_VNC, 0, 0
	case AVAVG:
		return op_VAVG, 0, 0
	case AVAVGB:
		return op_VAVG, 0, 0
	case AVAVGH:
		return op_VAVG, 1, 0
	case AVAVGF:
		return op_VAVG, 2, 0
	case AVAVGG:
		return op_VAVG, 3, 0
	case AVAVGL:
		return op_VAVGL, 0, 0
	case AVAVGLB:
		return op_VAVGL, 0, 0
	case AVAVGLH:
		return op_VAVGL, 1, 0
	case AVAVGLF:
		return op_VAVGL, 2, 0
	case AVAVGLG:
		return op_VAVGL, 3, 0
	case AVCKSM:
		return op_VCKSM, 0, 0
	case AVCEQ:
		return op_VCEQ, 0, 0
	case AVCEQB:
		return op_VCEQ, 0, 0
	case AVCEQH:
		return op_VCEQ, 1, 0
	case AVCEQF:
		return op_VCEQ, 2, 0
	case AVCEQG:
		return op_VCEQ, 3, 0
	case AVCEQBS:
		return op_VCEQ, 0, 1
	case AVCEQHS:
		return op_VCEQ, 1, 1
	case AVCEQFS:
		return op_VCEQ, 2, 1
	case AVCEQGS:
		return op_VCEQ, 3, 1
	case AVCH:
		return op_VCH, 0, 0
	case AVCHB:
		return op_VCH, 0, 0
	case AVCHH:
		return op_VCH, 1, 0
	case AVCHF:
		return op_VCH, 2, 0
	case AVCHG:
		return op_VCH, 3, 0
	case AVCHBS:
		return op_VCH, 0, 1
	case AVCHHS:
		return op_VCH, 1, 1
	case AVCHFS:
		return op_VCH, 2, 1
	case AVCHGS:
		return op_VCH, 3, 1
	case AVCHL:
		return op_VCHL, 0, 0
	case AVCHLB:
		return op_VCHL, 0, 0
	case AVCHLH:
		return op_VCHL, 1, 0
	case AVCHLF:
		return op_VCHL, 2, 0
	case AVCHLG:
		return op_VCHL, 3, 0
	case AVCHLBS:
		return op_VCHL, 0, 1
	case AVCHLHS:
		return op_VCHL, 1, 1
	case AVCHLFS:
		return op_VCHL, 2, 1
	case AVCHLGS:
		return op_VCHL, 3, 1
	case AVCLZ:
		return op_VCLZ, 0, 0
	case AVCLZB:
		return op_VCLZ, 0, 0
	case AVCLZH:
		return op_VCLZ, 1, 0
	case AVCLZF:
		return op_VCLZ, 2, 0
	case AVCLZG:
		return op_VCLZ, 3, 0
	case AVCTZ:
		return op_VCTZ, 0, 0
	case AVCTZB:
		return op_VCTZ, 0, 0
	case AVCTZH:
		return op_VCTZ, 1, 0
	case AVCTZF:
		return op_VCTZ, 2, 0
	case AVCTZG:
		return op_VCTZ, 3, 0
	case AVEC:
		return op_VEC, 0, 0
	case AVECB:
		return op_VEC, 0, 0
	case AVECH:
		return op_VEC, 1, 0
	case AVECF:
		return op_VEC, 2, 0
	case AVECG:
		return op_VEC, 3, 0
	case AVECL:
		return op_VECL, 0, 0
	case AVECLB:
		return op_VECL, 0, 0
	case AVECLH:
		return op_VECL, 1, 0
	case AVECLF:
		return op_VECL, 2, 0
	case AVECLG:
		return op_VECL, 3, 0
	case AVERIM:
		return op_VERIM, 0, 0
	case AVERIMB:
		return op_VERIM, 0, 0
	case AVERIMH:
		return op_VERIM, 1, 0
	case AVERIMF:
		return op_VERIM, 2, 0
	case AVERIMG:
		return op_VERIM, 3, 0
	case AVERLL:
		return op_VERLL, 0, 0
	case AVERLLB:
		return op_VERLL, 0, 0
	case AVERLLH:
		return op_VERLL, 1, 0
	case AVERLLF:
		return op_VERLL, 2, 0
	case AVERLLG:
		return op_VERLL, 3, 0
	case AVERLLV:
		return op_VERLLV, 0, 0
	case AVERLLVB:
		return op_VERLLV, 0, 0
	case AVERLLVH:
		return op_VERLLV, 1, 0
	case AVERLLVF:
		return op_VERLLV, 2, 0
	case AVERLLVG:
		return op_VERLLV, 3, 0
	case AVESLV:
		return op_VESLV, 0, 0
	case AVESLVB:
		return op_VESLV, 0, 0
	case AVESLVH:
		return op_VESLV, 1, 0
	case AVESLVF:
		return op_VESLV, 2, 0
	case AVESLVG:
		return op_VESLV, 3, 0
	case AVESL:
		return op_VESL, 0, 0
	case AVESLB:
		return op_VESL, 0, 0
	case AVESLH:
		return op_VESL, 1, 0
	case AVESLF:
		return op_VESL, 2, 0
	case AVESLG:
		return op_VESL, 3, 0
	case AVESRA:
		return op_VESRA, 0, 0
	case AVESRAB:
		return op_VESRA, 0, 0
	case AVESRAH:
		return op_VESRA, 1, 0
	case AVESRAF:
		return op_VESRA, 2, 0
	case AVESRAG:
		return op_VESRA, 3, 0
	case AVESRAV:
		return op_VESRAV, 0, 0
	case AVESRAVB:
		return op_VESRAV, 0, 0
	case AVESRAVH:
		return op_VESRAV, 1, 0
	case AVESRAVF:
		return op_VESRAV, 2, 0
	case AVESRAVG:
		return op_VESRAV, 3, 0
	case AVESRL:
		return op_VESRL, 0, 0
	case AVESRLB:
		return op_VESRL, 0, 0
	case AVESRLH:
		return op_VESRL, 1, 0
	case AVESRLF:
		return op_VESRL, 2, 0
	case AVESRLG:
		return op_VESRL, 3, 0
	case AVESRLV:
		return op_VESRLV, 0, 0
	case AVESRLVB:
		return op_VESRLV, 0, 0
	case AVESRLVH:
		return op_VESRLV, 1, 0
	case AVESRLVF:
		return op_VESRLV, 2, 0
	case AVESRLVG:
		return op_VESRLV, 3, 0
	case AVX:
		return op_VX, 0, 0
	case AVFAE:
		return op_VFAE, 0, 0
	case AVFAEB:
		return op_VFAE, 0, 0
	case AVFAEH:
		return op_VFAE, 1, 0
	case AVFAEF:
		return op_VFAE, 2, 0
	case AVFAEBS:
		return op_VFAE, 0, 1
	case AVFAEHS:
		return op_VFAE, 1, 1
	case AVFAEFS:
		return op_VFAE, 2, 1
	case AVFAEZB:
		return op_VFAE, 0, 2
	case AVFAEZH:
		return op_VFAE, 1, 2
	case AVFAEZF:
		return op_VFAE, 2, 2
	case AVFAEZBS:
		return op_VFAE, 0, 3
	case AVFAEZHS:
		return op_VFAE, 1, 3
	case AVFAEZFS:
		return op_VFAE, 2, 3
	case AVFEE:
		return op_VFEE, 0, 0
	case AVFEEB:
		return op_VFEE, 0, 0
	case AVFEEH:
		return op_VFEE, 1, 0
	case AVFEEF:
		return op_VFEE, 2, 0
	case AVFEEBS:
		return op_VFEE, 0, 1
	case AVFEEHS:
		return op_VFEE, 1, 1
	case AVFEEFS:
		return op_VFEE, 2, 1
	case AVFEEZB:
		return op_VFEE, 0, 2
	case AVFEEZH:
		return op_VFEE, 1, 2
	case AVFEEZF:
		return op_VFEE, 2, 2
	case AVFEEZBS:
		return op_VFEE, 0, 3
	case AVFEEZHS:
		return op_VFEE, 1, 3
	case AVFEEZFS:
		return op_VFEE, 2, 3
	case AVFENE:
		return op_VFENE, 0, 0
	case AVFENEB:
		return op_VFENE, 0, 0
	case AVFENEH:
		return op_VFENE, 1, 0
	case AVFENEF:
		return op_VFENE, 2, 0
	case AVFENEBS:
		return op_VFENE, 0, 1
	case AVFENEHS:
		return op_VFENE, 1, 1
	case AVFENEFS:
		return op_VFENE, 2, 1
	case AVFENEZB:
		return op_VFENE, 0, 2
	case AVFENEZH:
		return op_VFENE, 1, 2
	case AVFENEZF:
		return op_VFENE, 2, 2
	case AVFENEZBS:
		return op_VFENE, 0, 3
	case AVFENEZHS:
		return op_VFENE, 1, 3
	case AVFENEZFS:
		return op_VFENE, 2, 3
	case AVFA:
		return op_VFA, 0, 0
	case AVFADB:
		return op_VFA, 3, 0
	case AWFADB:
		return op_VFA, 3, 0
	case AWFK:
		return op_WFK, 0, 0
	case AWFKDB:
		return op_WFK, 3, 0
	case AVFCE:
		return op_VFCE, 0, 0
	case AVFCEDB:
		return op_VFCE, 3, 0
	case AVFCEDBS:
		return op_VFCE, 3, 1
	case AWFCEDB:
		return op_VFCE, 3, 0
	case AWFCEDBS:
		return op_VFCE, 3, 1
	case AVFCH:
		return op_VFCH, 0, 0
	case AVFCHDB:
		return op_VFCH, 3, 0
	case AVFCHDBS:
		return op_VFCH, 3, 1
	case AWFCHDB:
		return op_VFCH, 3, 0
	case AWFCHDBS:
		return op_VFCH, 3, 1
	case AVFCHE:
		return op_VFCHE, 0, 0
	case AVFCHEDB:
		return op_VFCHE, 3, 0
	case AVFCHEDBS:
		return op_VFCHE, 3, 1
	case AWFCHEDB:
		return op_VFCHE, 3, 0
	case AWFCHEDBS:
		return op_VFCHE, 3, 1
	case AWFC:
		return op_WFC, 0, 0
	case AWFCDB:
		return op_WFC, 3, 0
	case AVCDG:
		return op_VCDG, 0, 0
	case AVCDGB:
		return op_VCDG, 3, 0
	case AWCDGB:
		return op_VCDG, 3, 0
	case AVCDLG:
		return op_VCDLG, 0, 0
	case AVCDLGB:
		return op_VCDLG, 3, 0
	case AWCDLGB:
		return op_VCDLG, 3, 0
	case AVCGD:
		return op_VCGD, 0, 0
	case AVCGDB:
		return op_VCGD, 3, 0
	case AWCGDB:
		return op_VCGD, 3, 0
	case AVCLGD:
		return op_VCLGD, 0, 0
	case AVCLGDB:
		return op_VCLGD, 3, 0
	case AWCLGDB:
		return op_VCLGD, 3, 0
	case AVFD:
		return op_VFD, 0, 0
	case AVFDDB:
		return op_VFD, 3, 0
	case AWFDDB:
		return op_VFD, 3, 0
	case AVLDE:
		return op_VLDE, 0, 0
	case AVLDEB:
		return op_VLDE, 2, 0
	case AWLDEB:
		return op_VLDE, 2, 0
	case AVLED:
		return op_VLED, 0, 0
	case AVLEDB:
		return op_VLED, 3, 0
	case AWLEDB:
		return op_VLED, 3, 0
	case AVFM:
		return op_VFM, 0, 0
	case AVFMDB:
		return op_VFM, 3, 0
	case AWFMDB:
		return op_VFM, 3, 0
	case AVFMA:
		return op_VFMA, 0, 0
	case AVFMADB:
		return op_VFMA, 3, 0
	case AWFMADB:
		return op_VFMA, 3, 0
	case AVFMS:
		return op_VFMS, 0, 0
	case AVFMSDB:
		return op_VFMS, 3, 0
	case AWFMSDB:
		return op_VFMS, 3, 0
	case AVFPSO:
		return op_VFPSO, 0, 0
	case AVFPSODB:
		return op_VFPSO, 3, 0
	case AWFPSODB:
		return op_VFPSO, 3, 0
	case AVFLCDB:
		return op_VFPSO, 3, 0
	case AWFLCDB:
		return op_VFPSO, 3, 0
	case AVFLNDB:
		return op_VFPSO, 3, 1
	case AWFLNDB:
		return op_VFPSO, 3, 1
	case AVFLPDB:
		return op_VFPSO, 3, 2
	case AWFLPDB:
		return op_VFPSO, 3, 2
	case AVFSQ:
		return op_VFSQ, 0, 0
	case AVFSQDB:
		return op_VFSQ, 3, 0
	case AWFSQDB:
		return op_VFSQ, 3, 0
	case AVFS:
		return op_VFS, 0, 0
	case AVFSDB:
		return op_VFS, 3, 0
	case AWFSDB:
		return op_VFS, 3, 0
	case AVFTCI:
		return op_VFTCI, 0, 0
	case AVFTCIDB:
		return op_VFTCI, 3, 0
	case AWFTCIDB:
		return op_VFTCI, 3, 0
	case AVGFM:
		return op_VGFM, 0, 0
	case AVGFMB:
		return op_VGFM, 0, 0
	case AVGFMH:
		return op_VGFM, 1, 0
	case AVGFMF:
		return op_VGFM, 2, 0
	case AVGFMG:
		return op_VGFM, 3, 0
	case AVGFMA:
		return op_VGFMA, 0, 0
	case AVGFMAB:
		return op_VGFMA, 0, 0
	case AVGFMAH:
		return op_VGFMA, 1, 0
	case AVGFMAF:
		return op_VGFMA, 2, 0
	case AVGFMAG:
		return op_VGFMA, 3, 0
	case AVGEF:
		return op_VGEF, 0, 0
	case AVGEG:
		return op_VGEG, 0, 0
	case AVGBM:
		return op_VGBM, 0, 0
	case AVZERO:
		return op_VGBM, 0, 0
	case AVONE:
		return op_VGBM, 0, 0
	case AVGM:
		return op_VGM, 0, 0
	case AVGMB:
		return op_VGM, 0, 0
	case AVGMH:
		return op_VGM, 1, 0
	case AVGMF:
		return op_VGM, 2, 0
	case AVGMG:
		return op_VGM, 3, 0
	case AVISTR:
		return op_VISTR, 0, 0
	case AVISTRB:
		return op_VISTR, 0, 0
	case AVISTRH:
		return op_VISTR, 1, 0
	case AVISTRF:
		return op_VISTR, 2, 0
	case AVISTRBS:
		return op_VISTR, 0, 1
	case AVISTRHS:
		return op_VISTR, 1, 1
	case AVISTRFS:
		return op_VISTR, 2, 1
	case AVL:
		return op_VL, 0, 0
	case AVLR:
		return op_VLR, 0, 0
	case AVLREP:
		return op_VLREP, 0, 0
	case AVLREPB:
		return op_VLREP, 0, 0
	case AVLREPH:
		return op_VLREP, 1, 0
	case AVLREPF:
		return op_VLREP, 2, 0
	case AVLREPG:
		return op_VLREP, 3, 0
	case AVLC:
		return op_VLC, 0, 0
	case AVLCB:
		return op_VLC, 0, 0
	case AVLCH:
		return op_VLC, 1, 0
	case AVLCF:
		return op_VLC, 2, 0
	case AVLCG:
		return op_VLC, 3, 0
	case AVLEH:
		return op_VLEH, 0, 0
	case AVLEF:
		return op_VLEF, 0, 0
	case AVLEG:
		return op_VLEG, 0, 0
	case AVLEB:
		return op_VLEB, 0, 0
	case AVLEIH:
		return op_VLEIH, 0, 0
	case AVLEIF:
		return op_VLEIF, 0, 0
	case AVLEIG:
		return op_VLEIG, 0, 0
	case AVLEIB:
		return op_VLEIB, 0, 0
	case AVFI:
		return op_VFI, 0, 0
	case AVFIDB:
		return op_VFI, 3, 0
	case AWFIDB:
		return op_VFI, 3, 0
	case AVLGV:
		return op_VLGV, 0, 0
	case AVLGVB:
		return op_VLGV, 0, 0
	case AVLGVH:
		return op_VLGV, 1, 0
	case AVLGVF:
		return op_VLGV, 2, 0
	case AVLGVG:
		return op_VLGV, 3, 0
	case AVLLEZ:
		return op_VLLEZ, 0, 0
	case AVLLEZB:
		return op_VLLEZ, 0, 0
	case AVLLEZH:
		return op_VLLEZ, 1, 0
	case AVLLEZF:
		return op_VLLEZ, 2, 0
	case AVLLEZG:
		return op_VLLEZ, 3, 0
	case AVLM:
		return op_VLM, 0, 0
	case AVLP:
		return op_VLP, 0, 0
	case AVLPB:
		return op_VLP, 0, 0
	case AVLPH:
		return op_VLP, 1, 0
	case AVLPF:
		return op_VLP, 2, 0
	case AVLPG:
		return op_VLP, 3, 0
	case AVLBB:
		return op_VLBB, 0, 0
	case AVLVG:
		return op_VLVG, 0, 0
	case AVLVGB:
		return op_VLVG, 0, 0
	case AVLVGH:
		return op_VLVG, 1, 0
	case AVLVGF:
		return op_VLVG, 2, 0
	case AVLVGG:
		return op_VLVG, 3, 0
	case AVLVGP:
		return op_VLVGP, 0, 0
	case AVLL:
		return op_VLL, 0, 0
	case AVMX:
		return op_VMX, 0, 0
	case AVMXB:
		return op_VMX, 0, 0
	case AVMXH:
		return op_VMX, 1, 0
	case AVMXF:
		return op_VMX, 2, 0
	case AVMXG:
		return op_VMX, 3, 0
	case AVMXL:
		return op_VMXL, 0, 0
	case AVMXLB:
		return op_VMXL, 0, 0
	case AVMXLH:
		return op_VMXL, 1, 0
	case AVMXLF:
		return op_VMXL, 2, 0
	case AVMXLG:
		return op_VMXL, 3, 0
	case AVMRH:
		return op_VMRH, 0, 0
	case AVMRHB:
		return op_VMRH, 0, 0
	case AVMRHH:
		return op_VMRH, 1, 0
	case AVMRHF:
		return op_VMRH, 2, 0
	case AVMRHG:
		return op_VMRH, 3, 0
	case AVMRL:
		return op_VMRL, 0, 0
	case AVMRLB:
		return op_VMRL, 0, 0
	case AVMRLH:
		return op_VMRL, 1, 0
	case AVMRLF:
		return op_VMRL, 2, 0
	case AVMRLG:
		return op_VMRL, 3, 0
	case AVMN:
		return op_VMN, 0, 0
	case AVMNB:
		return op_VMN, 0, 0
	case AVMNH:
		return op_VMN, 1, 0
	case AVMNF:
		return op_VMN, 2, 0
	case AVMNG:
		return op_VMN, 3, 0
	case AVMNL:
		return op_VMNL, 0, 0
	case AVMNLB:
		return op_VMNL, 0, 0
	case AVMNLH:
		return op_VMNL, 1, 0
	case AVMNLF:
		return op_VMNL, 2, 0
	case AVMNLG:
		return op_VMNL, 3, 0
	case AVMAE:
		return op_VMAE, 0, 0
	case AVMAEB:
		return op_VMAE, 0, 0
	case AVMAEH:
		return op_VMAE, 1, 0
	case AVMAEF:
		return op_VMAE, 2, 0
	case AVMAH:
		return op_VMAH, 0, 0
	case AVMAHB:
		return op_VMAH, 0, 0
	case AVMAHH:
		return op_VMAH, 1, 0
	case AVMAHF:
		return op_VMAH, 2, 0
	case AVMALE:
		return op_VMALE, 0, 0
	case AVMALEB:
		return op_VMALE, 0, 0
	case AVMALEH:
		return op_VMALE, 1, 0
	case AVMALEF:
		return op_VMALE, 2, 0
	case AVMALH:
		return op_VMALH, 0, 0
	case AVMALHB:
		return op_VMALH, 0, 0
	case AVMALHH:
		return op_VMALH, 1, 0
	case AVMALHF:
		return op_VMALH, 2, 0
	case AVMALO:
		return op_VMALO, 0, 0
	case AVMALOB:
		return op_VMALO, 0, 0
	case AVMALOH:
		return op_VMALO, 1, 0
	case AVMALOF:
		return op_VMALO, 2, 0
	case AVMAL:
		return op_VMAL, 0, 0
	case AVMALB:
		return op_VMAL, 0, 0
	case AVMALHW:
		return op_VMAL, 1, 0
	case AVMALF:
		return op_VMAL, 2, 0
	case AVMAO:
		return op_VMAO, 0, 0
	case AVMAOB:
		return op_VMAO, 0, 0
	case AVMAOH:
		return op_VMAO, 1, 0
	case AVMAOF:
		return op_VMAO, 2, 0
	case AVME:
		return op_VME, 0, 0
	case AVMEB:
		return op_VME, 0, 0
	case AVMEH:
		return op_VME, 1, 0
	case AVMEF:
		return op_VME, 2, 0
	case AVMH:
		return op_VMH, 0, 0
	case AVMHB:
		return op_VMH, 0, 0
	case AVMHH:
		return op_VMH, 1, 0
	case AVMHF:
		return op_VMH, 2, 0
	case AVMLE:
		return op_VMLE, 0, 0
	case AVMLEB:
		return op_VMLE, 0, 0
	case AVMLEH:
		return op_VMLE, 1, 0
	case AVMLEF:
		return op_VMLE, 2, 0
	case AVMLH:
		return op_VMLH, 0, 0
	case AVMLHB:
		return op_VMLH, 0, 0
	case AVMLHH:
		return op_VMLH, 1, 0
	case AVMLHF:
		return op_VMLH, 2, 0
	case AVMLO:
		return op_VMLO, 0, 0
	case AVMLOB:
		return op_VMLO, 0, 0
	case AVMLOH:
		return op_VMLO, 1, 0
	case AVMLOF:
		return op_VMLO, 2, 0
	case AVML:
		return op_VML, 0, 0
	case AVMLB:
		return op_VML, 0, 0
	case AVMLHW:
		return op_VML, 1, 0
	case AVMLF:
		return op_VML, 2, 0
	case AVMO:
		return op_VMO, 0, 0
	case AVMOB:
		return op_VMO, 0, 0
	case AVMOH:
		return op_VMO, 1, 0
	case AVMOF:
		return op_VMO, 2, 0
	case AVNO:
		return op_VNO, 0, 0
	case AVNOT:
		return op_VNO, 0, 0
	case AVO:
		return op_VO, 0, 0
	case AVPK:
		return op_VPK, 0, 0
	case AVPKH:
		return op_VPK, 1, 0
	case AVPKF:
		return op_VPK, 2, 0
	case AVPKG:
		return op_VPK, 3, 0
	case AVPKLS:
		return op_VPKLS, 0, 0
	case AVPKLSH:
		return op_VPKLS, 1, 0
	case AVPKLSF:
		return op_VPKLS, 2, 0
	case AVPKLSG:
		return op_VPKLS, 3, 0
	case AVPKLSHS:
		return op_VPKLS, 1, 1
	case AVPKLSFS:
		return op_VPKLS, 2, 1
	case AVPKLSGS:
		return op_VPKLS, 3, 1
	case AVPKS:
		return op_VPKS, 0, 0
	case AVPKSH:
		return op_VPKS, 1, 0
	case AVPKSF:
		return op_VPKS, 2, 0
	case AVPKSG:
		return op_VPKS, 3, 0
	case AVPKSHS:
		return op_VPKS, 1, 1
	case AVPKSFS:
		return op_VPKS, 2, 1
	case AVPKSGS:
		return op_VPKS, 3, 1
	case AVPERM:
		return op_VPERM, 0, 0
	case AVPDI:
		return op_VPDI, 0, 0
	case AVPOPCT:
		return op_VPOPCT, 0, 0
	case AVREP:
		return op_VREP, 0, 0
	case AVREPB:
		return op_VREP, 0, 0
	case AVREPH:
		return op_VREP, 1, 0
	case AVREPF:
		return op_VREP, 2, 0
	case AVREPG:
		return op_VREP, 3, 0
	case AVREPI:
		return op_VREPI, 0, 0
	case AVREPIB:
		return op_VREPI, 0, 0
	case AVREPIH:
		return op_VREPI, 1, 0
	case AVREPIF:
		return op_VREPI, 2, 0
	case AVREPIG:
		return op_VREPI, 3, 0
	case AVSCEF:
		return op_VSCEF, 0, 0
	case AVSCEG:
		return op_VSCEG, 0, 0
	case AVSEL:
		return op_VSEL, 0, 0
	case AVSL:
		return op_VSL, 0, 0
	case AVSLB:
		return op_VSLB, 0, 0
	case AVSLDB:
		return op_VSLDB, 0, 0
	case AVSRA:
		return op_VSRA, 0, 0
	case AVSRAB:
		return op_VSRAB, 0, 0
	case AVSRL:
		return op_VSRL, 0, 0
	case AVSRLB:
		return op_VSRLB, 0, 0
	case AVSEG:
		return op_VSEG, 0, 0
	case AVSEGB:
		return op_VSEG, 0, 0
	case AVSEGH:
		return op_VSEG, 1, 0
	case AVSEGF:
		return op_VSEG, 2, 0
	case AVST:
		return op_VST, 0, 0
	case AVSTEH:
		return op_VSTEH, 0, 0
	case AVSTEF:
		return op_VSTEF, 0, 0
	case AVSTEG:
		return op_VSTEG, 0, 0
	case AVSTEB:
		return op_VSTEB, 0, 0
	case AVSTM:
		return op_VSTM, 0, 0
	case AVSTL:
		return op_VSTL, 0, 0
	case AVSTRC:
		return op_VSTRC, 0, 0
	case AVSTRCB:
		return op_VSTRC, 0, 0
	case AVSTRCH:
		return op_VSTRC, 1, 0
	case AVSTRCF:
		return op_VSTRC, 2, 0
	case AVSTRCBS:
		return op_VSTRC, 0, 1
	case AVSTRCHS:
		return op_VSTRC, 1, 1
	case AVSTRCFS:
		return op_VSTRC, 2, 1
	case AVSTRCZB:
		return op_VSTRC, 0, 2
	case AVSTRCZH:
		return op_VSTRC, 1, 2
	case AVSTRCZF:
		return op_VSTRC, 2, 2
	case AVSTRCZBS:
		return op_VSTRC, 0, 3
	case AVSTRCZHS:
		return op_VSTRC, 1, 3
	case AVSTRCZFS:
		return op_VSTRC, 2, 3
	case AVS:
		return op_VS, 0, 0
	case AVSB:
		return op_VS, 0, 0
	case AVSH:
		return op_VS, 1, 0
	case AVSF:
		return op_VS, 2, 0
	case AVSG:
		return op_VS, 3, 0
	case AVSQ:
		return op_VS, 4, 0
	case AVSCBI:
		return op_VSCBI, 0, 0
	case AVSCBIB:
		return op_VSCBI, 0, 0
	case AVSCBIH:
		return op_VSCBI, 1, 0
	case AVSCBIF:
		return op_VSCBI, 2, 0
	case AVSCBIG:
		return op_VSCBI, 3, 0
	case AVSCBIQ:
		return op_VSCBI, 4, 0
	case AVSBCBI:
		return op_VSBCBI, 0, 0
	case AVSBCBIQ:
		return op_VSBCBI, 4, 0
	case AVSBI:
		return op_VSBI, 0, 0
	case AVSBIQ:
		return op_VSBI, 4, 0
	case AVSUMG:
		return op_VSUMG, 0, 0
	case AVSUMGH:
		return op_VSUMG, 1, 0
	case AVSUMGF:
		return op_VSUMG, 2, 0
	case AVSUMQ:
		return op_VSUMQ, 0, 0
	case AVSUMQF:
		return op_VSUMQ, 1, 0
	case AVSUMQG:
		return op_VSUMQ, 2, 0
	case AVSUM:
		return op_VSUM, 0, 0
	case AVSUMB:
		return op_VSUM, 0, 0
	case AVSUMH:
		return op_VSUM, 1, 0
	case AVTM:
		return op_VTM, 0, 0
	case AVUPH:
		return op_VUPH, 0, 0
	case AVUPHB:
		return op_VUPH, 0, 0
	case AVUPHH:
		return op_VUPH, 1, 0
	case AVUPHF:
		return op_VUPH, 2, 0
	case AVUPLH:
		return op_VUPLH, 0, 0
	case AVUPLHB:
		return op_VUPLH, 0, 0
	case AVUPLHH:
		return op_VUPLH, 1, 0
	case AVUPLHF:
		return op_VUPLH, 2, 0
	case AVUPLL:
		return op_VUPLL, 0, 0
	case AVUPLLB:
		return op_VUPLL, 0, 0
	case AVUPLLH:
		return op_VUPLL, 1, 0
	case AVUPLLF:
		return op_VUPLL, 2, 0
	case AVUPL:
		return op_VUPL, 0, 0
	case AVUPLB:
		return op_VUPL, 0, 0
	case AVUPLHW:
		return op_VUPL, 1, 0
	case AVUPLF:
		return op_VUPL, 2, 0
	}
}

// singleElementMask returns the single element mask bits required for the
// given instruction.
func singleElementMask(as obj.As) uint32 {
	switch as {
	case AWFADB,
		AWFK,
		AWFKDB,
		AWFCEDB,
		AWFCEDBS,
		AWFCHDB,
		AWFCHDBS,
		AWFCHEDB,
		AWFCHEDBS,
		AWFC,
		AWFCDB,
		AWCDGB,
		AWCDLGB,
		AWCGDB,
		AWCLGDB,
		AWFDDB,
		AWLDEB,
		AWLEDB,
		AWFMDB,
		AWFMADB,
		AWFMSDB,
		AWFPSODB,
		AWFLCDB,
		AWFLNDB,
		AWFLPDB,
		AWFSQDB,
		AWFSDB,
		AWFTCIDB,
		AWFIDB:
		return 8
	}
	return 0
}
