[prev in list] [next in list] [prev in thread] [next in thread]
List: mesa3d-dev
Subject: [Mesa-dev] [PATCH v2 2/3] gk110/ir: allow to emit immediates for BAR
From: Samuel Pitoiset <samuel.pitoiset () gmail ! com>
Date: 2016-02-29 20:54:22
Message-ID: 1456779263-27147-2-git-send-email-samuel.pitoiset () gmail ! com
[Download RAW message or body]
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
---
.../drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp \
b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp index 21138b1..46caa3c \
100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
@@ -1279,8 +1279,26 @@ CodeEmitterGK110::emitBAR(const Instruction *i)
emitPredicate(i);
- srcId(i->src(0), 10);
- srcId(i->src(1), 23);
+ // barrier id
+ if (i->src(0).getFile() == FILE_GPR) {
+ srcId(i->src(0), 10);
+ } else {
+ ImmediateValue *imm = i->getSrc(0)->asImm();
+ assert(imm);
+ code[0] |= imm->reg.data.u32 << 10;
+ code[1] |= 0x8000;
+ }
+
+ // thread count
+ if (i->src(1).getFile() == FILE_GPR) {
+ srcId(i->src(1), 23);
+ } else {
+ ImmediateValue *imm = i->getSrc(0)->asImm();
+ assert(imm);
+ code[0] |= imm->reg.data.u32 << 23;
+ code[1] |= imm->reg.data.u32 >> 9;
+ code[1] |= 0x4000;
+ }
}
void CodeEmitterGK110::emitMEMBAR(const Instruction *i)
--
2.7.1
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic