ack/util/mcgg/ir.dat

116 lines
1.8 KiB
Plaintext
Raw Normal View History

# Types:
#
# I, F, L, D: int, float, long, double
# i, F: int, float; promoted to long, double based on size
# .: ignore this parameter
# ?: pull/push types from other ? parameters
# Simple terminals
S ?=.. CONST # must be followed by float form
S ?=.. CONSTF
V ?=.. REG
S ?=?. NOP
S I=.. LABEL
S I=.. BLOCK
V ?=.. PAIR
S ?=.. ANY
S ?=.. LOCAL
V ?=.. PHI
# Magic stack operations
S ?=?. PUSH
S ?=.. POP
# Memory operations
S ?=I. LOAD
S I=I. LOADB
S I=I. LOADH
S ?=I? STORE
S ?=I? STOREB
S ?=I? STOREH
# Arithemetic operations
S i=ii ADD
S i=ii SUB
S i=ii MUL
S i=ii DIV
S i=ii DIVU
S i=ii MOD
S i=ii MODU
S i=ii NEG
S f=ff ADDF
S f=ff SUBF
S f=ff MULF
S f=ff DIVF
S f=ff NEGF
S i=ii AND
S i=ii OR
S i=ii EOR
S i=ii NOT
S i=ii ASL
S i=ii ASR
S i=ii LSL
S i=ii LSR
# Bitwise conversions
# (Remember, these don't change the value, merely move it)
# (order is important here; the 8-byte version of each must immediate succeed
# the 4-byte version)
S F=I. COPYI
S I=F. COPYF
S D=L. COPYL
S L=D. COPYD
# Semantic conversions
# (order is important here; the 8-byte version of each must immediate succeed
# the 4-byte version)
S ?=I. FROMUI
S ?=L. FROMUL
S ?=I. FROMSI
S ?=L. FROMSL
S ?=F. FROMF
S ?=D. FROMD
# The H versions are only used if wordsize > 2
S I=I. EXTENDB
S I=I. EXTENDH
S I=I. TRUNCATEB
S I=I. TRUNCATEH
# Tristate comparisons
# (order is important here; the 8-byte version of each must immediate succeed
# the 4-byte version)
S I=II COMPARESI
S I=LL COMPARESL
S I=II COMPAREUI
S I=LL COMPAREUL
S I=FF COMPAREF
S I=DD COMPARED
2016-10-22 18:32:51 +00:00
# Tristate to boolean conversion
S I=I. IFEQ
S I=I. IFLT
S I=I. IFLE
# Procedures
S i=.. CALL
# Flow control --- these never return
V .=i. JUMP
V .=i. CJUMPEQ
V .=i. CJUMPLT
V .=i. CJUMPLE
V .=.. RET
# Special
S ?=i. STACKADJUST
S ?=i. SETRET
S i=.. GETFP
S i=.. GETSP
S ?=i. SETSP
S i=i. CHAINFP
S i=i. FPTOARGS