qemu/target/ppc/insn64.decode
<<
>>
Prefs
   1#
   2# Power ISA decode for 64-bit prefixed insns (opcode space 0 and 1)
   3#
   4# Copyright (c) 2021 Instituto de Pesquisas Eldorado (eldorado.org.br)
   5#
   6# This library is free software; you can redistribute it and/or
   7# modify it under the terms of the GNU Lesser General Public
   8# License as published by the Free Software Foundation; either
   9# version 2.1 of the License, or (at your option) any later version.
  10#
  11# This library is distributed in the hope that it will be useful,
  12# but WITHOUT ANY WARRANTY; without even the implied warranty of
  13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14# Lesser General Public License for more details.
  15#
  16# You should have received a copy of the GNU Lesser General Public
  17# License along with this library; if not, see <http://www.gnu.org/licenses/>.
  18#
  19
  20# Format MLS:D and 8LS:D
  21&PLS_D          rt ra si:int64_t r:bool
  22%pls_si         32:s18 0:16
  23@PLS_D          ...... .. ... r:1 .. .................. \
  24                ...... rt:5 ra:5 ................       \
  25                &PLS_D si=%pls_si
  26
  27### Fixed-Point Load Instructions
  28
  29PLBZ            000001 10 0--.-- .................. \
  30                100010 ..... ..... ................     @PLS_D
  31PLHZ            000001 10 0--.-- .................. \
  32                101000 ..... ..... ................     @PLS_D
  33PLHA            000001 10 0--.-- .................. \
  34                101010 ..... ..... ................     @PLS_D
  35PLWZ            000001 10 0--.-- .................. \
  36                100000 ..... ..... ................     @PLS_D
  37PLWA            000001 00 0--.-- .................. \
  38                101001 ..... ..... ................     @PLS_D
  39PLD             000001 00 0--.-- .................. \
  40                111001 ..... ..... ................     @PLS_D
  41
  42### Fixed-Point Store Instructions
  43
  44PSTW            000001 10 0--.-- .................. \
  45                100100 ..... ..... ................     @PLS_D
  46PSTB            000001 10 0--.-- .................. \
  47                100110 ..... ..... ................     @PLS_D
  48PSTH            000001 10 0--.-- .................. \
  49                101100 ..... ..... ................     @PLS_D
  50
  51PSTD            000001 00 0--.-- .................. \
  52                111101 ..... ..... ................     @PLS_D
  53
  54### Fixed-Point Arithmetic Instructions
  55
  56PADDI           000001 10 0--.-- ..................     \
  57                001110 ..... ..... ................     @PLS_D
  58
  59### Prefixed No-operation Instruction
  60
  61@PNOP           000001 11 0000-- 000000000000000000     \
  62                ................................
  63
  64{
  65  [
  66    ## Invalid suffixes: Branch instruction
  67    # bc[l][a]
  68    INVALID     ................................        \
  69                010000--------------------------        @PNOP
  70    # b[l][a]
  71    INVALID     ................................        \
  72                010010--------------------------        @PNOP
  73    # bclr[l]
  74    INVALID     ................................        \
  75                010011---------------0000010000-        @PNOP
  76    # bcctr[l]
  77    INVALID     ................................        \
  78                010011---------------1000010000-        @PNOP
  79    # bctar[l]
  80    INVALID     ................................        \
  81                010011---------------1000110000-        @PNOP
  82
  83    ## Invalid suffixes: rfebb
  84    INVALID     ................................        \
  85                010011---------------0010010010-        @PNOP
  86
  87    ## Invalid suffixes: context synchronizing other than isync
  88    # sc
  89    INVALID     ................................        \
  90                010001------------------------1-        @PNOP
  91    # scv
  92    INVALID     ................................        \
  93                010001------------------------01        @PNOP
  94    # rfscv
  95    INVALID     ................................        \
  96                010011---------------0001010010-        @PNOP
  97    # rfid
  98    INVALID     ................................        \
  99                010011---------------0000010010-        @PNOP
 100    # hrfid
 101    INVALID     ................................        \
 102                010011---------------0100010010-        @PNOP
 103    # urfid
 104    INVALID     ................................        \
 105                010011---------------0100110010-        @PNOP
 106    # stop
 107    INVALID     ................................        \
 108                010011---------------0101110010-        @PNOP
 109    # mtmsr w/ L=0
 110    INVALID     ................................        \
 111                011111---------0-----0010010010-        @PNOP
 112    # mtmsrd w/ L=0
 113    INVALID     ................................        \
 114                011111---------0-----0010110010-        @PNOP
 115
 116    ## Invalid suffixes: Service Processor Attention
 117    INVALID     ................................        \
 118                000000----------------100000000-        @PNOP
 119  ]
 120
 121  ## Valid suffixes
 122  PNOP          ................................        \
 123                --------------------------------        @PNOP
 124}
 125