Lines Matching defs:opcode

18 unsigned int PerformFLT(const unsigned int opcode);
19 unsigned int PerformFIX(const unsigned int opcode);
21 static unsigned int PerformComparison(const unsigned int opcode);
23 unsigned int EmulateCPRT(const unsigned int opcode)
26 if (opcode & 0x800000) {
31 return PerformComparison(opcode);
35 switch ((opcode & 0x700000) >> 20) {
37 return PerformFLT(opcode);
40 return PerformFIX(opcode);
44 writeFPSR(readRegister(getRd(opcode)));
47 writeRegister(getRd(opcode), readFPSR());
57 unsigned int PerformFLT(const unsigned int opcode)
62 roundData.mode = SetRoundingMode(opcode);
63 roundData.precision = SetRoundingPrecision(opcode);
66 switch (opcode & MASK_ROUNDING_PRECISION) {
69 fpa11->fType[getFn(opcode)] = typeSingle;
70 fpa11->fpreg[getFn(opcode)].fSingle = int32_to_float32(&roundData, readRegister(getRd(opcode)));
76 fpa11->fType[getFn(opcode)] = typeDouble;
77 fpa11->fpreg[getFn(opcode)].fDouble = int32_to_float64(readRegister(getRd(opcode)));
84 fpa11->fType[getFn(opcode)] = typeExtended;
85 fpa11->fpreg[getFn(opcode)].fExtended = int32_to_floatx80(readRegister(getRd(opcode)));
100 unsigned int PerformFIX(const unsigned int opcode)
103 unsigned int Fn = getFm(opcode);
106 roundData.mode = SetRoundingMode(opcode);
107 roundData.precision = SetRoundingPrecision(opcode);
113 writeRegister(getRd(opcode), float32_to_int32(&roundData, fpa11->fpreg[Fn].fSingle));
119 writeRegister(getRd(opcode), float64_to_int32(&roundData, fpa11->fpreg[Fn].fDouble));
126 writeRegister(getRd(opcode), floatx80_to_int32(&roundData, fpa11->fpreg[Fn].fExtended));
142 static unsigned int PerformComparison(const unsigned int opcode)
145 unsigned int Fn = getFn(opcode), Fm = getFm(opcode);
146 int e_flag = opcode & 0x400000; /* 1 if CxFE */
147 int n_flag = opcode & 0x200000; /* 1 if CNxx */
184 if (CONSTANT_FM(opcode)) {
234 if (CONSTANT_FM(opcode)) {