mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-02 13:50:09 +01:00
freedreno/ir3: small re-order
Small re-order of switch statement to handled op-code categories in order. Signed-off-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
parent
75afd2586f
commit
b5cc88af5e
1 changed files with 23 additions and 24 deletions
|
|
@ -111,36 +111,12 @@ static bool valid_flags(struct ir3_instruction *instr, unsigned n,
|
|||
if (flags & IR3_REG_RELATIV)
|
||||
return false;
|
||||
|
||||
/* clear flags that are 'ok' */
|
||||
switch (opc_cat(instr->opc)) {
|
||||
case 1:
|
||||
valid_flags = IR3_REG_IMMED | IR3_REG_CONST | IR3_REG_RELATIV;
|
||||
if (flags & ~valid_flags)
|
||||
return false;
|
||||
break;
|
||||
case 5:
|
||||
/* no flags allowed */
|
||||
if (flags)
|
||||
return false;
|
||||
break;
|
||||
case 6:
|
||||
valid_flags = IR3_REG_IMMED;
|
||||
if (flags & ~valid_flags)
|
||||
return false;
|
||||
|
||||
if (flags & IR3_REG_IMMED) {
|
||||
/* doesn't seem like we can have immediate src for store
|
||||
* instructions:
|
||||
*
|
||||
* TODO this restriction could also apply to load instructions,
|
||||
* but for load instructions this arg is the address (and not
|
||||
* really sure any good way to test a hard-coded immed addr src)
|
||||
*/
|
||||
if (is_store(instr) && (n == 1))
|
||||
return false;
|
||||
}
|
||||
|
||||
break;
|
||||
case 2:
|
||||
valid_flags = ir3_cat2_absneg(instr->opc) |
|
||||
IR3_REG_CONST | IR3_REG_RELATIV;
|
||||
|
|
@ -197,6 +173,29 @@ static bool valid_flags(struct ir3_instruction *instr, unsigned n,
|
|||
if (flags & (IR3_REG_SABS | IR3_REG_SNEG))
|
||||
return false;
|
||||
break;
|
||||
case 5:
|
||||
/* no flags allowed */
|
||||
if (flags)
|
||||
return false;
|
||||
break;
|
||||
case 6:
|
||||
valid_flags = IR3_REG_IMMED;
|
||||
if (flags & ~valid_flags)
|
||||
return false;
|
||||
|
||||
if (flags & IR3_REG_IMMED) {
|
||||
/* doesn't seem like we can have immediate src for store
|
||||
* instructions:
|
||||
*
|
||||
* TODO this restriction could also apply to load instructions,
|
||||
* but for load instructions this arg is the address (and not
|
||||
* really sure any good way to test a hard-coded immed addr src)
|
||||
*/
|
||||
if (is_store(instr) && (n == 1))
|
||||
return false;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue