st/mesa,tgsi: use enum tgsi_opcode
Need to update the tgsi code and st_glsl_to_tgsi code at the same time to prevent compile break since C++ is much pickier about implicit enum/unsigned casting. Bump size of glsl_to_tgsi_instruction::op to 10 bits to be sure to avoid MSVC signed enum overflow issue. No change in class size. Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
ccecb2bbd3
commit
ec478cf9c3
|
@ -51,7 +51,7 @@ static const struct tgsi_opcode_info opcode_info[TGSI_OPCODE_LAST] =
|
||||||
#undef OPCODE_GAP
|
#undef OPCODE_GAP
|
||||||
|
|
||||||
const struct tgsi_opcode_info *
|
const struct tgsi_opcode_info *
|
||||||
tgsi_get_opcode_info( uint opcode )
|
tgsi_get_opcode_info(enum tgsi_opcode opcode)
|
||||||
{
|
{
|
||||||
static boolean firsttime = 1;
|
static boolean firsttime = 1;
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ static const char * const opcode_names[TGSI_OPCODE_LAST] =
|
||||||
#undef OPCODE_GAP
|
#undef OPCODE_GAP
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
tgsi_get_opcode_name( uint opcode )
|
tgsi_get_opcode_name(enum tgsi_opcode opcode)
|
||||||
{
|
{
|
||||||
if (opcode >= ARRAY_SIZE(opcode_names))
|
if (opcode >= ARRAY_SIZE(opcode_names))
|
||||||
return "UNK_OOB";
|
return "UNK_OOB";
|
||||||
|
@ -120,7 +120,7 @@ tgsi_get_processor_name(enum pipe_shader_type processor)
|
||||||
* MOV and UCMP is special so return VOID
|
* MOV and UCMP is special so return VOID
|
||||||
*/
|
*/
|
||||||
static inline enum tgsi_opcode_type
|
static inline enum tgsi_opcode_type
|
||||||
tgsi_opcode_infer_type( uint opcode )
|
tgsi_opcode_infer_type(enum tgsi_opcode opcode)
|
||||||
{
|
{
|
||||||
switch (opcode) {
|
switch (opcode) {
|
||||||
case TGSI_OPCODE_MOV:
|
case TGSI_OPCODE_MOV:
|
||||||
|
@ -246,7 +246,7 @@ tgsi_opcode_infer_type( uint opcode )
|
||||||
* infer the source type of a TGSI opcode.
|
* infer the source type of a TGSI opcode.
|
||||||
*/
|
*/
|
||||||
enum tgsi_opcode_type
|
enum tgsi_opcode_type
|
||||||
tgsi_opcode_infer_src_type(uint opcode, uint src_idx)
|
tgsi_opcode_infer_src_type(enum tgsi_opcode opcode, uint src_idx)
|
||||||
{
|
{
|
||||||
if (src_idx == 1 &&
|
if (src_idx == 1 &&
|
||||||
(opcode == TGSI_OPCODE_DLDEXP || opcode == TGSI_OPCODE_LDEXP))
|
(opcode == TGSI_OPCODE_DLDEXP || opcode == TGSI_OPCODE_LDEXP))
|
||||||
|
@ -317,7 +317,7 @@ tgsi_opcode_infer_src_type(uint opcode, uint src_idx)
|
||||||
* infer the destination type of a TGSI opcode.
|
* infer the destination type of a TGSI opcode.
|
||||||
*/
|
*/
|
||||||
enum tgsi_opcode_type
|
enum tgsi_opcode_type
|
||||||
tgsi_opcode_infer_dst_type( uint opcode, uint dst_idx )
|
tgsi_opcode_infer_dst_type(enum tgsi_opcode opcode, uint dst_idx)
|
||||||
{
|
{
|
||||||
if (dst_idx == 1 && opcode == TGSI_OPCODE_DFRACEXP)
|
if (dst_idx == 1 && opcode == TGSI_OPCODE_DFRACEXP)
|
||||||
return TGSI_TYPE_SIGNED;
|
return TGSI_TYPE_SIGNED;
|
||||||
|
|
|
@ -79,14 +79,14 @@ struct tgsi_opcode_info
|
||||||
unsigned pre_dedent:1;
|
unsigned pre_dedent:1;
|
||||||
unsigned post_indent:1;
|
unsigned post_indent:1;
|
||||||
enum tgsi_output_mode output_mode:4;
|
enum tgsi_output_mode output_mode:4;
|
||||||
unsigned opcode:8;
|
enum tgsi_opcode opcode:10;
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct tgsi_opcode_info *
|
const struct tgsi_opcode_info *
|
||||||
tgsi_get_opcode_info( uint opcode );
|
tgsi_get_opcode_info(enum tgsi_opcode opcode);
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
tgsi_get_opcode_name( uint opcode );
|
tgsi_get_opcode_name(enum tgsi_opcode opcode);
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
tgsi_get_processor_name(enum pipe_shader_type processor);
|
tgsi_get_processor_name(enum pipe_shader_type processor);
|
||||||
|
@ -111,10 +111,10 @@ static inline bool tgsi_type_is_64bit(enum tgsi_opcode_type type)
|
||||||
}
|
}
|
||||||
|
|
||||||
enum tgsi_opcode_type
|
enum tgsi_opcode_type
|
||||||
tgsi_opcode_infer_src_type( uint opcode, uint src_idx );
|
tgsi_opcode_infer_src_type(enum tgsi_opcode opcode, uint src_idx);
|
||||||
|
|
||||||
enum tgsi_opcode_type
|
enum tgsi_opcode_type
|
||||||
tgsi_opcode_infer_dst_type( uint opcode, uint dst_idx );
|
tgsi_opcode_infer_dst_type(enum tgsi_opcode opcode, uint dst_idx);
|
||||||
|
|
||||||
#if defined __cplusplus
|
#if defined __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -1234,7 +1234,7 @@ ureg_emit_dst( struct ureg_program *ureg,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void validate( unsigned opcode,
|
static void validate( enum tgsi_opcode opcode,
|
||||||
unsigned nr_dst,
|
unsigned nr_dst,
|
||||||
unsigned nr_src )
|
unsigned nr_src )
|
||||||
{
|
{
|
||||||
|
@ -1250,7 +1250,7 @@ static void validate( unsigned opcode,
|
||||||
|
|
||||||
struct ureg_emit_insn_result
|
struct ureg_emit_insn_result
|
||||||
ureg_emit_insn(struct ureg_program *ureg,
|
ureg_emit_insn(struct ureg_program *ureg,
|
||||||
unsigned opcode,
|
enum tgsi_opcode opcode,
|
||||||
boolean saturate,
|
boolean saturate,
|
||||||
unsigned precise,
|
unsigned precise,
|
||||||
unsigned num_dst,
|
unsigned num_dst,
|
||||||
|
@ -1392,7 +1392,7 @@ ureg_fixup_insn_size(struct ureg_program *ureg,
|
||||||
|
|
||||||
void
|
void
|
||||||
ureg_insn(struct ureg_program *ureg,
|
ureg_insn(struct ureg_program *ureg,
|
||||||
unsigned opcode,
|
enum tgsi_opcode opcode,
|
||||||
const struct ureg_dst *dst,
|
const struct ureg_dst *dst,
|
||||||
unsigned nr_dst,
|
unsigned nr_dst,
|
||||||
const struct ureg_src *src,
|
const struct ureg_src *src,
|
||||||
|
@ -1427,7 +1427,7 @@ ureg_insn(struct ureg_program *ureg,
|
||||||
|
|
||||||
void
|
void
|
||||||
ureg_tex_insn(struct ureg_program *ureg,
|
ureg_tex_insn(struct ureg_program *ureg,
|
||||||
unsigned opcode,
|
enum tgsi_opcode opcode,
|
||||||
const struct ureg_dst *dst,
|
const struct ureg_dst *dst,
|
||||||
unsigned nr_dst,
|
unsigned nr_dst,
|
||||||
enum tgsi_texture_type target,
|
enum tgsi_texture_type target,
|
||||||
|
@ -1472,7 +1472,7 @@ ureg_tex_insn(struct ureg_program *ureg,
|
||||||
|
|
||||||
void
|
void
|
||||||
ureg_memory_insn(struct ureg_program *ureg,
|
ureg_memory_insn(struct ureg_program *ureg,
|
||||||
unsigned opcode,
|
enum tgsi_opcode opcode,
|
||||||
const struct ureg_dst *dst,
|
const struct ureg_dst *dst,
|
||||||
unsigned nr_dst,
|
unsigned nr_dst,
|
||||||
const struct ureg_src *src,
|
const struct ureg_src *src,
|
||||||
|
|
|
@ -550,7 +550,7 @@ ureg_fixup_label(struct ureg_program *ureg,
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
ureg_insn(struct ureg_program *ureg,
|
ureg_insn(struct ureg_program *ureg,
|
||||||
unsigned opcode,
|
enum tgsi_opcode opcode,
|
||||||
const struct ureg_dst *dst,
|
const struct ureg_dst *dst,
|
||||||
unsigned nr_dst,
|
unsigned nr_dst,
|
||||||
const struct ureg_src *src,
|
const struct ureg_src *src,
|
||||||
|
@ -560,7 +560,7 @@ ureg_insn(struct ureg_program *ureg,
|
||||||
|
|
||||||
void
|
void
|
||||||
ureg_tex_insn(struct ureg_program *ureg,
|
ureg_tex_insn(struct ureg_program *ureg,
|
||||||
unsigned opcode,
|
enum tgsi_opcode opcode,
|
||||||
const struct ureg_dst *dst,
|
const struct ureg_dst *dst,
|
||||||
unsigned nr_dst,
|
unsigned nr_dst,
|
||||||
enum tgsi_texture_type target,
|
enum tgsi_texture_type target,
|
||||||
|
@ -573,7 +573,7 @@ ureg_tex_insn(struct ureg_program *ureg,
|
||||||
|
|
||||||
void
|
void
|
||||||
ureg_memory_insn(struct ureg_program *ureg,
|
ureg_memory_insn(struct ureg_program *ureg,
|
||||||
unsigned opcode,
|
enum tgsi_opcode opcode,
|
||||||
const struct ureg_dst *dst,
|
const struct ureg_dst *dst,
|
||||||
unsigned nr_dst,
|
unsigned nr_dst,
|
||||||
const struct ureg_src *src,
|
const struct ureg_src *src,
|
||||||
|
@ -593,7 +593,7 @@ struct ureg_emit_insn_result {
|
||||||
|
|
||||||
struct ureg_emit_insn_result
|
struct ureg_emit_insn_result
|
||||||
ureg_emit_insn(struct ureg_program *ureg,
|
ureg_emit_insn(struct ureg_program *ureg,
|
||||||
unsigned opcode,
|
enum tgsi_opcode opcode,
|
||||||
boolean saturate,
|
boolean saturate,
|
||||||
unsigned precise,
|
unsigned precise,
|
||||||
unsigned num_dst,
|
unsigned num_dst,
|
||||||
|
@ -638,7 +638,7 @@ ureg_fixup_insn_size(struct ureg_program *ureg,
|
||||||
#define OP00( op ) \
|
#define OP00( op ) \
|
||||||
static inline void ureg_##op( struct ureg_program *ureg ) \
|
static inline void ureg_##op( struct ureg_program *ureg ) \
|
||||||
{ \
|
{ \
|
||||||
unsigned opcode = TGSI_OPCODE_##op; \
|
enum tgsi_opcode opcode = TGSI_OPCODE_##op; \
|
||||||
struct ureg_emit_insn_result insn; \
|
struct ureg_emit_insn_result insn; \
|
||||||
insn = ureg_emit_insn(ureg, \
|
insn = ureg_emit_insn(ureg, \
|
||||||
opcode, \
|
opcode, \
|
||||||
|
@ -653,7 +653,7 @@ static inline void ureg_##op( struct ureg_program *ureg ) \
|
||||||
static inline void ureg_##op( struct ureg_program *ureg, \
|
static inline void ureg_##op( struct ureg_program *ureg, \
|
||||||
struct ureg_src src ) \
|
struct ureg_src src ) \
|
||||||
{ \
|
{ \
|
||||||
unsigned opcode = TGSI_OPCODE_##op; \
|
enum tgsi_opcode opcode = TGSI_OPCODE_##op; \
|
||||||
struct ureg_emit_insn_result insn; \
|
struct ureg_emit_insn_result insn; \
|
||||||
insn = ureg_emit_insn(ureg, \
|
insn = ureg_emit_insn(ureg, \
|
||||||
opcode, \
|
opcode, \
|
||||||
|
@ -669,7 +669,7 @@ static inline void ureg_##op( struct ureg_program *ureg, \
|
||||||
static inline void ureg_##op( struct ureg_program *ureg, \
|
static inline void ureg_##op( struct ureg_program *ureg, \
|
||||||
unsigned *label_token ) \
|
unsigned *label_token ) \
|
||||||
{ \
|
{ \
|
||||||
unsigned opcode = TGSI_OPCODE_##op; \
|
enum tgsi_opcode opcode = TGSI_OPCODE_##op; \
|
||||||
struct ureg_emit_insn_result insn; \
|
struct ureg_emit_insn_result insn; \
|
||||||
insn = ureg_emit_insn(ureg, \
|
insn = ureg_emit_insn(ureg, \
|
||||||
opcode, \
|
opcode, \
|
||||||
|
@ -686,7 +686,7 @@ static inline void ureg_##op( struct ureg_program *ureg, \
|
||||||
struct ureg_src src, \
|
struct ureg_src src, \
|
||||||
unsigned *label_token ) \
|
unsigned *label_token ) \
|
||||||
{ \
|
{ \
|
||||||
unsigned opcode = TGSI_OPCODE_##op; \
|
enum tgsi_opcode opcode = TGSI_OPCODE_##op; \
|
||||||
struct ureg_emit_insn_result insn; \
|
struct ureg_emit_insn_result insn; \
|
||||||
insn = ureg_emit_insn(ureg, \
|
insn = ureg_emit_insn(ureg, \
|
||||||
opcode, \
|
opcode, \
|
||||||
|
@ -703,7 +703,7 @@ static inline void ureg_##op( struct ureg_program *ureg, \
|
||||||
static inline void ureg_##op( struct ureg_program *ureg, \
|
static inline void ureg_##op( struct ureg_program *ureg, \
|
||||||
struct ureg_dst dst ) \
|
struct ureg_dst dst ) \
|
||||||
{ \
|
{ \
|
||||||
unsigned opcode = TGSI_OPCODE_##op; \
|
enum tgsi_opcode opcode = TGSI_OPCODE_##op; \
|
||||||
struct ureg_emit_insn_result insn; \
|
struct ureg_emit_insn_result insn; \
|
||||||
if (ureg_dst_is_empty(dst)) \
|
if (ureg_dst_is_empty(dst)) \
|
||||||
return; \
|
return; \
|
||||||
|
@ -723,7 +723,7 @@ static inline void ureg_##op( struct ureg_program *ureg, \
|
||||||
struct ureg_dst dst, \
|
struct ureg_dst dst, \
|
||||||
struct ureg_src src ) \
|
struct ureg_src src ) \
|
||||||
{ \
|
{ \
|
||||||
unsigned opcode = TGSI_OPCODE_##op; \
|
enum tgsi_opcode opcode = TGSI_OPCODE_##op; \
|
||||||
struct ureg_emit_insn_result insn; \
|
struct ureg_emit_insn_result insn; \
|
||||||
if (ureg_dst_is_empty(dst)) \
|
if (ureg_dst_is_empty(dst)) \
|
||||||
return; \
|
return; \
|
||||||
|
@ -744,7 +744,7 @@ static inline void ureg_##op( struct ureg_program *ureg, \
|
||||||
struct ureg_src src0, \
|
struct ureg_src src0, \
|
||||||
struct ureg_src src1 ) \
|
struct ureg_src src1 ) \
|
||||||
{ \
|
{ \
|
||||||
unsigned opcode = TGSI_OPCODE_##op; \
|
enum tgsi_opcode opcode = TGSI_OPCODE_##op; \
|
||||||
struct ureg_emit_insn_result insn; \
|
struct ureg_emit_insn_result insn; \
|
||||||
if (ureg_dst_is_empty(dst)) \
|
if (ureg_dst_is_empty(dst)) \
|
||||||
return; \
|
return; \
|
||||||
|
@ -767,7 +767,7 @@ static inline void ureg_##op( struct ureg_program *ureg, \
|
||||||
struct ureg_src src0, \
|
struct ureg_src src0, \
|
||||||
struct ureg_src src1 ) \
|
struct ureg_src src1 ) \
|
||||||
{ \
|
{ \
|
||||||
unsigned opcode = TGSI_OPCODE_##op; \
|
enum tgsi_opcode opcode = TGSI_OPCODE_##op; \
|
||||||
enum tgsi_return_type return_type = TGSI_RETURN_TYPE_UNKNOWN; \
|
enum tgsi_return_type return_type = TGSI_RETURN_TYPE_UNKNOWN; \
|
||||||
struct ureg_emit_insn_result insn; \
|
struct ureg_emit_insn_result insn; \
|
||||||
if (ureg_dst_is_empty(dst)) \
|
if (ureg_dst_is_empty(dst)) \
|
||||||
|
@ -793,7 +793,7 @@ static inline void ureg_##op( struct ureg_program *ureg, \
|
||||||
struct ureg_src src1, \
|
struct ureg_src src1, \
|
||||||
struct ureg_src src2 ) \
|
struct ureg_src src2 ) \
|
||||||
{ \
|
{ \
|
||||||
unsigned opcode = TGSI_OPCODE_##op; \
|
enum tgsi_opcode opcode = TGSI_OPCODE_##op; \
|
||||||
struct ureg_emit_insn_result insn; \
|
struct ureg_emit_insn_result insn; \
|
||||||
if (ureg_dst_is_empty(dst)) \
|
if (ureg_dst_is_empty(dst)) \
|
||||||
return; \
|
return; \
|
||||||
|
@ -819,7 +819,7 @@ static inline void ureg_##op( struct ureg_program *ureg, \
|
||||||
struct ureg_src src2, \
|
struct ureg_src src2, \
|
||||||
struct ureg_src src3 ) \
|
struct ureg_src src3 ) \
|
||||||
{ \
|
{ \
|
||||||
unsigned opcode = TGSI_OPCODE_##op; \
|
enum tgsi_opcode opcode = TGSI_OPCODE_##op; \
|
||||||
enum tgsi_return_type return_type = TGSI_RETURN_TYPE_UNKNOWN; \
|
enum tgsi_return_type return_type = TGSI_RETURN_TYPE_UNKNOWN; \
|
||||||
struct ureg_emit_insn_result insn; \
|
struct ureg_emit_insn_result insn; \
|
||||||
if (ureg_dst_is_empty(dst)) \
|
if (ureg_dst_is_empty(dst)) \
|
||||||
|
|
|
@ -255,7 +255,7 @@ public:
|
||||||
void visit_membar_intrinsic(ir_call *);
|
void visit_membar_intrinsic(ir_call *);
|
||||||
void visit_shared_intrinsic(ir_call *);
|
void visit_shared_intrinsic(ir_call *);
|
||||||
void visit_image_intrinsic(ir_call *);
|
void visit_image_intrinsic(ir_call *);
|
||||||
void visit_generic_intrinsic(ir_call *, unsigned op);
|
void visit_generic_intrinsic(ir_call *, enum tgsi_opcode op);
|
||||||
|
|
||||||
st_src_reg result;
|
st_src_reg result;
|
||||||
|
|
||||||
|
@ -269,23 +269,23 @@ public:
|
||||||
/** List of glsl_to_tgsi_instruction */
|
/** List of glsl_to_tgsi_instruction */
|
||||||
exec_list instructions;
|
exec_list instructions;
|
||||||
|
|
||||||
glsl_to_tgsi_instruction *emit_asm(ir_instruction *ir, unsigned op,
|
glsl_to_tgsi_instruction *emit_asm(ir_instruction *ir, enum tgsi_opcode op,
|
||||||
st_dst_reg dst = undef_dst,
|
st_dst_reg dst = undef_dst,
|
||||||
st_src_reg src0 = undef_src,
|
st_src_reg src0 = undef_src,
|
||||||
st_src_reg src1 = undef_src,
|
st_src_reg src1 = undef_src,
|
||||||
st_src_reg src2 = undef_src,
|
st_src_reg src2 = undef_src,
|
||||||
st_src_reg src3 = undef_src);
|
st_src_reg src3 = undef_src);
|
||||||
|
|
||||||
glsl_to_tgsi_instruction *emit_asm(ir_instruction *ir, unsigned op,
|
glsl_to_tgsi_instruction *emit_asm(ir_instruction *ir, enum tgsi_opcode op,
|
||||||
st_dst_reg dst, st_dst_reg dst1,
|
st_dst_reg dst, st_dst_reg dst1,
|
||||||
st_src_reg src0 = undef_src,
|
st_src_reg src0 = undef_src,
|
||||||
st_src_reg src1 = undef_src,
|
st_src_reg src1 = undef_src,
|
||||||
st_src_reg src2 = undef_src,
|
st_src_reg src2 = undef_src,
|
||||||
st_src_reg src3 = undef_src);
|
st_src_reg src3 = undef_src);
|
||||||
|
|
||||||
unsigned get_opcode(unsigned op,
|
enum tgsi_opcode get_opcode(enum tgsi_opcode op,
|
||||||
st_dst_reg dst,
|
st_dst_reg dst,
|
||||||
st_src_reg src0, st_src_reg src1);
|
st_src_reg src0, st_src_reg src1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Emit the correct dot-product instruction for the type of arguments
|
* Emit the correct dot-product instruction for the type of arguments
|
||||||
|
@ -296,10 +296,10 @@ public:
|
||||||
st_src_reg src1,
|
st_src_reg src1,
|
||||||
unsigned elements);
|
unsigned elements);
|
||||||
|
|
||||||
void emit_scalar(ir_instruction *ir, unsigned op,
|
void emit_scalar(ir_instruction *ir, enum tgsi_opcode op,
|
||||||
st_dst_reg dst, st_src_reg src0);
|
st_dst_reg dst, st_src_reg src0);
|
||||||
|
|
||||||
void emit_scalar(ir_instruction *ir, unsigned op,
|
void emit_scalar(ir_instruction *ir, enum tgsi_opcode op,
|
||||||
st_dst_reg dst, st_src_reg src0, st_src_reg src1);
|
st_dst_reg dst, st_src_reg src0, st_src_reg src1);
|
||||||
|
|
||||||
void emit_arl(ir_instruction *ir, st_dst_reg dst, st_src_reg src0);
|
void emit_arl(ir_instruction *ir, st_dst_reg dst, st_src_reg src0);
|
||||||
|
@ -386,7 +386,7 @@ swizzle_for_size(int size)
|
||||||
|
|
||||||
|
|
||||||
glsl_to_tgsi_instruction *
|
glsl_to_tgsi_instruction *
|
||||||
glsl_to_tgsi_visitor::emit_asm(ir_instruction *ir, unsigned op,
|
glsl_to_tgsi_visitor::emit_asm(ir_instruction *ir, enum tgsi_opcode op,
|
||||||
st_dst_reg dst, st_dst_reg dst1,
|
st_dst_reg dst, st_dst_reg dst1,
|
||||||
st_src_reg src0, st_src_reg src1,
|
st_src_reg src0, st_src_reg src1,
|
||||||
st_src_reg src2, st_src_reg src3)
|
st_src_reg src2, st_src_reg src3)
|
||||||
|
@ -627,7 +627,7 @@ glsl_to_tgsi_visitor::emit_asm(ir_instruction *ir, unsigned op,
|
||||||
}
|
}
|
||||||
|
|
||||||
glsl_to_tgsi_instruction *
|
glsl_to_tgsi_instruction *
|
||||||
glsl_to_tgsi_visitor::emit_asm(ir_instruction *ir, unsigned op,
|
glsl_to_tgsi_visitor::emit_asm(ir_instruction *ir, enum tgsi_opcode op,
|
||||||
st_dst_reg dst,
|
st_dst_reg dst,
|
||||||
st_src_reg src0, st_src_reg src1,
|
st_src_reg src0, st_src_reg src1,
|
||||||
st_src_reg src2, st_src_reg src3)
|
st_src_reg src2, st_src_reg src3)
|
||||||
|
@ -639,8 +639,8 @@ glsl_to_tgsi_visitor::emit_asm(ir_instruction *ir, unsigned op,
|
||||||
* Determines whether to use an integer, unsigned integer, or float opcode
|
* Determines whether to use an integer, unsigned integer, or float opcode
|
||||||
* based on the operands and input opcode, then emits the result.
|
* based on the operands and input opcode, then emits the result.
|
||||||
*/
|
*/
|
||||||
unsigned
|
enum tgsi_opcode
|
||||||
glsl_to_tgsi_visitor::get_opcode(unsigned op,
|
glsl_to_tgsi_visitor::get_opcode(enum tgsi_opcode op,
|
||||||
st_dst_reg dst,
|
st_dst_reg dst,
|
||||||
st_src_reg src0, st_src_reg src1)
|
st_src_reg src0, st_src_reg src1)
|
||||||
{
|
{
|
||||||
|
@ -751,7 +751,7 @@ glsl_to_tgsi_visitor::emit_dp(ir_instruction *ir,
|
||||||
st_dst_reg dst, st_src_reg src0, st_src_reg src1,
|
st_dst_reg dst, st_src_reg src0, st_src_reg src1,
|
||||||
unsigned elements)
|
unsigned elements)
|
||||||
{
|
{
|
||||||
static const unsigned dot_opcodes[] = {
|
static const enum tgsi_opcode dot_opcodes[] = {
|
||||||
TGSI_OPCODE_DP2, TGSI_OPCODE_DP3, TGSI_OPCODE_DP4
|
TGSI_OPCODE_DP2, TGSI_OPCODE_DP3, TGSI_OPCODE_DP4
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -767,7 +767,7 @@ glsl_to_tgsi_visitor::emit_dp(ir_instruction *ir,
|
||||||
* to produce dest channels.
|
* to produce dest channels.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
glsl_to_tgsi_visitor::emit_scalar(ir_instruction *ir, unsigned op,
|
glsl_to_tgsi_visitor::emit_scalar(ir_instruction *ir, enum tgsi_opcode op,
|
||||||
st_dst_reg dst,
|
st_dst_reg dst,
|
||||||
st_src_reg orig_src0, st_src_reg orig_src1)
|
st_src_reg orig_src0, st_src_reg orig_src1)
|
||||||
{
|
{
|
||||||
|
@ -811,7 +811,7 @@ glsl_to_tgsi_visitor::emit_scalar(ir_instruction *ir, unsigned op,
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
glsl_to_tgsi_visitor::emit_scalar(ir_instruction *ir, unsigned op,
|
glsl_to_tgsi_visitor::emit_scalar(ir_instruction *ir, enum tgsi_opcode op,
|
||||||
st_dst_reg dst, st_src_reg src0)
|
st_dst_reg dst, st_src_reg src0)
|
||||||
{
|
{
|
||||||
st_src_reg undef = undef_src;
|
st_src_reg undef = undef_src;
|
||||||
|
@ -825,7 +825,7 @@ void
|
||||||
glsl_to_tgsi_visitor::emit_arl(ir_instruction *ir,
|
glsl_to_tgsi_visitor::emit_arl(ir_instruction *ir,
|
||||||
st_dst_reg dst, st_src_reg src0)
|
st_dst_reg dst, st_src_reg src0)
|
||||||
{
|
{
|
||||||
int op = TGSI_OPCODE_ARL;
|
enum tgsi_opcode op = TGSI_OPCODE_ARL;
|
||||||
|
|
||||||
if (src0.type == GLSL_TYPE_INT || src0.type == GLSL_TYPE_UINT) {
|
if (src0.type == GLSL_TYPE_INT || src0.type == GLSL_TYPE_UINT) {
|
||||||
if (!this->need_uarl && src0.is_legal_tgsi_address_operand())
|
if (!this->need_uarl && src0.is_legal_tgsi_address_operand())
|
||||||
|
@ -983,7 +983,7 @@ add_buffer_to_load_and_stores(glsl_to_tgsi_instruction *inst, st_src_reg *buf,
|
||||||
* emit_asm() might have actually split the op into pieces, e.g. for
|
* emit_asm() might have actually split the op into pieces, e.g. for
|
||||||
* double stores. We have to go back and fix up all the generated ops.
|
* double stores. We have to go back and fix up all the generated ops.
|
||||||
*/
|
*/
|
||||||
unsigned op = inst->op;
|
enum tgsi_opcode op = inst->op;
|
||||||
do {
|
do {
|
||||||
inst->resource = *buf;
|
inst->resource = *buf;
|
||||||
if (access)
|
if (access)
|
||||||
|
@ -1909,8 +1909,8 @@ glsl_to_tgsi_visitor::visit_expression(ir_expression* ir, st_src_reg *op)
|
||||||
case ir_binop_lshift:
|
case ir_binop_lshift:
|
||||||
case ir_binop_rshift:
|
case ir_binop_rshift:
|
||||||
if (native_integers) {
|
if (native_integers) {
|
||||||
unsigned opcode = ir->operation == ir_binop_lshift ? TGSI_OPCODE_SHL
|
enum tgsi_opcode opcode = ir->operation == ir_binop_lshift
|
||||||
: TGSI_OPCODE_ISHR;
|
? TGSI_OPCODE_SHL : TGSI_OPCODE_ISHR;
|
||||||
st_src_reg count;
|
st_src_reg count;
|
||||||
|
|
||||||
if (glsl_base_type_is_64bit(op[0].type)) {
|
if (glsl_base_type_is_64bit(op[0].type)) {
|
||||||
|
@ -3377,7 +3377,7 @@ glsl_to_tgsi_visitor::visit_atomic_counter_intrinsic(ir_call *ir)
|
||||||
val->accept(this);
|
val->accept(this);
|
||||||
|
|
||||||
st_src_reg data = this->result, data2 = undef_src;
|
st_src_reg data = this->result, data2 = undef_src;
|
||||||
unsigned opcode;
|
enum tgsi_opcode opcode;
|
||||||
switch (ir->callee->intrinsic_id) {
|
switch (ir->callee->intrinsic_id) {
|
||||||
case ir_intrinsic_atomic_counter_add:
|
case ir_intrinsic_atomic_counter_add:
|
||||||
opcode = TGSI_OPCODE_ATOMUADD;
|
opcode = TGSI_OPCODE_ATOMUADD;
|
||||||
|
@ -3480,7 +3480,7 @@ glsl_to_tgsi_visitor::visit_ssbo_intrinsic(ir_call *ir)
|
||||||
val->accept(this);
|
val->accept(this);
|
||||||
|
|
||||||
st_src_reg data = this->result, data2 = undef_src;
|
st_src_reg data = this->result, data2 = undef_src;
|
||||||
unsigned opcode;
|
enum tgsi_opcode opcode;
|
||||||
switch (ir->callee->intrinsic_id) {
|
switch (ir->callee->intrinsic_id) {
|
||||||
case ir_intrinsic_ssbo_atomic_add:
|
case ir_intrinsic_ssbo_atomic_add:
|
||||||
opcode = TGSI_OPCODE_ATOMUADD;
|
opcode = TGSI_OPCODE_ATOMUADD;
|
||||||
|
@ -3612,7 +3612,7 @@ glsl_to_tgsi_visitor::visit_shared_intrinsic(ir_call *ir)
|
||||||
val->accept(this);
|
val->accept(this);
|
||||||
|
|
||||||
st_src_reg data = this->result, data2 = undef_src;
|
st_src_reg data = this->result, data2 = undef_src;
|
||||||
unsigned opcode;
|
enum tgsi_opcode opcode;
|
||||||
switch (ir->callee->intrinsic_id) {
|
switch (ir->callee->intrinsic_id) {
|
||||||
case ir_intrinsic_shared_atomic_add:
|
case ir_intrinsic_shared_atomic_add:
|
||||||
opcode = TGSI_OPCODE_ATOMUADD;
|
opcode = TGSI_OPCODE_ATOMUADD;
|
||||||
|
@ -3797,7 +3797,7 @@ glsl_to_tgsi_visitor::visit_image_intrinsic(ir_call *ir)
|
||||||
|
|
||||||
assert(param->is_tail_sentinel());
|
assert(param->is_tail_sentinel());
|
||||||
|
|
||||||
unsigned opcode;
|
enum tgsi_opcode opcode;
|
||||||
switch (ir->callee->intrinsic_id) {
|
switch (ir->callee->intrinsic_id) {
|
||||||
case ir_intrinsic_image_load:
|
case ir_intrinsic_image_load:
|
||||||
opcode = TGSI_OPCODE_LOAD;
|
opcode = TGSI_OPCODE_LOAD;
|
||||||
|
@ -3862,7 +3862,7 @@ glsl_to_tgsi_visitor::visit_image_intrinsic(ir_call *ir)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
glsl_to_tgsi_visitor::visit_generic_intrinsic(ir_call *ir, unsigned op)
|
glsl_to_tgsi_visitor::visit_generic_intrinsic(ir_call *ir, enum tgsi_opcode op)
|
||||||
{
|
{
|
||||||
ir->return_deref->accept(this);
|
ir->return_deref->accept(this);
|
||||||
st_dst_reg dst = st_dst_reg(this->result);
|
st_dst_reg dst = st_dst_reg(this->result);
|
||||||
|
@ -4115,7 +4115,7 @@ glsl_to_tgsi_visitor::visit(ir_texture *ir)
|
||||||
st_src_reg levels_src, reladdr;
|
st_src_reg levels_src, reladdr;
|
||||||
st_dst_reg result_dst, coord_dst, cube_sc_dst;
|
st_dst_reg result_dst, coord_dst, cube_sc_dst;
|
||||||
glsl_to_tgsi_instruction *inst = NULL;
|
glsl_to_tgsi_instruction *inst = NULL;
|
||||||
unsigned opcode = TGSI_OPCODE_NOP;
|
enum tgsi_opcode opcode = TGSI_OPCODE_NOP;
|
||||||
const glsl_type *sampler_type = ir->sampler->type;
|
const glsl_type *sampler_type = ir->sampler->type;
|
||||||
unsigned sampler_array_size = 1, sampler_base = 0;
|
unsigned sampler_array_size = 1, sampler_base = 0;
|
||||||
bool is_cube_array = false, is_cube_shadow = false;
|
bool is_cube_array = false, is_cube_shadow = false;
|
||||||
|
@ -4458,7 +4458,7 @@ glsl_to_tgsi_visitor::visit(ir_discard *ir)
|
||||||
void
|
void
|
||||||
glsl_to_tgsi_visitor::visit(ir_if *ir)
|
glsl_to_tgsi_visitor::visit(ir_if *ir)
|
||||||
{
|
{
|
||||||
unsigned if_opcode;
|
enum tgsi_opcode if_opcode;
|
||||||
glsl_to_tgsi_instruction *if_inst;
|
glsl_to_tgsi_instruction *if_inst;
|
||||||
|
|
||||||
ir->condition->accept(this);
|
ir->condition->accept(this);
|
||||||
|
@ -6323,7 +6323,8 @@ st_translate_program(
|
||||||
(gl_texture_index) (NUM_TEXTURE_TARGETS - 1));
|
(gl_texture_index) (NUM_TEXTURE_TARGETS - 1));
|
||||||
ASSERT_BITFIELD_SIZE(glsl_to_tgsi_instruction, image_format,
|
ASSERT_BITFIELD_SIZE(glsl_to_tgsi_instruction, image_format,
|
||||||
(enum pipe_format) (PIPE_FORMAT_COUNT - 1));
|
(enum pipe_format) (PIPE_FORMAT_COUNT - 1));
|
||||||
ASSERT_BITFIELD_SIZE(glsl_to_tgsi_instruction, op, TGSI_OPCODE_LAST - 1);
|
ASSERT_BITFIELD_SIZE(glsl_to_tgsi_instruction, op,
|
||||||
|
(enum tgsi_opcode) (TGSI_OPCODE_LAST - 1));
|
||||||
|
|
||||||
t = CALLOC_STRUCT(st_translate);
|
t = CALLOC_STRUCT(st_translate);
|
||||||
if (!t) {
|
if (!t) {
|
||||||
|
|
|
@ -131,7 +131,7 @@ public:
|
||||||
/** Pointer to the ir source this tree came fe02549fdrom for debugging */
|
/** Pointer to the ir source this tree came fe02549fdrom for debugging */
|
||||||
ir_instruction *ir;
|
ir_instruction *ir;
|
||||||
|
|
||||||
unsigned op:8; /**< TGSI opcode */
|
enum tgsi_opcode op:10; /**< TGSI opcode */
|
||||||
unsigned precise:1;
|
unsigned precise:1;
|
||||||
unsigned saturate:1;
|
unsigned saturate:1;
|
||||||
unsigned is_64bit_expanded:1;
|
unsigned is_64bit_expanded:1;
|
||||||
|
|
Loading…
Reference in New Issue