mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2024-12-25 01:05:38 +00:00
44416a6794
Backports commit 6d0730a82417e3a4a1911eb8e0246f3ba996f932 from qemu
135 lines
6.7 KiB
Plaintext
135 lines
6.7 KiB
Plaintext
# A32 conditional instructions
|
|
#
|
|
# Copyright (c) 2019 Linaro, Ltd
|
|
#
|
|
# 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 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/>.
|
|
|
|
#
|
|
# This file is processed by scripts/decodetree.py
|
|
#
|
|
# All of the insn that have a COND field in insn[31:28] are here.
|
|
# All insns that have 0xf in insn[31:28] are in a32-uncond.decode.
|
|
#
|
|
|
|
&s_rrr_shi s rd rn rm shim shty
|
|
&s_rrr_shr s rn rd rm rs shty
|
|
&s_rri_rot s rn rd imm rot
|
|
&s_rrrr s rd rn rm ra
|
|
&rrrr rd rn rm ra
|
|
&rrr rd rn rm
|
|
|
|
# Data-processing (register)
|
|
|
|
@s_rrr_shi ---- ... .... s:1 rn:4 rd:4 shim:5 shty:2 . rm:4 \
|
|
&s_rrr_shi
|
|
@s_rxr_shi ---- ... .... s:1 .... rd:4 shim:5 shty:2 . rm:4 \
|
|
&s_rrr_shi rn=0
|
|
@S_xrr_shi ---- ... .... . rn:4 .... shim:5 shty:2 . rm:4 \
|
|
&s_rrr_shi s=1 rd=0
|
|
|
|
AND_rrri .... 000 0000 . .... .... ..... .. 0 .... @s_rrr_shi
|
|
EOR_rrri .... 000 0001 . .... .... ..... .. 0 .... @s_rrr_shi
|
|
SUB_rrri .... 000 0010 . .... .... ..... .. 0 .... @s_rrr_shi
|
|
RSB_rrri .... 000 0011 . .... .... ..... .. 0 .... @s_rrr_shi
|
|
ADD_rrri .... 000 0100 . .... .... ..... .. 0 .... @s_rrr_shi
|
|
ADC_rrri .... 000 0101 . .... .... ..... .. 0 .... @s_rrr_shi
|
|
SBC_rrri .... 000 0110 . .... .... ..... .. 0 .... @s_rrr_shi
|
|
RSC_rrri .... 000 0111 . .... .... ..... .. 0 .... @s_rrr_shi
|
|
TST_xrri .... 000 1000 1 .... 0000 ..... .. 0 .... @S_xrr_shi
|
|
TEQ_xrri .... 000 1001 1 .... 0000 ..... .. 0 .... @S_xrr_shi
|
|
CMP_xrri .... 000 1010 1 .... 0000 ..... .. 0 .... @S_xrr_shi
|
|
CMN_xrri .... 000 1011 1 .... 0000 ..... .. 0 .... @S_xrr_shi
|
|
ORR_rrri .... 000 1100 . .... .... ..... .. 0 .... @s_rrr_shi
|
|
MOV_rxri .... 000 1101 . 0000 .... ..... .. 0 .... @s_rxr_shi
|
|
BIC_rrri .... 000 1110 . .... .... ..... .. 0 .... @s_rrr_shi
|
|
MVN_rxri .... 000 1111 . 0000 .... ..... .. 0 .... @s_rxr_shi
|
|
|
|
# Data-processing (register-shifted register)
|
|
|
|
@s_rrr_shr ---- ... .... s:1 rn:4 rd:4 rs:4 . shty:2 . rm:4 \
|
|
&s_rrr_shr
|
|
@s_rxr_shr ---- ... .... s:1 .... rd:4 rs:4 . shty:2 . rm:4 \
|
|
&s_rrr_shr rn=0
|
|
@S_xrr_shr ---- ... .... . rn:4 .... rs:4 . shty:2 . rm:4 \
|
|
&s_rrr_shr rd=0 s=1
|
|
|
|
AND_rrrr .... 000 0000 . .... .... .... 0 .. 1 .... @s_rrr_shr
|
|
EOR_rrrr .... 000 0001 . .... .... .... 0 .. 1 .... @s_rrr_shr
|
|
SUB_rrrr .... 000 0010 . .... .... .... 0 .. 1 .... @s_rrr_shr
|
|
RSB_rrrr .... 000 0011 . .... .... .... 0 .. 1 .... @s_rrr_shr
|
|
ADD_rrrr .... 000 0100 . .... .... .... 0 .. 1 .... @s_rrr_shr
|
|
ADC_rrrr .... 000 0101 . .... .... .... 0 .. 1 .... @s_rrr_shr
|
|
SBC_rrrr .... 000 0110 . .... .... .... 0 .. 1 .... @s_rrr_shr
|
|
RSC_rrrr .... 000 0111 . .... .... .... 0 .. 1 .... @s_rrr_shr
|
|
TST_xrrr .... 000 1000 1 .... 0000 .... 0 .. 1 .... @S_xrr_shr
|
|
TEQ_xrrr .... 000 1001 1 .... 0000 .... 0 .. 1 .... @S_xrr_shr
|
|
CMP_xrrr .... 000 1010 1 .... 0000 .... 0 .. 1 .... @S_xrr_shr
|
|
CMN_xrrr .... 000 1011 1 .... 0000 .... 0 .. 1 .... @S_xrr_shr
|
|
ORR_rrrr .... 000 1100 . .... .... .... 0 .. 1 .... @s_rrr_shr
|
|
MOV_rxrr .... 000 1101 . 0000 .... .... 0 .. 1 .... @s_rxr_shr
|
|
BIC_rrrr .... 000 1110 . .... .... .... 0 .. 1 .... @s_rrr_shr
|
|
MVN_rxrr .... 000 1111 . 0000 .... .... 0 .. 1 .... @s_rxr_shr
|
|
|
|
# Data-processing (immediate)
|
|
|
|
%a32extrot 8:4 !function=times_2
|
|
|
|
@s_rri_rot ---- ... .... s:1 rn:4 rd:4 .... imm:8 \
|
|
&s_rri_rot rot=%a32extrot
|
|
@s_rxi_rot ---- ... .... s:1 .... rd:4 .... imm:8 \
|
|
&s_rri_rot rot=%a32extrot rn=0
|
|
@S_xri_rot ---- ... .... . rn:4 .... .... imm:8 \
|
|
&s_rri_rot rot=%a32extrot rd=0 s=1
|
|
|
|
AND_rri .... 001 0000 . .... .... ............ @s_rri_rot
|
|
EOR_rri .... 001 0001 . .... .... ............ @s_rri_rot
|
|
SUB_rri .... 001 0010 . .... .... ............ @s_rri_rot
|
|
RSB_rri .... 001 0011 . .... .... ............ @s_rri_rot
|
|
ADD_rri .... 001 0100 . .... .... ............ @s_rri_rot
|
|
ADC_rri .... 001 0101 . .... .... ............ @s_rri_rot
|
|
SBC_rri .... 001 0110 . .... .... ............ @s_rri_rot
|
|
RSC_rri .... 001 0111 . .... .... ............ @s_rri_rot
|
|
TST_xri .... 001 1000 1 .... 0000 ............ @S_xri_rot
|
|
TEQ_xri .... 001 1001 1 .... 0000 ............ @S_xri_rot
|
|
CMP_xri .... 001 1010 1 .... 0000 ............ @S_xri_rot
|
|
CMN_xri .... 001 1011 1 .... 0000 ............ @S_xri_rot
|
|
ORR_rri .... 001 1100 . .... .... ............ @s_rri_rot
|
|
MOV_rxi .... 001 1101 . 0000 .... ............ @s_rxi_rot
|
|
BIC_rri .... 001 1110 . .... .... ............ @s_rri_rot
|
|
MVN_rxi .... 001 1111 . 0000 .... ............ @s_rxi_rot
|
|
|
|
# Multiply and multiply accumulate
|
|
|
|
@s_rdamn ---- .... ... s:1 rd:4 ra:4 rm:4 .... rn:4 &s_rrrr
|
|
@s_rd0mn ---- .... ... s:1 rd:4 .... rm:4 .... rn:4 &s_rrrr ra=0
|
|
@rdamn ---- .... ... . rd:4 ra:4 rm:4 .... rn:4 &rrrr
|
|
|
|
MUL .... 0000 000 . .... 0000 .... 1001 .... @s_rd0mn
|
|
MLA .... 0000 001 . .... .... .... 1001 .... @s_rdamn
|
|
UMAAL .... 0000 010 0 .... .... .... 1001 .... @rdamn
|
|
MLS .... 0000 011 0 .... .... .... 1001 .... @rdamn
|
|
UMULL .... 0000 100 . .... .... .... 1001 .... @s_rdamn
|
|
UMLAL .... 0000 101 . .... .... .... 1001 .... @s_rdamn
|
|
SMULL .... 0000 110 . .... .... .... 1001 .... @s_rdamn
|
|
SMLAL .... 0000 111 . .... .... .... 1001 .... @s_rdamn
|
|
|
|
# Saturating addition and subtraction
|
|
|
|
@rndm ---- .... .... rn:4 rd:4 .... .... rm:4 &rrr
|
|
|
|
QADD .... 0001 0000 .... .... 0000 0101 .... @rndm
|
|
QSUB .... 0001 0010 .... .... 0000 0101 .... @rndm
|
|
QDADD .... 0001 0100 .... .... 0000 0101 .... @rndm
|
|
QDSUB .... 0001 0110 .... .... 0000 0101 .... @rndm
|