1070 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			1070 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // 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 (
 | |
| 	"github.com/twitchyliquid64/golang-asm/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 AVMSLG, AVMSLEG, AVMSLOG, AVMSLEOG:
 | |
| 		return op_VMSL, 3, 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, 2, 0
 | |
| 	case AVSUMQG:
 | |
| 		return op_VSUMQ, 3, 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
 | |
| 	case AVMSLEG:
 | |
| 		return 8
 | |
| 	case AVMSLOG:
 | |
| 		return 4
 | |
| 	case AVMSLEOG:
 | |
| 		return 12
 | |
| 	}
 | |
| 	return 0
 | |
| }
 |