修复GEP中32位整型索引变量误用问题

compile 4 weeks ago
parent 34d483ed47
commit b9151b866e

@ -7,7 +7,7 @@
#include "ir/IR.h"
#include "utils/Log.h"
//#define DEBUG_Lower
#define DEBUG_Lower
#ifdef DEBUG_Lower
#include <iostream>
@ -765,13 +765,13 @@ void LowerInstruction(const ir::Instruction& inst, MachineFunction& function,
}
// 加载当前索引到 x10
EmitValueToReg(indices[idx_pos], PhysReg::X10, slots, block, function);
EmitValueToReg(indices[idx_pos], PhysReg::W10, slots, block, function);
// 乘以步长
block.Append(Opcode::MovImm, {Operand::Reg(PhysReg::X11), Operand::Imm(strides[i])});
block.Append(Opcode::MulRR, {Operand::Reg(PhysReg::X10),
Operand::Reg(PhysReg::X10),
Operand::Reg(PhysReg::X11)});
block.Append(Opcode::MovImm, {Operand::Reg(PhysReg::W11), Operand::Imm(strides[i])});
block.Append(Opcode::MulRR, {Operand::Reg(PhysReg::W10),
Operand::Reg(PhysReg::W10),
Operand::Reg(PhysReg::W11)});
// 累加到偏移量
block.Append(Opcode::AddRR, {Operand::Reg(PhysReg::X9),

Loading…
Cancel
Save