diff options
| author | LDj3SNuD <35856442+LDj3SNuD@users.noreply.github.com> | 2019-03-25 00:23:27 +0100 |
|---|---|---|
| committer | jduncanator <1518948+jduncanator@users.noreply.github.com> | 2019-03-25 10:23:27 +1100 |
| commit | 464ec7ced8bd8dc9ea8e4021cf602e6caedfffcf (patch) | |
| tree | c4ca539304a99ff4117df01d0a24a74eafbc6778 /ChocolArm64/Instructions/InstEmitSimdLogical.cs | |
| parent | ec40ecd49905885e7ae2c766aedb52cb7c82462c (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.cs | 12 |
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)); |
