authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-03-03 18:40:16+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-03-03 18:40:16+01:00
logc413ac100fa5a4cece5702d3afb6b0898e9c6214
tree0f9952ece962a66a1365bb62e4212c77f2af1b63
parent1024332adc88928299dfc07426f11624ae8ba18b

codegen: refactor generating Int as immediate where appropriate


1 files changed, 6 insertions(+), 5 deletions(-)

src/codegen.zig+6-5
...@@ -1051,11 +1051,12 @@ pub fn genTypedValue(...@@ -1051,11 +1051,12 @@ pub fn genTypedValue(
1051 },1051 },
1052 .Int => {1052 .Int => {
1053 const info = typed_value.ty.intInfo(target);1053 const info = typed_value.ty.intInfo(target);
1054 if (info.bits <= ptr_bits and info.signedness == .signed) {1054 if (info.bits <= ptr_bits) {
1055 return GenResult.mcv(.{ .immediate = @bitCast(u64, typed_value.val.toSignedInt(target)) });1055 const unsigned = switch (info.signedness) {
1056 }1056 .signed => @bitCast(u64, typed_value.val.toSignedInt(target)),
1057 if (!(info.bits > ptr_bits or info.signedness == .signed)) {1057 .unsigned => typed_value.val.toUnsignedInt(target),
1058 return GenResult.mcv(.{ .immediate = typed_value.val.toUnsignedInt(target) });1058 };
1059 return GenResult.mcv(.{ .immediate = unsigned });
1059 }1060 }
1060 },1061 },
1061 .Bool => {1062 .Bool => {