Ejemplo n.º 1
0
 public TableEntry(InstEmitter emitter, Type opCodeType, int xBits)
 {
     Emitter     = emitter;
     OpCodeType  = opCodeType;
     XBits       = xBits;
     OpActivator = CacheOpActivator(opCodeType);
 }
Ejemplo n.º 2
0
        public OpCodePsetp(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            Predicate12 = new Register(opCode.Extract(12, 3), RegisterType.Predicate);
            Predicate29 = new Register(opCode.Extract(29, 3), RegisterType.Predicate);

            LogicalOpAB = (LogicalOperation)opCode.Extract(24, 2);
        }
Ejemplo n.º 3
0
        public OpCodeTld4s(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            HasDepthCompare = opCode.Extract(50);
            HasOffset       = opCode.Extract(51);

            GatherCompIndex = opCode.Extract(52, 2);
        }
Ejemplo n.º 4
0
        public OpCodeAluRegCbuf(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            Offset = opCode.Extract(20, 14);
            Slot   = opCode.Extract(34, 5);

            Rb = new Register(opCode.Extract(39, 8), RegisterType.Gpr);
        }
Ejemplo n.º 5
0
        public OpCodeBranchIndir(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            PossibleTargets = new HashSet <Block>();

            Ra = new Register(opCode.Extract(8, 8), RegisterType.Gpr);

            Offset = ((int)(opCode >> 20) << 8) >> 8;
        }
Ejemplo n.º 6
0
        public OpCodeAluImm32(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            Immediate = opCode.Extract(20, 32);

            SetCondCode = opCode.Extract(52);
            Extended    = opCode.Extract(53);
            Saturate    = opCode.Extract(54);
        }
Ejemplo n.º 7
0
        public OpCodeAl2p(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);
            Predicate44 = new Register(opCode.Extract(44, 3), RegisterType.Predicate);

            Immediate = ((int)opCode << 1) >> 21;
        }
Ejemplo n.º 8
0
        public OpCodeHfmaImm32(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            Immediate = opCode.Extract(20, 32);

            NegateC = opCode.Extract(52);

            Rc = Rd;
        }
Ejemplo n.º 9
0
        public OpCodeHfma(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);
            Rc = new Register(opCode.Extract(39, 8), RegisterType.Gpr);

            SwizzleA = (FPHalfSwizzle)opCode.Extract(47, 2);
        }
Ejemplo n.º 10
0
        public OpCodeBranch(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            Condition = (Condition)(opCode & 0x1f);

            Offset = ((int)(opCode >> 20) << 8) >> 8;

            PushTarget = false;
        }
Ejemplo n.º 11
0
        public OpCodeTld4(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            HasDepthCompare = opCode.Extract(50);

            Offset = (TextureGatherOffset)opCode.Extract(54, 2);

            GatherCompIndex = opCode.Extract(56, 2);
        }
Ejemplo n.º 12
0
        public OpCodeTxd(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            HasOffset = opCode.Extract(35);

            IsBindless = opCode.Extract(54);

            LodMode = TextureLodMode.None;
        }
Ejemplo n.º 13
0
        public OpCodeIpa(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            AttributeOffset = opCode.Extract(28, 10);

            Saturate = opCode.Extract(51);

            Mode = (InterpolationMode)opCode.Extract(54, 2);
        }
Ejemplo n.º 14
0
 public InstOp(ulong address, ulong rawOpCode, InstName name, InstEmitter emitter, InstProps props)
 {
     Address   = address;
     RawOpCode = rawOpCode;
     Name      = name;
     Emitter   = emitter;
     Props     = props;
 }
Ejemplo n.º 15
0
        public OpCodeSsy(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            Syncs = new Dictionary <OpCodeSync, Operand>();

            Predicate = new Register(RegisterConsts.PredicateTrueIndex, RegisterType.Predicate);

            InvertPredicate = false;
        }
Ejemplo n.º 16
0
        public OpCodeFArith(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            RoundingMode = (RoundingMode)opCode.Extract(39, 2);

            Scale = (FPMultiplyScale)opCode.Extract(41, 3);

            FlushToZero = opCode.Extract(44);
            AbsoluteA   = opCode.Extract(46);
        }
