private void StoreVectorElement(ITypeReference elementTypeReference) {
OperationCode opcode;
switch (elementTypeReference.TypeCode) {
case PrimitiveTypeCode.Boolean: opcode = OperationCode.Stelem_I1; break;
case PrimitiveTypeCode.Char: opcode = OperationCode.Stelem_I2; break;
case PrimitiveTypeCode.Float32: opcode = OperationCode.Stelem_R4; break;
case PrimitiveTypeCode.Float64: opcode = OperationCode.Stelem_R8; break;
case PrimitiveTypeCode.Int16: opcode = OperationCode.Stelem_I2; break;
case PrimitiveTypeCode.Int32: opcode = OperationCode.Stelem_I4; break;
case PrimitiveTypeCode.Int64: opcode = OperationCode.Stelem_I8; break;
case PrimitiveTypeCode.Int8: opcode = OperationCode.Stelem_I1; break;
case PrimitiveTypeCode.IntPtr: opcode = OperationCode.Stelem_I; break;
case PrimitiveTypeCode.Pointer: opcode = OperationCode.Stelem_I; break;
case PrimitiveTypeCode.UInt16: opcode = OperationCode.Stelem_I2; break;
case PrimitiveTypeCode.UInt32: opcode = OperationCode.Stelem_I4; break;
case PrimitiveTypeCode.UInt64: opcode = OperationCode.Stelem_I8; break;
case PrimitiveTypeCode.UInt8: opcode = OperationCode.Stelem_I1; break;
case PrimitiveTypeCode.UIntPtr: opcode = OperationCode.Stelem_I; break;
default:
if (elementTypeReference.IsValueType || elementTypeReference is IGenericParameterReference) {
this.generator.Emit(OperationCode.Stelem, elementTypeReference);
this.StackSize -= 3;
return;
}
opcode = OperationCode.Stelem_Ref; break;
}
this.generator.Emit(opcode);
this.StackSize -= 3;
}