CLZ R4, R5 // 85140000
CPUCFG R4, R5 // 856c0000
ADDF F4, F5 // a5900001
- ADDF F4, R5, F6 // a6900001
- CMPEQF F4, R5 // a010120c
+ ADDF F4, F5, F6 // a6900001
ABSF F4, F5 // 85041401
MOVVF F4, F5 // 85181d01
MOVF F4, F5 // 85941401
MOVWR y+8(FP), R4 // 6440402e
MOVWR 1(R5), R4 // a404402e
- CMPGTF F4, R5 // a090110c
- CMPGTD F4, R5 // a090210c
- CMPGEF F4, R5 // a090130c
- CMPGED F4, R5 // a090230c
- CMPEQD F4, R5 // a010220c
+ CMPEQF F4, F5, FCC0 // a010120c
+ CMPGTF F4, F5, FCC1 // a190110c
+ CMPGTD F4, F5, FCC2 // a290210c
+ CMPGEF F4, F5, FCC3 // a390130c
+ CMPGED F4, F5, FCC4 // a490230c
+ CMPEQD F4, F5, FCC5 // a510220c
RDTIMELW R4, R0 // 80600000
RDTIMEHW R4, R0 // 80640000
{ACLO, C_REG, C_NONE, C_NONE, C_REG, C_NONE, 9, 4, 0, 0},
{AADDF, C_FREG, C_NONE, C_NONE, C_FREG, C_NONE, 32, 4, 0, 0},
- {AADDF, C_FREG, C_REG, C_NONE, C_FREG, C_NONE, 32, 4, 0, 0},
- {ACMPEQF, C_FREG, C_REG, C_NONE, C_NONE, C_NONE, 32, 4, 0, 0},
+ {AADDF, C_FREG, C_FREG, C_NONE, C_FREG, C_NONE, 32, 4, 0, 0},
{AABSF, C_FREG, C_NONE, C_NONE, C_FREG, C_NONE, 33, 4, 0, 0},
{AMOVVF, C_FREG, C_NONE, C_NONE, C_FREG, C_NONE, 33, 4, 0, 0},
{AMOVF, C_FREG, C_NONE, C_NONE, C_FREG, C_NONE, 33, 4, 0, 0},
{AMOVD, C_FREG, C_NONE, C_NONE, C_FREG, C_NONE, 33, 4, 0, 0},
+ {ACMPEQF, C_FREG, C_FREG, C_NONE, C_FCCREG, C_NONE, 29, 4, 0, 0},
+
{AMOVW, C_REG, C_NONE, C_NONE, C_SEXT, C_NONE, 7, 4, 0, 0},
{AMOVWU, C_REG, C_NONE, C_NONE, C_SEXT, C_NONE, 7, 4, 0, 0},
{AMOVV, C_REG, C_NONE, C_NONE, C_SEXT, C_NONE, 7, 4, 0, 0},
return C_GOK
}
+func (c *ctxt0) rclass(r int16) int {
+ switch {
+ case REG_R0 <= r && r <= REG_R31:
+ return C_REG
+ case REG_F0 <= r && r <= REG_F31:
+ return C_FREG
+ case REG_FCC0 <= r && r <= REG_FCC31:
+ return C_FCCREG
+ case REG_FCSR0 <= r && r <= REG_FCSR31:
+ return C_FCSRREG
+ }
+
+ return C_GOK
+}
+
func prasm(p *obj.Prog) {
fmt.Printf("%v\n", p)
}
// 2nd source operand
a2 := C_NONE
if p.Reg != 0 {
- a2 = C_REG
+ a2 = c.rclass(p.Reg)
}
// 2nd destination operand
o1 = OP_12IRR(c.opirr(a), uint32(v), uint32(r), uint32(p.From.Reg))
}
+ case 29: // fcmp.cond.x fj, fk, fcc
+ o1 = OP_RRR(c.oprrr(p.As), uint32(p.From.Reg), uint32(p.Reg), uint32(p.To.Reg))
+
case 30: // movw r,fr
a := OP_TEN(8, 1321) // movgr2fr.w
o1 = OP_RR(a, uint32(p.From.Reg), uint32(p.To.Reg))