diff --git a/src/gallium/drivers/panfrost/pan_jm.c b/src/gallium/drivers/panfrost/pan_jm.c
index 878b7428f34..af01674d454 100644
--- a/src/gallium/drivers/panfrost/pan_jm.c
+++ b/src/gallium/drivers/panfrost/pan_jm.c
@@ -737,7 +737,7 @@ jm_emit_primitive(struct panfrost_batch *batch,
* on Valhall, so we don't need to set that here
*/
} else if (cfg.index_type) {
- cfg.base_vertex_offset = draw->index_bias - ctx->offset_start;
+ cfg.base_vertex_offset = (int64_t)draw->index_bias - ctx->offset_start;
#if PAN_ARCH <= 7
cfg.indices = batch->indices;
diff --git a/src/panfrost/genxml/cs_builder.h b/src/panfrost/genxml/cs_builder.h
index 89b63c14db9..e177e72c912 100644
--- a/src/panfrost/genxml/cs_builder.h
+++ b/src/panfrost/genxml/cs_builder.h
@@ -1621,7 +1621,7 @@ cs_finish_fragment(struct cs_builder *b, bool increment_frag_completed,
static inline void
cs_add32(struct cs_builder *b, struct cs_index dest, struct cs_index src,
- unsigned imm)
+ int32_t imm)
{
cs_emit(b, ADD_IMM32, I) {
I.destination = cs_dst32(b, dest);
@@ -1632,7 +1632,7 @@ cs_add32(struct cs_builder *b, struct cs_index dest, struct cs_index src,
static inline void
cs_add64(struct cs_builder *b, struct cs_index dest, struct cs_index src,
- unsigned imm)
+ int32_t imm)
{
cs_emit(b, ADD_IMM64, I) {
I.destination = cs_dst64(b, dest);
diff --git a/src/panfrost/genxml/decode_csf.c b/src/panfrost/genxml/decode_csf.c
index 35fc223eaaa..d5cee354fcf 100644
--- a/src/panfrost/genxml/decode_csf.c
+++ b/src/panfrost/genxml/decode_csf.c
@@ -116,7 +116,7 @@ print_cs_instr(FILE *fp, const uint64_t *instr)
case MALI_CS_OPCODE_MOVE32: {
cs_unpack(instr, CS_MOVE32, I);
- fprintf(fp, "MOVE32 r%u, #0x%X", I.destination, I.immediate);
+ fprintf(fp, "MOVE32 r%u, #0x%" PRIX64, I.destination, I.immediate);
break;
}
@@ -156,7 +156,7 @@ print_cs_instr(FILE *fp, const uint64_t *instr)
cs_unpack(instr, CS_RUN_IDVS, I);
fprintf(
fp,
- "RUN_IDVS%s%s%s.varying_srt%d.varying_fau%d.varying_tsd%d.frag_srt%d.frag_tsd%d r%u, #%x",
+ "RUN_IDVS%s%s%s.varying_srt%d.varying_fau%d.varying_tsd%d.frag_srt%d.frag_tsd%d r%u, #%" PRIx64,
I.progress_increment ? ".progress_inc" : "",
I.malloc_enable ? "" : ".no_malloc",
I.draw_id_register_enable ? ".draw_id_enable" : "",
@@ -176,7 +176,7 @@ print_cs_instr(FILE *fp, const uint64_t *instr)
".INVALID",
};
- fprintf(fp, "RUN_IDVS2%s%s%s%s r%u, #%x",
+ fprintf(fp, "RUN_IDVS2%s%s%s%s r%u, #%" PRIx64,
I.progress_increment ? ".progress_inc" : "",
I.malloc_enable ? "" : ".no_malloc",
I.draw_id_register_enable ? ".draw_id_enable" : "",
@@ -195,8 +195,8 @@ print_cs_instr(FILE *fp, const uint64_t *instr)
"BFEXT_U32", "BFEXT_S32", "BFINS_IMM32", "UMIN_IMM32",
};
- fprintf(fp, "%s r%u, r%u, #%d", instr_name[I.sub_opcode], I.destination,
- I.source, I.immediate);
+ fprintf(fp, "%s r%u, r%u, #%" PRId64, instr_name[I.sub_opcode],
+ I.destination, I.source, I.immediate);
break;
}
@@ -208,8 +208,8 @@ print_cs_instr(FILE *fp, const uint64_t *instr)
"BFEXT_U64", "BFEXT_S64", "BFINS_IMM64", "UMIN_IMM64",
};
- fprintf(fp, "%s d%u, d%u, #%d", instr_name[I.sub_opcode], I.destination,
- I.source, I.immediate);
+ fprintf(fp, "%s d%u, d%u, #%" PRId64, instr_name[I.sub_opcode],
+ I.destination, I.source, I.immediate);
break;
}
@@ -309,7 +309,7 @@ print_cs_instr(FILE *fp, const uint64_t *instr)
const char *state =
I.state <= sizeof(state_name) ? state_name[I.state] : ".INVALID";
- fprintf(fp, "SET_STATE_IMM32%s #%u", state, I.value);
+ fprintf(fp, "SET_STATE_IMM32%s #%" PRIu64, state, I.value);
break;
}
@@ -364,7 +364,7 @@ print_cs_instr(FILE *fp, const uint64_t *instr)
case MALI_CS_OPCODE_RUN_FULLSCREEN: {
cs_unpack(instr, CS_RUN_FULLSCREEN, I);
- fprintf(fp, "RUN_FULLSCREEN%s r%u, #%x",
+ fprintf(fp, "RUN_FULLSCREEN%s r%u, #%" PRIx64,
I.progress_increment ? ".progress_inc" : "", I.dcd,
I.flags_override);
break;
@@ -390,16 +390,16 @@ print_cs_instr(FILE *fp, const uint64_t *instr)
case MALI_CS_OPCODE_ADD_IMMEDIATE32: {
cs_unpack(instr, CS_ADD_IMM32, I);
- fprintf(fp, "ADD_IMMEDIATE32 r%u, r%u, #%d", I.destination, I.source,
- I.immediate);
+ fprintf(fp, "ADD_IMMEDIATE32 r%u, r%u, #%" PRId64, I.destination,
+ I.source, I.immediate);
break;
}
case MALI_CS_OPCODE_ADD_IMMEDIATE64: {
cs_unpack(instr, CS_ADD_IMM64, I);
- fprintf(fp, "ADD_IMMEDIATE64 d%u, d%u, #%d", I.destination, I.source,
- I.immediate);
+ fprintf(fp, "ADD_IMMEDIATE64 d%u, d%u, #%" PRId64, I.destination,
+ I.source, I.immediate);
break;
}
diff --git a/src/panfrost/genxml/gen_pack.py b/src/panfrost/genxml/gen_pack.py
index 233dd6463bd..39406b6f25e 100644
--- a/src/panfrost/genxml/gen_pack.py
+++ b/src/panfrost/genxml/gen_pack.py
@@ -196,10 +196,10 @@ class Field(object):
type = 'bool'
elif self.type in ['float', 'ulod', 'slod']:
type = 'float'
- elif self.type in ['uint', 'hex'] and self.end - self.start > 32:
+ elif self.type in ['uint', 'hex'] and self.end - self.start >= 31:
type = 'uint64_t'
elif self.type == 'int':
- type = 'int32_t'
+ type = 'int64_t' if self.end - self.start >= 31 else 'int32_t'
elif self.type in ['uint', 'hex', 'uint/float', 'padded', 'Pixel Format', 'Component Swizzle']:
type = 'uint32_t'
elif self.type in self.parser.structs:
@@ -488,12 +488,12 @@ class Group(object):
elif field.type in self.parser.enums:
print(' fprintf(fp, "%*s{}: %s\\n", indent, "", {}_as_str({}));'.format(name, enum_name(field.type), val))
elif field.type == "int":
- print(' fprintf(fp, "%*s{}: %d\\n", indent, "", {});'.format(name, val))
+ print(' fprintf(fp, "%*s{}: %" PRId64 "\\n", indent, "", (int64_t){});'.format(name, val))
elif field.type == "bool":
print(' fprintf(fp, "%*s{}: %s\\n", indent, "", {} ? "true" : "false");'.format(name, val))
elif field.type in ["float", "ulod", "slod"]:
print(' fprintf(fp, "%*s{}: %f\\n", indent, "", {});'.format(name, val))
- elif field.type in ["uint", "hex"] and (field.end - field.start) >= 32:
+ elif field.type in ["uint", "hex"] and (field.end - field.start) >= 31:
print(' fprintf(fp, "%*s{}: 0x%" PRIx64 "\\n", indent, "", {});'.format(name, val))
elif field.type == "hex":
print(' fprintf(fp, "%*s{}: 0x%x\\n", indent, "", {});'.format(name, val))
diff --git a/src/panfrost/genxml/v4.xml b/src/panfrost/genxml/v4.xml
index 476830ee90f..9ce4c7b9c9f 100644
--- a/src/panfrost/genxml/v4.xml
+++ b/src/panfrost/genxml/v4.xml
@@ -524,8 +524,8 @@
-
-
+
+
diff --git a/src/panfrost/genxml/v5.xml b/src/panfrost/genxml/v5.xml
index 9c790dd0059..8c93016810f 100644
--- a/src/panfrost/genxml/v5.xml
+++ b/src/panfrost/genxml/v5.xml
@@ -559,8 +559,8 @@
-
-
+
+
diff --git a/src/panfrost/genxml/v6.xml b/src/panfrost/genxml/v6.xml
index 6d7eb31b081..559628cbfdc 100644
--- a/src/panfrost/genxml/v6.xml
+++ b/src/panfrost/genxml/v6.xml
@@ -600,8 +600,8 @@
-
-
+
+
diff --git a/src/panfrost/genxml/v7.xml b/src/panfrost/genxml/v7.xml
index 1f13939e09e..d5a9ceb2daa 100644
--- a/src/panfrost/genxml/v7.xml
+++ b/src/panfrost/genxml/v7.xml
@@ -656,8 +656,8 @@
-
-
+
+
diff --git a/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c
index 285a124dcca..c1df1c0549c 100644
--- a/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c
+++ b/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c
@@ -856,7 +856,7 @@ panvk_emit_tiler_primitive(struct panvk_cmd_buffer *cmdbuf,
cfg.index_count = draw->info.vertex.count;
cfg.indices = draw->indices;
cfg.base_vertex_offset =
- draw->info.vertex.base - draw->info.vertex.raw_offset;
+ (int64_t)draw->info.vertex.base - draw->info.vertex.raw_offset;
switch (draw->info.index.size) {
case 4: