mirror of
				https://github.com/Ryujinx/Ryujinx.git
				synced 2025-10-24 23:22:26 -07:00 
			
		
		
		
	* Get rid of Reflection.Emit dependency on CPU and Shader projects * Remove useless private sets * Missed those due to the alignment
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using ARMeilleure.State;
 | |
| using System;
 | |
| 
 | |
| namespace ARMeilleure.Decoders
 | |
| {
 | |
|     class OpCode32SimdMemPair : OpCode32, IOpCode32Simd
 | |
|     {
 | |
|         private static int[] RegsMap =
 | |
|         {
 | |
|             1, 1, 4, 2,
 | |
|             1, 1, 3, 1,
 | |
|             1, 1, 2, 1,
 | |
|             1, 1, 1, 1
 | |
|         };
 | |
| 
 | |
|         public int Vd { get; }
 | |
|         public int Rn { get; }
 | |
|         public int Rm { get; }
 | |
|         public int Align { get; }
 | |
|         public bool WBack { get; }
 | |
|         public bool RegisterIndex { get; }
 | |
|         public int Size { get; }
 | |
|         public int Elems => 8 >> Size;
 | |
|         public int Regs { get; }
 | |
|         public int Increment { get; }
 | |
| 
 | |
|         public new static OpCode Create(InstDescriptor inst, ulong address, int opCode) => new OpCode32SimdMemPair(inst, address, opCode);
 | |
| 
 | |
|         public OpCode32SimdMemPair(InstDescriptor inst, ulong address, int opCode) : base(inst, address, opCode)
 | |
|         {
 | |
|             Vd = (opCode >> 12) & 0xf;
 | |
|             Vd |= (opCode >> 18) & 0x10;
 | |
| 
 | |
|             Size = (opCode >> 6) & 0x3;
 | |
| 
 | |
|             Align = (opCode >> 4) & 0x3;
 | |
|             Rm = (opCode >> 0) & 0xf;
 | |
|             Rn = (opCode >> 16) & 0xf;
 | |
| 
 | |
|             WBack = Rm != RegisterAlias.Aarch32Pc;
 | |
|             RegisterIndex = Rm != RegisterAlias.Aarch32Pc && Rm != RegisterAlias.Aarch32Sp;
 | |
| 
 | |
|             Regs = RegsMap[(opCode >> 8) & 0xf];
 | |
| 
 | |
|             Increment = Math.Min(Regs, ((opCode >> 8) & 0x1) + 1);
 | |
|         }
 | |
|     }
 | |
| }
 |