diff --git a/src/gen.cpp b/src/gen.cpp index 1aeec86..efcee45 100644 --- a/src/gen.cpp +++ b/src/gen.cpp @@ -547,28 +547,28 @@ struct Code : public mcl::Generator { ret(Void); endFunc(); } - void generic_fpDbl_mul(Operand pz, const Operand& px, Operand py) + void generic_fpDbl_mul(const Operand& pz, const Operand& px, const Operand& py) { const int bu = bit + unit; Operand y = load(py); Operand xy = call(mulPvM[bit], px, y); store(trunc(xy, unit), pz); Operand t = lshr(xy, unit); - Operand z; + Operand z, pzi; for (uint32_t i = 1; i < N; i++) { - py = getelementptr(py, makeImm(32, 1)); - y = load(py); + Operand pyi = getelementptr(py, makeImm(32, i)); + y = load(pyi); xy = call(mulPvM[bit], px, y); t = add(t, xy); z = trunc(t, unit); - pz = getelementptr(pz, makeImm(32, 1)); + pzi = getelementptr(pz, makeImm(32, i)); if (i < N - 1) { - store(z, pz); + store(z, pzi); t = lshr(t, unit); } } - pz = bitcast(pz, Operand(IntPtr, bu)); - store(t, pz); + pzi = bitcast(pzi, Operand(IntPtr, bu)); + store(t, pzi); ret(Void); } void gen_mcl_fpDbl_mulPre()