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