From 873a7cd112d2f1cc84b628344c0ecc426573f636 Mon Sep 17 00:00:00 2001 From: LDj3SNuD <35856442+LDj3SNuD@users.noreply.github.com> Date: Sat, 24 Mar 2018 02:06:05 +0100 Subject: Add Cls Instruction. (#67) * Update AInstEmitAlu.cs * Update ASoftFallback.cs * Update AOpCodeTable.cs --- ChocolArm64/Instruction/ASoftFallback.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'ChocolArm64/Instruction/ASoftFallback.cs') diff --git a/ChocolArm64/Instruction/ASoftFallback.cs b/ChocolArm64/Instruction/ASoftFallback.cs index 705ca4a2..c0594413 100644 --- a/ChocolArm64/Instruction/ASoftFallback.cs +++ b/ChocolArm64/Instruction/ASoftFallback.cs @@ -20,6 +20,14 @@ namespace ChocolArm64.Instruction Context.EmitCall(typeof(ASoftFallback), MthdName); } + public static uint CountLeadingSigns32(uint Value) => (uint)CountLeadingSigns(Value, 32); + public static ulong CountLeadingSigns64(ulong Value) => (ulong)CountLeadingSigns(Value, 64); + + private static ulong CountLeadingSigns(ulong Value, int Size) + { + return CountLeadingZeros((Value >> 1) ^ Value, Size - 1); + } + public static uint CountLeadingZeros32(uint Value) => (uint)CountLeadingZeros(Value, 32); public static ulong CountLeadingZeros64(ulong Value) => (ulong)CountLeadingZeros(Value, 64); @@ -398,4 +406,4 @@ namespace ChocolArm64.Instruction throw new ArgumentOutOfRangeException(nameof(Size)); } } -} \ No newline at end of file +} -- cgit v1.2.3