Displaying 7 results from an estimated 7 matches for "nv50_ir_subop_mul_high".
2014 May 18
1
[PATCH 1/2] nv50/ir: fix s32 x s32 -> high s32 multiply logic
.../
// fffe0001 + fffe0001
+//
+// Note that this sort of splitting doesn't work for signed values, so we
+// compute the sign on those manually and then perform an unsigned multiply.
static bool
expandIntegerMUL(BuildUtil *bld, Instruction *mul)
{
const bool highResult = mul->subOp == NV50_IR_SUBOP_MUL_HIGH;
- DataType fTy = mul->sType; // full type
- DataType hTy;
+ DataType fTy; // full type
+ switch (mul->sType) {
+ case TYPE_S32: fTy = TYPE_U32; break;
+ case TYPE_S64: fTy = TYPE_U64; break;
+ default: fTy = mul->sType; break;
+ }
+
+ DataType hTy; // half type
swi...
2016 Oct 02
2
[PATCH] nv50/ir: Propagate third immediate src when folding OP_MAD
...a.u64),
+ i->dType);
+ delete_Instruction(prog, i);
+ }
+ else {
+ i->op = i->src(0).mod.getOp();
+ if (i->op != OP_CVT)
+ i->src(0).mod = 0;
+ }
} else
if (i->subOp != NV50_IR_SUBOP_MUL_HIGH &&
(imm0.isInteger(1) || imm0.isInteger(-1))) {
--
2.10.0
2016 Oct 02
2
[PATCH] nv50/ir: Propagate third immediate src when folding OP_MAD
...1]
211: END
>
>> + }
>> + else {
>> + i->op = i->src(0).mod.getOp();
>> + if (i->op != OP_CVT)
>> + i->src(0).mod = 0;
>> + }
>> } else
>> if (i->subOp != NV50_IR_SUBOP_MUL_HIGH &&
>> (imm0.isInteger(1) || imm0.isInteger(-1))) {
>> --
>> 2.10.0
>>
>> _______________________________________________
>> Nouveau mailing list
>> Nouveau at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/...
2016 Oct 02
0
[PATCH] nv50/ir: Propagate third immediate src when folding OP_MAD
...act that we don't run
the opts to a fixed point?
> + }
> + else {
> + i->op = i->src(0).mod.getOp();
> + if (i->op != OP_CVT)
> + i->src(0).mod = 0;
> + }
> } else
> if (i->subOp != NV50_IR_SUBOP_MUL_HIGH &&
> (imm0.isInteger(1) || imm0.isInteger(-1))) {
> --
> 2.10.0
>
> _______________________________________________
> Nouveau mailing list
> Nouveau at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/nouveau
2015 Mar 25
0
[PATCH] nv50/ir: take postFactor into account when doing peephole optimizations
...ta.f32 = a->data.f32 * b->data.f32; break;
+ case TYPE_F32:
+ res.data.f32 = a->data.f32 * b->data.f32 * exp2f(i->postFactor);
+ break;
case TYPE_F64: res.data.f64 = a->data.f64 * b->data.f64; break;
case TYPE_S32:
if (i->subOp == NV50_IR_SUBOP_MUL_HIGH) {
@@ -579,6 +581,7 @@ ConstantFolding::expr(Instruction *i,
i->src(0).mod = Modifier(0);
i->src(1).mod = Modifier(0);
+ i->postFactor = 0;
i->setSrc(0, new_ImmediateValue(i->bb->getProgram(), res.data.u32));
i->setSrc(1, NULL);
@@ -682,7 +685,7 @@ Constan...
2016 Oct 02
0
[PATCH] nv50/ir: Propagate third immediate src when folding OP_MAD
...+ }
>>> + else {
>>> + i->op = i->src(0).mod.getOp();
>>> + if (i->op != OP_CVT)
>>> + i->src(0).mod = 0;
>>> + }
>>> } else
>>> if (i->subOp != NV50_IR_SUBOP_MUL_HIGH &&
>>> (imm0.isInteger(1) || imm0.isInteger(-1))) {
>>> --
>>> 2.10.0
>>>
>>> _______________________________________________
>>> Nouveau mailing list
>>> Nouveau at lists.freedesktop.org
>>> https://lists.f...
2016 Oct 02
1
[PATCH] nv50/ir: Propagate third immediate src when folding OP_MAD
...+ else {
>>>> + i->op = i->src(0).mod.getOp();
>>>> + if (i->op != OP_CVT)
>>>> + i->src(0).mod = 0;
>>>> + }
>>>> } else
>>>> if (i->subOp != NV50_IR_SUBOP_MUL_HIGH &&
>>>> (imm0.isInteger(1) || imm0.isInteger(-1))) {
>>>> --
>>>> 2.10.0
>>>>
>>>> _______________________________________________
>>>> Nouveau mailing list
>>>> Nouveau at lists.freedesktop.org...