From 3e52250f6ee1bb2ec2503865fae1fafda7162c2a Mon Sep 17 00:00:00 2001 From: lxq <877250099@qq.com> Date: Wed, 8 Feb 2023 21:21:20 +0800 Subject: [PATCH] optimize for constant int get --- src/codegen/codegen.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/codegen/codegen.cpp b/src/codegen/codegen.cpp index e077449..dae3ed3 100644 --- a/src/codegen/codegen.cpp +++ b/src/codegen/codegen.cpp @@ -197,6 +197,15 @@ CodeGen::value2reg(Value *v, int i, string recommend) { if (dynamic_cast(v)) { if (v == CONST_0) return "$zero"; + if (dynamic_cast(v)) { + auto const_int_v = static_cast(v)->get_value(); + auto [l, h] = immRange(12, false); + if (l <= const_int_v and const_int_v <= h) { + output.push_back("addi.d " + reg_name + ", $zero, " + + to_string(const_int_v)); + return reg_name; + } + } auto constant = static_cast(v); if (ROdata.find(constant) == ROdata.end()) ROdata[constant] = ".LC" + to_string(ROdata.size()); -- GitLab