| // 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 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, 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 |
| case AVMSLEG: |
| return 8 |
| case AVMSLOG: |
| return 4 |
| case AVMSLEOG: |
| return 12 |
| } |
| return 0 |
| } |