aboutsummaryrefslogtreecommitdiff
path: root/ChocolArm64/Instructions/InstEmitSimdLogical.cs
diff options
context:
space:
mode:
authorLDj3SNuD <35856442+LDj3SNuD@users.noreply.github.com>2019-03-25 00:23:27 +0100
committerjduncanator <1518948+jduncanator@users.noreply.github.com>2019-03-25 10:23:27 +1100
commit464ec7ced8bd8dc9ea8e4021cf602e6caedfffcf (patch)
treec4ca539304a99ff4117df01d0a24a74eafbc6778 /ChocolArm64/Instructions/InstEmitSimdLogical.cs
parentec40ecd49905885e7ae2c766aedb52cb7c82462c (diff)
Add Cmeq_V, Cmge_V, Cmgt_V, Cmle_V & Cmlt_V (Z & ~Z) Sse opt.. (#646)
* Follow-up (Neg_V). * Follow-up (Not_V & Orn_V). * Add Cmeq/ge/gt/le/lt_V (Z & ~Z) Sse opt.. * Add EmitLd/Stvectmp2/3. * Remove Dup (EmitVectorPairwiseSseOrSse2OpF). * Remove Dup (EmitFcmpOrFcmpe). * Add S/Uabd/l_V Sse opt.. Remove Dup (Srhadd_V). * Nit.
Diffstat (limited to 'ChocolArm64/Instructions/InstEmitSimdLogical.cs')
-rw-r--r--ChocolArm64/Instructions/InstEmitSimdLogical.cs12
1 files changed, 6 insertions, 6 deletions
diff --git a/ChocolArm64/Instructions/InstEmitSimdLogical.cs b/ChocolArm64/Instructions/InstEmitSimdLogical.cs
index bf80bada..a5a92274 100644
--- a/ChocolArm64/Instructions/InstEmitSimdLogical.cs
+++ b/ChocolArm64/Instructions/InstEmitSimdLogical.cs
@@ -193,12 +193,12 @@ namespace ChocolArm64.Instructions
{
OpCodeSimd64 op = (OpCodeSimd64)context.CurrOp;
- Type[] typesSav = new Type[] { typeof(byte) };
- Type[] typesAnt = new Type[] { typeof(Vector128<byte>), typeof(Vector128<byte>) };
+ Type[] typesSav = new Type[] { typeof(long) };
+ Type[] typesAnt = new Type[] { typeof(Vector128<long>), typeof(Vector128<long>) };
context.EmitLdvec(op.Rn);
- context.EmitLdc_I4(byte.MaxValue);
+ context.EmitLdc_I8(-1L);
context.EmitCall(typeof(Sse2).GetMethod(nameof(Sse2.SetAllVector128), typesSav));
context.EmitCall(typeof(Sse2).GetMethod(nameof(Sse2.AndNot), typesAnt));
@@ -222,13 +222,13 @@ namespace ChocolArm64.Instructions
{
OpCodeSimdReg64 op = (OpCodeSimdReg64)context.CurrOp;
- Type[] typesSav = new Type[] { typeof(byte) };
- Type[] typesAntOr = new Type[] { typeof(Vector128<byte>), typeof(Vector128<byte>) };
+ Type[] typesSav = new Type[] { typeof(long) };
+ Type[] typesAntOr = new Type[] { typeof(Vector128<long>), typeof(Vector128<long>) };
context.EmitLdvec(op.Rn);
context.EmitLdvec(op.Rm);
- context.EmitLdc_I4(byte.MaxValue);
+ context.EmitLdc_I8(-1L);
context.EmitCall(typeof(Sse2).GetMethod(nameof(Sse2.SetAllVector128), typesSav));
context.EmitCall(typeof(Sse2).GetMethod(nameof(Sse2.AndNot), typesAntOr));