From 4f293f8cbec33e8edce81ad4980bd532a2464c05 Mon Sep 17 00:00:00 2001 From: merry Date: Sun, 22 Jan 2023 14:15:49 +0000 Subject: Arm64: Simplify TryEncodeBitMask and use for constants (#4328) * Arm64: Simplify TryEncodeBitMask * CodeGenerator: Use TryEncodeBitMask in GenerateConstantCopy * Ptc: Bump version --- ARMeilleure/CodeGen/Arm64/CodeGenerator.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'ARMeilleure/CodeGen/Arm64/CodeGenerator.cs') diff --git a/ARMeilleure/CodeGen/Arm64/CodeGenerator.cs b/ARMeilleure/CodeGen/Arm64/CodeGenerator.cs index 704aa45a..fc4fa976 100644 --- a/ARMeilleure/CodeGen/Arm64/CodeGenerator.cs +++ b/ARMeilleure/CodeGen/Arm64/CodeGenerator.cs @@ -1303,7 +1303,15 @@ namespace ARMeilleure.CodeGen.Arm64 private static void GenerateConstantCopy(CodeGenContext context, Operand dest, ulong value) { - if (value != 0) + if (value == 0) + { + context.Assembler.Mov(dest, Register(ZrRegister, dest.Type)); + } + else if (CodeGenCommon.TryEncodeBitMask(dest.Type, value, out _, out _, out _)) + { + context.Assembler.Orr(dest, Register(ZrRegister, dest.Type), Const(dest.Type, (long)value)); + } + else { int hw = 0; bool first = true; @@ -1328,10 +1336,6 @@ namespace ARMeilleure.CodeGen.Arm64 value >>= 16; } } - else - { - context.Assembler.Mov(dest, Register(ZrRegister, dest.Type)); - } } private static void GenerateAtomicCas( -- cgit v1.2.3