r500/regs/assembler/fs/keywords.py

74 lines
1.3 KiB
Python

from enum import Enum, auto
class KW(Enum):
# ops
CMP = auto()
CND = auto()
COS = auto()
D2A = auto()
DP = auto()
DP3 = auto()
DP4 = auto()
EX2 = auto()
FRC = auto()
LN2 = auto()
MAD = auto()
MAX = auto()
MDH = auto()
MDV = auto()
MIN = auto()
RCP = auto()
RSQ = auto()
SIN = auto()
SOP = auto()
# source/dest
OUT = auto()
TEMP = auto()
FLOAT = auto()
CONST = auto()
SRC0 = auto()
SRC1 = auto()
SRC2 = auto()
SRCP = auto()
# modifiers
TEX_SEM_WAIT = auto()
_string_to_keyword = {
b"CMP": KW.CMP,
b"CND": KW.CND,
b"COS": KW.COS,
b"D2A": KW.D2A,
b"DP": KW.DP,
b"DP3": KW.DP3,
b"DP4": KW.DP4,
b"EX2": KW.EX2,
b"FRC": KW.FRC,
b"LN2": KW.LN2,
b"MAD": KW.MAD,
b"MAX": KW.MAX,
b"MDH": KW.MDH,
b"MDV": KW.MDV,
b"MIN": KW.MIN,
b"RCP": KW.RCP,
b"RSQ": KW.RSQ,
b"SIN": KW.SIN,
b"SOP": KW.SOP,
b"OUT": KW.OUT,
b"TEMP": KW.TEMP,
b"FLOAT": KW.FLOAT,
b"CONST": KW.CONST,
b"SRC0": KW.SRC0,
b"SRC1": KW.SRC1,
b"SRC2": KW.SRC2,
b"SRCP": KW.SRCP,
b"TEX_SEM_WAIT": KW.TEX_SEM_WAIT,
}
def find_keyword(s):
if s.upper() in _string_to_keyword:
return _string_to_keyword[s.upper()]
else:
return None