forked from mirrors/gotosocial
1069 lines
19 KiB
Go
1069 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
|
|
}
|