From 2d7f96228d5853ea4133d539ba0f5267ce66b198 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Mon, 30 Jan 2023 20:12:05 -0600 Subject: [PATCH] nouveau/mme: Move mme_value into its own header Part-of: --- src/nouveau/mme/mme_builder.h | 68 +--------------------------- src/nouveau/mme/mme_value.h | 84 +++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 67 deletions(-) create mode 100644 src/nouveau/mme/mme_value.h diff --git a/src/nouveau/mme/mme_builder.h b/src/nouveau/mme/mme_builder.h index 4ec456b4550..afb6eb6bfac 100644 --- a/src/nouveau/mme/mme_builder.h +++ b/src/nouveau/mme/mme_builder.h @@ -1,6 +1,7 @@ #ifndef MME_BUILDER_H #define MME_BUILDER_H +#include "mme_value.h" #include "mme_tu104.h" #include "util/bitscan.h" @@ -10,26 +11,6 @@ extern "C" { #endif -enum mme_value_type { - MME_VALUE_TYPE_ZERO, - MME_VALUE_TYPE_IMM, - MME_VALUE_TYPE_REG, -}; - -struct mme_value { - enum mme_value_type type; - - union { - uint32_t imm; - uint32_t reg; - }; -}; - -struct mme_value64 { - struct mme_value lo; - struct mme_value hi; -}; - struct mme_builder; enum mme_tu104_instr_parts { @@ -139,53 +120,6 @@ mme_builder_finish(struct mme_builder *b, size_t *size_out) return mme_tu104_builder_finish(&b->tu104, size_out); } -static inline struct mme_value -mme_zero() -{ - struct mme_value val = { - .type = MME_VALUE_TYPE_ZERO, - }; - return val; -} - -static inline struct mme_value -mme_imm(uint32_t imm) -{ - struct mme_value val = { - .type = MME_VALUE_TYPE_IMM, - .imm = imm, - }; - return val; -} - -static inline bool -mme_is_zero(struct mme_value x) -{ - switch (x.type) { - case MME_VALUE_TYPE_ZERO: return true; - case MME_VALUE_TYPE_IMM: return x.imm == 0; - case MME_VALUE_TYPE_REG: return false; - default: unreachable("Invalid MME value type"); - } -} - -static inline struct mme_value64 -mme_value64(struct mme_value lo, struct mme_value hi) -{ - struct mme_value64 val = { lo, hi }; - return val; -} - -static inline struct mme_value64 -mme_imm64(uint64_t imm) -{ - struct mme_value64 val = { - mme_imm((uint32_t)imm), - mme_imm((uint32_t)(imm >> 32)), - }; - return val; -} - static inline uint8_t __mme_alloc_reg(struct mme_builder *b) { diff --git a/src/nouveau/mme/mme_value.h b/src/nouveau/mme/mme_value.h new file mode 100644 index 00000000000..b550ec913dd --- /dev/null +++ b/src/nouveau/mme/mme_value.h @@ -0,0 +1,84 @@ +#ifndef MME_VALUE_H +#define MME_VALUE_H + +#include +#include + +#include "util/macros.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum mme_value_type { + MME_VALUE_TYPE_ZERO, + MME_VALUE_TYPE_IMM, + MME_VALUE_TYPE_REG, +}; + +struct mme_value { + enum mme_value_type type; + + union { + uint32_t imm; + uint32_t reg; + }; +}; + +struct mme_value64 { + struct mme_value lo; + struct mme_value hi; +}; + +static inline struct mme_value +mme_zero() +{ + struct mme_value val = { + .type = MME_VALUE_TYPE_ZERO, + }; + return val; +} + +static inline struct mme_value +mme_imm(uint32_t imm) +{ + struct mme_value val = { + .type = MME_VALUE_TYPE_IMM, + .imm = imm, + }; + return val; +} + +static inline bool +mme_is_zero(struct mme_value x) +{ + switch (x.type) { + case MME_VALUE_TYPE_ZERO: return true; + case MME_VALUE_TYPE_IMM: return x.imm == 0; + case MME_VALUE_TYPE_REG: return false; + default: unreachable("Invalid MME value type"); + } +} + +static inline struct mme_value64 +mme_value64(struct mme_value lo, struct mme_value hi) +{ + struct mme_value64 val = { lo, hi }; + return val; +} + +static inline struct mme_value64 +mme_imm64(uint64_t imm) +{ + struct mme_value64 val = { + mme_imm((uint32_t)imm), + mme_imm((uint32_t)(imm >> 32)), + }; + return val; +} + +#ifdef __cplusplus +} +#endif + +#endif /* MME_VALUE_H */