i965: Combine {VS,FS}_OPCODE_GET_BUFFER_SIZE opcodes.
These are the same, we don't need a separate opcode enum per backend. Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
@@ -451,6 +451,8 @@ enum opcode {
|
|||||||
*/
|
*/
|
||||||
SHADER_OPCODE_BROADCAST,
|
SHADER_OPCODE_BROADCAST,
|
||||||
|
|
||||||
|
SHADER_OPCODE_GET_BUFFER_SIZE,
|
||||||
|
|
||||||
VEC4_OPCODE_MOV_BYTES,
|
VEC4_OPCODE_MOV_BYTES,
|
||||||
VEC4_OPCODE_PACK_BYTES,
|
VEC4_OPCODE_PACK_BYTES,
|
||||||
VEC4_OPCODE_UNPACK_UNIFORM,
|
VEC4_OPCODE_UNPACK_UNIFORM,
|
||||||
@@ -479,7 +481,6 @@ enum opcode {
|
|||||||
FS_OPCODE_VARYING_PULL_CONSTANT_LOAD_GEN4,
|
FS_OPCODE_VARYING_PULL_CONSTANT_LOAD_GEN4,
|
||||||
FS_OPCODE_VARYING_PULL_CONSTANT_LOAD_GEN7,
|
FS_OPCODE_VARYING_PULL_CONSTANT_LOAD_GEN7,
|
||||||
FS_OPCODE_VARYING_PULL_CONSTANT_LOAD_LOGICAL,
|
FS_OPCODE_VARYING_PULL_CONSTANT_LOAD_LOGICAL,
|
||||||
FS_OPCODE_GET_BUFFER_SIZE,
|
|
||||||
FS_OPCODE_MOV_DISPATCH_TO_FLAGS,
|
FS_OPCODE_MOV_DISPATCH_TO_FLAGS,
|
||||||
FS_OPCODE_DISCARD_JUMP,
|
FS_OPCODE_DISCARD_JUMP,
|
||||||
FS_OPCODE_SET_SAMPLE_ID,
|
FS_OPCODE_SET_SAMPLE_ID,
|
||||||
@@ -496,8 +497,6 @@ enum opcode {
|
|||||||
VS_OPCODE_PULL_CONSTANT_LOAD_GEN7,
|
VS_OPCODE_PULL_CONSTANT_LOAD_GEN7,
|
||||||
VS_OPCODE_SET_SIMD4X2_HEADER_GEN9,
|
VS_OPCODE_SET_SIMD4X2_HEADER_GEN9,
|
||||||
|
|
||||||
VS_OPCODE_GET_BUFFER_SIZE,
|
|
||||||
|
|
||||||
VS_OPCODE_UNPACK_FLAGS_SIMD4X2,
|
VS_OPCODE_UNPACK_FLAGS_SIMD4X2,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -5007,7 +5007,7 @@ get_lowered_simd_width(const struct gen_device_info *devinfo,
|
|||||||
return MIN2(8, inst->exec_size);
|
return MIN2(8, inst->exec_size);
|
||||||
|
|
||||||
case FS_OPCODE_LINTERP:
|
case FS_OPCODE_LINTERP:
|
||||||
case FS_OPCODE_GET_BUFFER_SIZE:
|
case SHADER_OPCODE_GET_BUFFER_SIZE:
|
||||||
case FS_OPCODE_DDX_COARSE:
|
case FS_OPCODE_DDX_COARSE:
|
||||||
case FS_OPCODE_DDX_FINE:
|
case FS_OPCODE_DDX_FINE:
|
||||||
case FS_OPCODE_DDY_COARSE:
|
case FS_OPCODE_DDY_COARSE:
|
||||||
|
@@ -1964,7 +1964,7 @@ fs_generator::generate_code(const cfg_t *cfg, int dispatch_width)
|
|||||||
src[0].subnr = 4 * type_sz(src[0].type);
|
src[0].subnr = 4 * type_sz(src[0].type);
|
||||||
brw_MOV(p, dst, stride(src[0], 8, 4, 1));
|
brw_MOV(p, dst, stride(src[0], 8, 4, 1));
|
||||||
break;
|
break;
|
||||||
case FS_OPCODE_GET_BUFFER_SIZE:
|
case SHADER_OPCODE_GET_BUFFER_SIZE:
|
||||||
generate_get_buffer_size(inst, dst, src[0], src[1]);
|
generate_get_buffer_size(inst, dst, src[0], src[1]);
|
||||||
break;
|
break;
|
||||||
case SHADER_OPCODE_TEX:
|
case SHADER_OPCODE_TEX:
|
||||||
|
@@ -4290,7 +4290,7 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr
|
|||||||
ubld.MOV(src_payload, brw_imm_d(0));
|
ubld.MOV(src_payload, brw_imm_d(0));
|
||||||
|
|
||||||
const unsigned index = prog_data->binding_table.ssbo_start + ssbo_index;
|
const unsigned index = prog_data->binding_table.ssbo_start + ssbo_index;
|
||||||
fs_inst *inst = ubld.emit(FS_OPCODE_GET_BUFFER_SIZE, ret_payload,
|
fs_inst *inst = ubld.emit(SHADER_OPCODE_GET_BUFFER_SIZE, ret_payload,
|
||||||
src_payload, brw_imm_ud(index));
|
src_payload, brw_imm_ud(index));
|
||||||
inst->header_size = 0;
|
inst->header_size = 0;
|
||||||
inst->mlen = 1;
|
inst->mlen = 1;
|
||||||
|
@@ -331,6 +331,9 @@ brw_instruction_name(const struct gen_device_info *devinfo, enum opcode op)
|
|||||||
case SHADER_OPCODE_BROADCAST:
|
case SHADER_OPCODE_BROADCAST:
|
||||||
return "broadcast";
|
return "broadcast";
|
||||||
|
|
||||||
|
case SHADER_OPCODE_GET_BUFFER_SIZE:
|
||||||
|
return "get_buffer_size";
|
||||||
|
|
||||||
case VEC4_OPCODE_MOV_BYTES:
|
case VEC4_OPCODE_MOV_BYTES:
|
||||||
return "mov_bytes";
|
return "mov_bytes";
|
||||||
case VEC4_OPCODE_PACK_BYTES:
|
case VEC4_OPCODE_PACK_BYTES:
|
||||||
@@ -373,9 +376,6 @@ brw_instruction_name(const struct gen_device_info *devinfo, enum opcode op)
|
|||||||
case FS_OPCODE_PIXEL_Y:
|
case FS_OPCODE_PIXEL_Y:
|
||||||
return "pixel_y";
|
return "pixel_y";
|
||||||
|
|
||||||
case FS_OPCODE_GET_BUFFER_SIZE:
|
|
||||||
return "fs_get_buffer_size";
|
|
||||||
|
|
||||||
case FS_OPCODE_UNIFORM_PULL_CONSTANT_LOAD:
|
case FS_OPCODE_UNIFORM_PULL_CONSTANT_LOAD:
|
||||||
return "uniform_pull_const";
|
return "uniform_pull_const";
|
||||||
case FS_OPCODE_UNIFORM_PULL_CONSTANT_LOAD_GEN7:
|
case FS_OPCODE_UNIFORM_PULL_CONSTANT_LOAD_GEN7:
|
||||||
@@ -422,9 +422,6 @@ brw_instruction_name(const struct gen_device_info *devinfo, enum opcode op)
|
|||||||
case VS_OPCODE_SET_SIMD4X2_HEADER_GEN9:
|
case VS_OPCODE_SET_SIMD4X2_HEADER_GEN9:
|
||||||
return "set_simd4x2_header_gen9";
|
return "set_simd4x2_header_gen9";
|
||||||
|
|
||||||
case VS_OPCODE_GET_BUFFER_SIZE:
|
|
||||||
return "vs_get_buffer_size";
|
|
||||||
|
|
||||||
case VS_OPCODE_UNPACK_FLAGS_SIMD4X2:
|
case VS_OPCODE_UNPACK_FLAGS_SIMD4X2:
|
||||||
return "unpack_flags_simd4x2";
|
return "unpack_flags_simd4x2";
|
||||||
|
|
||||||
|
@@ -361,7 +361,7 @@ vec4_visitor::implied_mrf_writes(vec4_instruction *inst)
|
|||||||
case SHADER_OPCODE_TG4:
|
case SHADER_OPCODE_TG4:
|
||||||
case SHADER_OPCODE_TG4_OFFSET:
|
case SHADER_OPCODE_TG4_OFFSET:
|
||||||
case SHADER_OPCODE_SAMPLEINFO:
|
case SHADER_OPCODE_SAMPLEINFO:
|
||||||
case VS_OPCODE_GET_BUFFER_SIZE:
|
case SHADER_OPCODE_GET_BUFFER_SIZE:
|
||||||
return inst->header_size;
|
return inst->header_size;
|
||||||
default:
|
default:
|
||||||
unreachable("not reached");
|
unreachable("not reached");
|
||||||
|
@@ -1773,6 +1773,10 @@ generate_code(struct brw_codegen *p,
|
|||||||
inst, dst, src[0], src[1], src[2]);
|
inst, dst, src[0], src[1], src[2]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SHADER_OPCODE_GET_BUFFER_SIZE:
|
||||||
|
generate_get_buffer_size(p, prog_data, inst, dst, src[0], src[1]);
|
||||||
|
break;
|
||||||
|
|
||||||
case VS_OPCODE_URB_WRITE:
|
case VS_OPCODE_URB_WRITE:
|
||||||
generate_vs_urb_write(p, inst);
|
generate_vs_urb_write(p, inst);
|
||||||
break;
|
break;
|
||||||
@@ -1799,11 +1803,6 @@ generate_code(struct brw_codegen *p,
|
|||||||
generate_set_simd4x2_header_gen9(p, inst, dst);
|
generate_set_simd4x2_header_gen9(p, inst, dst);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case VS_OPCODE_GET_BUFFER_SIZE:
|
|
||||||
generate_get_buffer_size(p, prog_data, inst, dst, src[0], src[1]);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GS_OPCODE_URB_WRITE:
|
case GS_OPCODE_URB_WRITE:
|
||||||
generate_gs_urb_write(p, inst);
|
generate_gs_urb_write(p, inst);
|
||||||
break;
|
break;
|
||||||
|
@@ -455,7 +455,7 @@ vec4_visitor::nir_emit_intrinsic(nir_intrinsic_instr *instr)
|
|||||||
prog_data->base.binding_table.ssbo_start + ssbo_index;
|
prog_data->base.binding_table.ssbo_start + ssbo_index;
|
||||||
dst_reg result_dst = get_nir_dest(instr->dest);
|
dst_reg result_dst = get_nir_dest(instr->dest);
|
||||||
vec4_instruction *inst = new(mem_ctx)
|
vec4_instruction *inst = new(mem_ctx)
|
||||||
vec4_instruction(VS_OPCODE_GET_BUFFER_SIZE, result_dst);
|
vec4_instruction(SHADER_OPCODE_GET_BUFFER_SIZE, result_dst);
|
||||||
|
|
||||||
inst->base_mrf = 2;
|
inst->base_mrf = 2;
|
||||||
inst->mlen = 1; /* always at least one */
|
inst->mlen = 1; /* always at least one */
|
||||||
|
Reference in New Issue
Block a user