#
# Power ISA decode for 64-bit prefixed insns (opcode space 0 and 1)
#
# Copyright (c) 2021 Instituto de Pesquisas Eldorado (eldorado.org.br)
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, see <http://www.gnu.org/licenses/>.
#

# Format MLS:D and 8LS:D
&PLS_D          rt ra si:int64_t r:bool
%pls_si         32:s18 0:16
@PLS_D          ...... .. ... r:1 .. .................. \
                ...... rt:5 ra:5 ................       \
                &PLS_D si=%pls_si

### Fixed-Point Load Instructions

PLBZ            000001 10 0--.-- .................. \
                100010 ..... ..... ................     @PLS_D
PLHZ            000001 10 0--.-- .................. \
                101000 ..... ..... ................     @PLS_D
PLHA            000001 10 0--.-- .................. \
                101010 ..... ..... ................     @PLS_D
PLWZ            000001 10 0--.-- .................. \
                100000 ..... ..... ................     @PLS_D
PLWA            000001 00 0--.-- .................. \
                101001 ..... ..... ................     @PLS_D
PLD             000001 00 0--.-- .................. \
                111001 ..... ..... ................     @PLS_D

### Fixed-Point Store Instructions

PSTW            000001 10 0--.-- .................. \
                100100 ..... ..... ................     @PLS_D
PSTB            000001 10 0--.-- .................. \
                100110 ..... ..... ................     @PLS_D
PSTH            000001 10 0--.-- .................. \
                101100 ..... ..... ................     @PLS_D

PSTD            000001 00 0--.-- .................. \
                111101 ..... ..... ................     @PLS_D

### Fixed-Point Arithmetic Instructions

PADDI           000001 10 0--.-- ..................     \
                001110 ..... ..... ................     @PLS_D

### Prefixed No-operation Instruction

@PNOP           000001 11 0000-- 000000000000000000     \
                ................................

{
  [
    ## Invalid suffixes: Branch instruction
    # bc[l][a]
    INVALID     ................................        \
                010000--------------------------        @PNOP
    # b[l][a]
    INVALID     ................................        \
                010010--------------------------        @PNOP
    # bclr[l]
    INVALID     ................................        \
                010011---------------0000010000-        @PNOP
    # bcctr[l]
    INVALID     ................................        \
                010011---------------1000010000-        @PNOP
    # bctar[l]
    INVALID     ................................        \
                010011---------------1000110000-        @PNOP

    ## Invalid suffixes: rfebb
    INVALID     ................................        \
                010011---------------0010010010-        @PNOP

    ## Invalid suffixes: context synchronizing other than isync
    # sc
    INVALID     ................................        \
                010001------------------------1-        @PNOP
    # scv
    INVALID     ................................        \
                010001------------------------01        @PNOP
    # rfscv
    INVALID     ................................        \
                010011---------------0001010010-        @PNOP
    # rfid
    INVALID     ................................        \
                010011---------------0000010010-        @PNOP
    # hrfid
    INVALID     ................................        \
                010011---------------0100010010-        @PNOP
    # urfid
    INVALID     ................................        \
                010011---------------0100110010-        @PNOP
    # stop
    INVALID     ................................        \
                010011---------------0101110010-        @PNOP
    # mtmsr w/ L=0
    INVALID     ................................        \
                011111---------0-----0010010010-        @PNOP
    # mtmsrd w/ L=0
    INVALID     ................................        \
                011111---------0-----0010110010-        @PNOP

    ## Invalid suffixes: Service Processor Attention
    INVALID     ................................        \
                000000----------------100000000-        @PNOP
  ]

  ## Valid suffixes
  PNOP          ................................        \
                --------------------------------        @PNOP
}
