diff --git a/src/etnaviv/isa/etnaviv.xml b/src/etnaviv/isa/etnaviv.xml index f123e7edce8..6f4fa0a79aa 100644 --- a/src/etnaviv/isa/etnaviv.xml +++ b/src/etnaviv/isa/etnaviv.xml @@ -7,6 +7,10 @@ SPDX-License-Identifier: MIT + + @@ -15,11 +19,15 @@ SPDX-License-Identifier: MIT + + @@ -131,7 +139,6 @@ SPDX-License-Identifier: MIT - @@ -146,7 +153,6 @@ SPDX-License-Identifier: MIT (src->type & 0x4) > 2 (src->thread & 0x1) (src->thread & 0x2) > 1 - src->cond src->rounding src->sat !src->pmode @@ -334,6 +340,8 @@ SPDX-License-Identifier: MIT + 00000 + {NAME} {DST:align=18}{DST_FULL}, void, void, void @@ -380,6 +388,13 @@ SPDX-License-Identifier: MIT Needed for texkill + + + + + src->cond + + {NAME}{COND}{TYPE}{PMODE}{THREAD}{RMODE} {DST:align=18}{DST_FULL}, void, void, void @@ -430,6 +445,7 @@ SPDX-License-Identifier: MIT + 00000 {INSTR_ALU} {DST:align=18}, {SRC0}, void, void @@ -467,6 +483,7 @@ SPDX-License-Identifier: MIT + 00000 {INSTR_ALU} {DST:align=18}, void, void, {SRC2} @@ -512,6 +529,7 @@ SPDX-License-Identifier: MIT + 00000 {INSTR_ALU} {DST:align=18}, {SRC0}, {SRC1}, void @@ -549,8 +567,54 @@ SPDX-License-Identifier: MIT 000 + + + + + + + {INSTR_ALU_COND} {DST:align=18}, {SRC0}, {SRC1}, void + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 0 + 000000000 + 00000000 + 0 + 0 + 000 + 000 + + + src->cond + + + + 00000 {INSTR_ALU} {DST:align=18}, {SRC0}, void, {SRC2} @@ -598,6 +662,7 @@ SPDX-License-Identifier: MIT + 00000 {INSTR_ALU} {DST:align=18}, void, {SRC1}, {SRC2} @@ -650,6 +715,8 @@ SPDX-License-Identifier: MIT + 00000 + {INSTR_ALU} {DST:align=18}, {SRC0}, {SRC1}, {SRC2} @@ -688,8 +755,56 @@ SPDX-License-Identifier: MIT + + + + + + + {INSTR_ALU_COND} {DST:align=18}, {SRC0}, {SRC1}, {SRC2} + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + src->cond + + + + 00000 @@ -903,6 +1018,8 @@ SPDX-License-Identifier: MIT + 00000 + {INSTR_CF} {:align=18}void, void, void, {TARGET} @@ -920,10 +1037,16 @@ SPDX-License-Identifier: MIT - + + + + + + src->cond + - {INSTR_CF} {:align=18}void, {SRC0}, void, {TARGET} + {INSTR_CF_COND} {:align=18}void, {SRC0}, void, {TARGET} @@ -948,10 +1071,16 @@ SPDX-License-Identifier: MIT - + + + + + + src->cond + - {INSTR_CF} {:align=18}void, {SRC0}, {SRC1}, {TARGET} + {INSTR_CF_COND} {:align=18}void, {SRC0}, {SRC1}, {TARGET} @@ -1000,6 +1129,7 @@ SPDX-License-Identifier: MIT + 00000 @@ -1065,6 +1195,7 @@ SPDX-License-Identifier: MIT + 00000 xxxxx x @@ -1195,12 +1326,12 @@ SPDX-License-Identifier: MIT - + 001111 0 - + 010000 0 @@ -1354,7 +1485,7 @@ SPDX-License-Identifier: MIT - + 110001 0 @@ -1589,6 +1720,7 @@ SPDX-License-Identifier: MIT 111111 + 00000 1 diff --git a/src/etnaviv/isa/isa_proc.rs b/src/etnaviv/isa/isa_proc.rs index 2df62d5bcf9..d3c8ab03578 100644 --- a/src/etnaviv/isa/isa_proc.rs +++ b/src/etnaviv/isa/isa_proc.rs @@ -324,7 +324,11 @@ fn generate_peg_grammar_instructions(isa: &ISA) -> String { rule_parts.push("TexSrc ~ \",\"".to_string()); } - let possible_srcs = if type_ == "cf" { 2 } else { 3 }; + let possible_srcs = if matches!(type_, "cf" | "cf_cond") { + 2 + } else { + 3 + }; let valid_srcs: Vec<_> = meta .get("valid_srcs") .unwrap_or(&"") @@ -343,7 +347,7 @@ fn generate_peg_grammar_instructions(isa: &ISA) -> String { } } - if type_ == "cf" { + if matches!(type_, "cf" | "cf_cond") { rule_parts.push("\",\"".to_string()); rule_parts.push("Target".to_string()); }