Ejemplo n.º 17
0
        public OpCodeLopImm32(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            LogicalOp = (LogicalOperation)opCode.Extract(53, 2);

            InvertA = opCode.Extract(55);
            InvertB = opCode.Extract(56);

            Extended = opCode.Extract(57);
        }
Ejemplo n.º 18
0
        public OpCodeLop(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            InvertA = opCode.Extract(39);
            InvertB = opCode.Extract(40);

            LogicalOp = (LogicalOperation)opCode.Extract(41, 2);

            Predicate48 = new Register(opCode.Extract(48, 3), RegisterType.Predicate);
        }
Ejemplo n.º 19
0
        public OpCodeSet(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            Predicate0 = new Register(opCode.Extract(0, 3), RegisterType.Predicate);
            Predicate3 = new Register(opCode.Extract(3, 3), RegisterType.Predicate);

            LogicalOp = (LogicalOperation)opCode.Extract(45, 2);

            FlushToZero = opCode.Extract(47);
        }
Ejemplo n.º 20
0
        public OpCodeVideo(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);
            Rc = new Register(opCode.Extract(39, 8), RegisterType.Gpr);

            SetCondCode = opCode.Extract(47);
            Saturate    = opCode.Extract(55);
        }
Ejemplo n.º 21
0
        public OpCodeHfmaImm2x10(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            Immediate = DecoderHelper.Decode2xF10Immediate(opCode);

            NegateC  = opCode.Extract(51);
            Saturate = opCode.Extract(52);

            SwizzleC = (FPHalfSwizzle)opCode.Extract(53, 2);
        }
Ejemplo n.º 22
0
        public OpCodePush(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            PopOps = new Dictionary <OpCodeBranchPop, Operand>();

            Predicate = new Register(RegisterConsts.PredicateTrueIndex, RegisterType.Predicate);

            InvertPredicate = false;

            PushTarget = true;
        }
Ejemplo n.º 23
0
        public OpCodeVote(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            Rd          = new Register(opCode.Extract(0, 8), RegisterType.Gpr);
            Predicate39 = new Register(opCode.Extract(39, 3), RegisterType.Predicate);
            Predicate45 = new Register(opCode.Extract(45, 3), RegisterType.Predicate);

            InvertP = opCode.Extract(42);

            VoteOp = (VoteOp)opCode.Extract(48, 2);
        }
Ejemplo n.º 24
0
        public OpCode(InstEmitter emitter, ulong address, long opCode)
        {
            Emitter   = emitter;
            Address   = address;
            RawOpCode = opCode;

            Predicate = new Register(opCode.Extract(16, 3), RegisterType.Predicate);

            InvertPredicate = opCode.Extract(19);
        }
Ejemplo n.º 25
0
        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);
        }
Ejemplo n.º 26
0
        public OpCodeAtom(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);
            Rb = new Register(opCode.Extract(20, 8), RegisterType.Gpr);

            Extended = opCode.Extract(48);

            AtomicOp = (AtomicOp)opCode.Extract(52, 4);
        }
Ejemplo n.º 27
0
        private static OpCode MakeOpCode(Type type, InstEmitter emitter, ulong address, long opCode)
        {
            if (type == null)
            {
                throw new ArgumentNullException(nameof(type));
            }

            OpActivator createInstance = _opActivators.GetOrAdd(type, CacheOpActivator);

            return((OpCode)createInstance(emitter, address, opCode));
        }
Ejemplo n.º 28
0
        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);
        }
Ejemplo n.º 29
0
        public OpCodeTld4s(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
        {
            HasDepthCompare = opCode.Extract(50);
            HasOffset       = opCode.Extract(51);

            GatherCompIndex = opCode.Extract(52, 2);

            IsFp16 = opCode.Extract(55);

            ComponentMask = Rd1.IsRZ ? 3 : 0xf;
        }
Ejemplo n.º 30
0
        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);
        }