diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_build_util.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_build_util.cpp index 84ebfdb1cba..404d9420da4 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_build_util.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_build_util.cpp @@ -353,6 +353,18 @@ BuildUtil::mkClobber(DataFile f, uint32_t rMask, int unit) } } +ImmediateValue * +BuildUtil::mkImm(uint16_t u) +{ + ImmediateValue *imm = new_ImmediateValue(prog, (uint32_t)0); + + imm->reg.size = 2; + imm->reg.type = TYPE_U16; + imm->reg.data.u32 = u; + + return imm; +} + ImmediateValue * BuildUtil::mkImm(uint32_t u) { @@ -410,6 +422,12 @@ BuildUtil::loadImm(Value *dst, double d) return mkOp1v(OP_MOV, TYPE_F64, dst ? dst : getScratch(8), mkImm(d)); } +Value * +BuildUtil::loadImm(Value *dst, uint16_t u) +{ + return mkOp1v(OP_MOV, TYPE_U16, dst ? dst : getScratch(2), mkImm(u)); +} + Value * BuildUtil::loadImm(Value *dst, uint32_t u) { diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_build_util.h b/src/gallium/drivers/nouveau/codegen/nv50_ir_build_util.h index c2bc0d686cf..a9928ea26bb 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_build_util.h +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_build_util.h @@ -91,6 +91,7 @@ public: ImmediateValue *mkImm(float); ImmediateValue *mkImm(double); + ImmediateValue *mkImm(uint16_t); ImmediateValue *mkImm(uint32_t); ImmediateValue *mkImm(uint64_t); @@ -98,6 +99,7 @@ public: Value *loadImm(Value *dst, float); Value *loadImm(Value *dst, double); + Value *loadImm(Value *dst, uint16_t); Value *loadImm(Value *dst, uint32_t); Value *loadImm(Value *dst, uint64_t);