[Mesa-dev] [PATCH 3/6] intel/ir: Allow arbitrary scratch flag registers for SHADER_OPCODE_FIND_LIVE_CHANNEL.

Francisco Jerez currojerez at riseup.net
Thu Mar 1 19:34:33 UTC 2018


Kenneth Graunke <kenneth at whitecape.org> writes:

> On Tuesday, February 27, 2018 1:38:25 PM PST Francisco Jerez wrote:
>> This shouldn't cause any functional change at this point, it changes
>> SHADER_OPCODE_FIND_LIVE_CHANNEL to use the flag register specified at
>> the IR level instead of the hard-coded f1.0, now that it can be
>> represented in backend_instruction::flag_subreg.  This will be
>> necessary for scheduling to behave correctly once more things start
>> making use of f1.0.
>> ---
>>  src/intel/compiler/brw_eu_emit.c    | 5 +++--
>>  src/intel/compiler/brw_fs.cpp       | 3 ++-
>>  src/intel/compiler/brw_fs_builder.h | 2 +-
>>  3 files changed, 6 insertions(+), 4 deletions(-)
>> 
>> diff --git a/src/intel/compiler/brw_fs.cpp b/src/intel/compiler/brw_fs.cpp
>> index 6c86b1592fd..0b87d8ab14e 100644
>> --- a/src/intel/compiler/brw_fs.cpp
>> +++ b/src/intel/compiler/brw_fs.cpp
>> @@ -931,7 +931,8 @@ fs_inst::flags_written() const
>>     if ((conditional_mod && (opcode != BRW_OPCODE_SEL &&
>>                              opcode != BRW_OPCODE_IF &&
>>                              opcode != BRW_OPCODE_WHILE)) ||
>> -       opcode == FS_OPCODE_MOV_DISPATCH_TO_FLAGS) {
>> +       opcode == FS_OPCODE_MOV_DISPATCH_TO_FLAGS ||
>> +       opcode == SHADER_OPCODE_FIND_LIVE_CHANNEL) {
>
> Looks like an unrelated fix?  It's probably fine here though.
>

The purpose of this change is to make the flag write visible to the
scheduler, because with this patch we start specifying the flag
subregister that is to be used as scratch predicate internally by
SHADER_OPCODE_FIND_LIVE_CHANNEL as backend_instruction::flag_subreg, but
because SHADER_OPCODE_FIND_LIVE_CHANNEL shouldn't ever have a predicate
nor a conditional mod, the instruction wouldn't be considered to write
the flag register if it wasn't because of this change.

>>        return flag_mask(this);
>>     } else {
>>        return flag_mask(dst, size_written);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 227 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180301/14cf7a71/attachment.sig>


More information about the mesa-dev mailing list