private static int GetComponents(IntegerSize size) { return(size switch { IntegerSize.B64 => 2, IntegerSize.B128 => 4, IntegerSize.UB128 => 4, _ => 1 });
public OpCodeLdc(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode) { Rd = new Register(opCode.Extract(0, 8), RegisterType.Gpr); Ra = new Register(opCode.Extract(8, 8), RegisterType.Gpr); Offset = opCode.Extract(22, 14); Slot = opCode.Extract(36, 5); Size = (IntegerSize)opCode.Extract(48, 3); }
public OpCodeLdc(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode) { Rd = new Register(opCode.Extract(0, 8), RegisterType.Gpr); Ra = new Register(opCode.Extract(8, 8), RegisterType.Gpr); Offset = (opCode.Extract(20, 16) << 16) >> 16; Slot = opCode.Extract(36, 5); IndexMode = (CbIndexMode)opCode.Extract(44, 2); Size = (IntegerSize)opCode.Extract(48, 3); }
public OpCodeMemory(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode) { Rd = new Register(opCode.Extract(0, 8), RegisterType.Gpr); Ra = new Register(opCode.Extract(8, 8), RegisterType.Gpr); Offset = (opCode.Extract(20, 24) << 8) >> 8; Extended = opCode.Extract(45); Size = (IntegerSize)opCode.Extract(48, 3); }
private static int GetVectorCount(IntegerSize size) { switch (size) { case IntegerSize.B64: return(2); case IntegerSize.B128: case IntegerSize.UB128: return(4); } return(1); }
private static Operand ExtractSmallInt( EmitterContext context, IntegerSize size, Operand bitOffset, Operand value) { value = context.ShiftRightU32(value, bitOffset); switch (size) { case IntegerSize.U8: value = ZeroExtendTo32(context, value, 8); break; case IntegerSize.U16: value = ZeroExtendTo32(context, value, 16); break; case IntegerSize.S8: value = SignExtendTo32(context, value, 8); break; case IntegerSize.S16: value = SignExtendTo32(context, value, 16); break; } return(value); }
private static Operand InsertSmallInt( EmitterContext context, IntegerSize size, Operand bitOffset, Operand word, Operand value) { switch (size) { case IntegerSize.U8: case IntegerSize.S8: value = context.BitwiseAnd(value, Const(0xff)); value = context.BitfieldInsert(word, value, bitOffset, Const(8)); break; case IntegerSize.U16: case IntegerSize.S16: value = context.BitwiseAnd(value, Const(0xffff)); value = context.BitfieldInsert(word, value, bitOffset, Const(16)); break; } return(value); }
private void SetSize(IntegerSize size) { Debug.Assert(size != IntegerSize.Unknown); SetMetadata((int)size, IntSizeMask, IntSizeShift); }
/// <summary> /// Sets the size. /// </summary> /// <returns>The size.</returns> /// <param name="size">Size.</param> public void SetSize(IntegerSize size) { this.size = size; }