xref: /aosp_15_r20/external/mesa3d/src/etnaviv/isa/static_rules.pest (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1/*
2 * Copyright © 2024 Igalia S.L.
3 * SPDX-License-Identifier: MIT
4 */
5
6WHITESPACE = _{ " " | "\t" }
7COMMENT = _{ ";" ~ (!NEWLINE ~ ANY)* ~ NEWLINE? }
8
9Dst_full = { ".hp" }
10Sat = { ".sat" }
11Skphp = { ".skpHp" }
12Pmode = { ".pack" }
13Denorm = { ".denorm" }
14Local = { ".local" }
15
16Amount = { ASCII_DIGIT* }
17Left_shift = { ".ls" ~ Amount }
18
19SrcVoid = { "void" }
20DestVoid = { "void" }
21Negate = { "-" }
22Absolute = { "|" }
23
24Immediate_Minus_Nan = @{ Negate ~ "nan" }
25Immediate_float = @{ Negate? ~ ASCII_DIGIT* ~ "." ~ ASCII_DIGIT* }
26Immediate_int = @{ Negate ~ ASCII_DIGIT* }
27Immediate_uint = @{ ASCII_DIGIT* }
28Immediate = _{ Immediate_Minus_Nan | Immediate_float | Immediate_int | Immediate_uint }
29
30Register = { ASCII_DIGIT* }
31DstRegister = ${ "t" ~ Register ~ RegAddressingMode? ~ Wrmask? }
32DstMemAddr = ${ "mem" ~ Wrmask? }
33SrcSwizzle = ${ "." ~ Swiz ~ Swiz ~ Swiz ~ Swiz }
34SrcRegister = ${
35    ( Negate? ~ Absolute ~ RegGroup ~ Register ~ RegAddressingMode? ~ SrcSwizzle? ~ Absolute |
36      Negate? ~ RegGroup ~ Register ~ RegAddressingMode? ~ SrcSwizzle? |
37      Immediate )
38    }
39
40Dest = _{ DstRegister }
41Src = _{ SrcRegister }
42TexSrc = ${ "tex" ~ Register ~ SrcSwizzle }
43Target = { ASCII_DIGIT* }
44