From 9e1a868b6d0c0730d538e1c1a4614b7e4967c8e3 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Mon, 30 Jan 2023 20:12:05 -0600 Subject: [PATCH] nouveau/mme: Move the guts of mme_merge_to() into mme_tu104_builder.c It's going to be a bit different on Fermi. Part-of: --- src/nouveau/mme/mme_builder.h | 7 +------ src/nouveau/mme/mme_tu104_builder.c | 13 ++++++++++++- src/nouveau/mme/mme_tu104_builder.h | 4 ++++ 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/nouveau/mme/mme_builder.h b/src/nouveau/mme/mme_builder.h index 16ef7a2..d1a1122 100644 --- a/src/nouveau/mme/mme_builder.h +++ b/src/nouveau/mme/mme_builder.h @@ -27,7 +27,6 @@ enum mme_alu_op { MME_ALU_OP_NAND, MME_ALU_OP_OR, MME_ALU_OP_XOR, - MME_ALU_OP_MERGE, MME_ALU_OP_SLT, MME_ALU_OP_SLTU, MME_ALU_OP_SLE, @@ -293,11 +292,7 @@ mme_merge_to(struct mme_builder *b, struct mme_value dst, struct mme_value x, struct mme_value y, uint16_t dst_pos, uint16_t bits, uint16_t src_pos) { - assert(dst_pos < 32); - assert(bits < 32); - assert(src_pos < 32); - mme_alu_to(b, dst, MME_ALU_OP_MERGE, x, y, - (dst_pos << 10) | (bits << 5) | src_pos); + mme_tu104_merge_to(b, dst, x, y, dst_pos, bits, src_pos); } static inline struct mme_value diff --git a/src/nouveau/mme/mme_tu104_builder.c b/src/nouveau/mme/mme_tu104_builder.c index 141fd00..ff7f5fb 100644 --- a/src/nouveau/mme/mme_tu104_builder.c +++ b/src/nouveau/mme/mme_tu104_builder.c @@ -303,7 +303,6 @@ mme_to_tu104_alu_op(enum mme_alu_op op) ALU_CASE(NAND) ALU_CASE(OR) ALU_CASE(XOR) - ALU_CASE(MERGE) ALU_CASE(SLT) ALU_CASE(SLTU) ALU_CASE(SLE) @@ -353,6 +352,18 @@ mme_tu104_alu64_to(struct mme_builder *b, } void +mme_tu104_merge_to(struct mme_builder *b, struct mme_value dst, + struct mme_value x, struct mme_value y, + uint16_t dst_pos, uint16_t bits, uint16_t src_pos) +{ + assert(dst_pos < 32); + assert(bits < 32); + assert(src_pos < 32); + uint32_t ctrl = (dst_pos << 10) | (bits << 5) | src_pos; + build_alu_to(b, dst, MME_TU104_ALU_OP_MERGE, x, y, ctrl, false); +} + +void mme_tu104_load_barrier(struct mme_builder *b) { build_alu_to(b, mme_zero(), MME_TU104_ALU_OP_EXTENDED, diff --git a/src/nouveau/mme/mme_tu104_builder.h b/src/nouveau/mme/mme_tu104_builder.h index 79dab87..7e94ee1 100644 --- a/src/nouveau/mme/mme_tu104_builder.h +++ b/src/nouveau/mme/mme_tu104_builder.h @@ -61,6 +61,10 @@ void mme_tu104_alu64_to(struct mme_builder *b, struct mme_value64 x, struct mme_value64 y); +void mme_tu104_merge_to(struct mme_builder *b, struct mme_value dst, + struct mme_value x, struct mme_value y, + uint16_t dst_pos, uint16_t bits, uint16_t src_pos); + void mme_tu104_load_barrier(struct mme_builder *b); void mme_tu104_load_to(struct mme_builder *b, -- 2.7.4