i965/fs: add PACK opcode
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
cc3bae5cd7
commit
ba582e58cd
|
@ -1013,6 +1013,15 @@ enum opcode {
|
||||||
*/
|
*/
|
||||||
SHADER_OPCODE_LOAD_PAYLOAD,
|
SHADER_OPCODE_LOAD_PAYLOAD,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Packs a number of sources into a single value. Unlike LOAD_PAYLOAD, this
|
||||||
|
* acts intra-channel, obtaining the final value for each channel by
|
||||||
|
* combining the sources values for the same channel, the first source
|
||||||
|
* occupying the lowest bits and the last source occupying the highest
|
||||||
|
* bits.
|
||||||
|
*/
|
||||||
|
FS_OPCODE_PACK,
|
||||||
|
|
||||||
SHADER_OPCODE_SHADER_TIME_ADD,
|
SHADER_OPCODE_SHADER_TIME_ADD,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -4523,7 +4523,8 @@ get_lowered_simd_width(const struct brw_device_info *devinfo,
|
||||||
case SHADER_OPCODE_INT_QUOTIENT:
|
case SHADER_OPCODE_INT_QUOTIENT:
|
||||||
case SHADER_OPCODE_INT_REMAINDER:
|
case SHADER_OPCODE_INT_REMAINDER:
|
||||||
case SHADER_OPCODE_SIN:
|
case SHADER_OPCODE_SIN:
|
||||||
case SHADER_OPCODE_COS: {
|
case SHADER_OPCODE_COS:
|
||||||
|
case FS_OPCODE_PACK: {
|
||||||
/* According to the PRMs:
|
/* According to the PRMs:
|
||||||
* "A. In Direct Addressing mode, a source cannot span more than 2
|
* "A. In Direct Addressing mode, a source cannot span more than 2
|
||||||
* adjacent GRF registers.
|
* adjacent GRF registers.
|
||||||
|
|
|
@ -550,6 +550,7 @@ fs_visitor::try_constant_propagate(fs_inst *inst, acp_entry *entry)
|
||||||
switch (inst->opcode) {
|
switch (inst->opcode) {
|
||||||
case BRW_OPCODE_MOV:
|
case BRW_OPCODE_MOV:
|
||||||
case SHADER_OPCODE_LOAD_PAYLOAD:
|
case SHADER_OPCODE_LOAD_PAYLOAD:
|
||||||
|
case FS_OPCODE_PACK:
|
||||||
inst->src[i] = val;
|
inst->src[i] = val;
|
||||||
progress = true;
|
progress = true;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -81,6 +81,7 @@ is_expression(const fs_visitor *v, const fs_inst *const inst)
|
||||||
case SHADER_OPCODE_EXTRACT_BYTE:
|
case SHADER_OPCODE_EXTRACT_BYTE:
|
||||||
case SHADER_OPCODE_EXTRACT_WORD:
|
case SHADER_OPCODE_EXTRACT_WORD:
|
||||||
case SHADER_OPCODE_MOV_INDIRECT:
|
case SHADER_OPCODE_MOV_INDIRECT:
|
||||||
|
case FS_OPCODE_PACK:
|
||||||
return true;
|
return true;
|
||||||
case SHADER_OPCODE_RCP:
|
case SHADER_OPCODE_RCP:
|
||||||
case SHADER_OPCODE_RSQ:
|
case SHADER_OPCODE_RSQ:
|
||||||
|
|
|
@ -289,6 +289,8 @@ brw_instruction_name(const struct brw_device_info *devinfo, enum opcode op)
|
||||||
|
|
||||||
case SHADER_OPCODE_LOAD_PAYLOAD:
|
case SHADER_OPCODE_LOAD_PAYLOAD:
|
||||||
return "load_payload";
|
return "load_payload";
|
||||||
|
case FS_OPCODE_PACK:
|
||||||
|
return "pack";
|
||||||
|
|
||||||
case SHADER_OPCODE_GEN4_SCRATCH_READ:
|
case SHADER_OPCODE_GEN4_SCRATCH_READ:
|
||||||
return "gen4_scratch_read";
|
return "gen4_scratch_read";
|
||||||
|
|
Loading…
Reference in New Issue