Commit 1f60e75a authored by Benedikt Geßele's avatar Benedikt Geßele

mips cache, cvt/ps/pu/pl

parent 162ac7f6
......@@ -1522,10 +1522,7 @@ val semantics i =
| CTC2 x: sem-default-binop-rr-generic i x
| CVT-D-fmt x: sem-default-binop-flr-generic i x
| CVT-L-fmt x: sem-default-binop-flr-generic i x
| CVT-PS-S x: sem-default-ternop-lrr-generic i x
| CVT-S-fmt x: sem-default-binop-flr-generic i x
| CVT-S-PL x: sem-default-binop-lr-generic i x
| CVT-S-PU x: sem-default-binop-lr-generic i x
| CVT-W-fmt x: sem-default-binop-flr-generic i x
| DERET: sem-deret
| DI x: sem-di x
......
......@@ -126,6 +126,9 @@ val revision/semantics i =
| BLTZL x: sem-bltzl x
| BNEL x: sem-bnel x
| C-cond-fmt x: sem-default-ternop-cflrr-generic i x
| CVT-PS-S x: sem-default-ternop-lrr-generic i x
| CVT-S-PL x: sem-default-binop-lr-generic i x
| CVT-S-PU x: sem-default-binop-lr-generic i x
| LDC2 x: sem-default-binop-rr-tuple-generic i x
| LWC2 x: sem-default-binop-rr-tuple-generic i x
| LWL x: sem-lwl x
......
......@@ -57,10 +57,7 @@ val traverse f insn =
| CTC2 x: f "CTC2" (BINOP_RR x)
| CVT-D-fmt x: f "CVT.D" (BINOP_FLR x)
| CVT-L-fmt x: f "CVT.L" (BINOP_FLR x)
| CVT-PS-S x: f "CVT.PS.S" (TERNOP_LRR x)
| CVT-S-fmt x: f "CVT.S" (BINOP_FLR x)
| CVT-S-PL x: f "CVT.S.PL" (BINOP_LR x)
| CVT-S-PU x: f "CVT.S.PU" (BINOP_LR x)
| CVT-W-fmt x: f "CVT.W" (BINOP_FLR x)
| DERET: f "DERET" (NULLOP)
| DI x: f "DI" (UNOP_L x)
......
......@@ -21,6 +21,9 @@ val revision/traverse f insn =
| BLTZL x: f "BLTZL" (BINOP_RR x)
| BNEL x: f "BNEL" (TERNOP_RRR x)
| C-cond-fmt x: f "C" (TERNOP_CFLRR x)
| CVT-PS-S x: f "CVT.PS.S" (TERNOP_LRR x)
| CVT-S-PL x: f "CVT.S.PL" (BINOP_LR x)
| CVT-S-PU x: f "CVT.S.PU" (BINOP_LR x)
| LDC2 x: f "LDC2" (BINOP_RR x)
| LWC2 x: f "LWC2" (BINOP_RR x)
| LWL x: f "LWL" (BINOP_LR x)
......
......@@ -198,10 +198,6 @@ val / ['000000 /code10 /code10to20 001101']
| asmode? = nullop UNDEFINED
| otherwise = unop BREAK code10to20
### CACHE
### - Perform Cache Operation
val / ['101111 /base /op /offset16'] = binop CACHE op offset16/base
### CACHEE
### - Perform Cache Operation EVA
val / ['011111 /base /op /offset9 0 011011']
......@@ -260,22 +256,10 @@ val / ['010001 /fmt5swl 00000 /fs /fd 100001'] = binop-fmt CVT-D-fmt fmt fd (rig
### - Floating Point Convert to Long Fixed Point
val / ['010001 /fmt5sd 00000 /fs /fd 100101'] = binop-fmt CVT-L-fmt fmt fd (right fs)
### CVT-PS-S
### - Floating Point Convert Pair to Paired Single
val / ['010001 10000 /ft /fs /fd 100110'] = ternop CVT-PS-S fd (right fs) (right ft)
### CVT-S-fmt
### - Floating Point Convert to Single Floating Point
val / ['010001 /fmt5dwl 00000 /fs /fd 100000'] = binop-fmt CVT-S-fmt fmt fd (right fs)
### CVT-S-PL
### - Floating Point Convert Pair Lower to Single Floating Point
val / ['010001 10110 00000 /fs /fd 101000'] = binop CVT-S-PL fd (right fs)
### CVT-S-PU
### - Floating Point Convert Pair Upper to Single Floating Point
val / ['010001 10110 00000 /fs /fd 100000'] = binop CVT-S-PU fd (right fs)
### CVT-W-fmt
### - Floating Point Convert to Word Fixed Point
val / ['010001 /fmt5sd 00000 /fs /fd 100100'] = binop-fmt CVT-W-fmt fmt fd (right fs)
......@@ -1299,10 +1283,7 @@ type instruction =
| CTC2 of binop-rr
| CVT-D-fmt of binop-flr
| CVT-L-fmt of binop-flr
| CVT-PS-S of ternop-lrr
| CVT-S-fmt of binop-flr
| CVT-S-PL of binop-lr
| CVT-S-PU of binop-lr
| CVT-W-fmt of binop-flr
| DERET
| DI of unop-l
......
......@@ -103,10 +103,26 @@ val / ['000001 /rs 00010 /offset16'] = binop BLTZL (right rs) offset18
### - Branch on Not Equal Likely
val / ['010101 /rs /rt /offset16'] = ternop BNEL (right rs) (right rt) offset18
### CACHE
### - Perform Cache Operation
val / ['101111 /base /op /offset16'] = binop CACHE op offset16/base
### C-cond-fmt
### - Floating Point Compare
val / ['010001 /fmt5sdps /ft /fs /cc 0 0 11 /cond'] = ternop-cond-fmt C-cond-fmt cond fmt fcc (right fs) (right ft)
### CVT-PS-S
### - Floating Point Convert Pair to Paired Single
val / ['010001 10000 /ft /fs /fd 100110'] = ternop CVT-PS-S fd (right fs) (right ft)
### CVT-S-PL
### - Floating Point Convert Pair Lower to Single Floating Point
val / ['010001 10110 00000 /fs /fd 101000'] = binop CVT-S-PL fd (right fs)
### CVT-S-PU
### - Floating Point Convert Pair Upper to Single Floating Point
val / ['010001 10110 00000 /fs /fd 100000'] = binop CVT-S-PU fd (right fs)
### LDC2
### - Load Doubleword to Coprocessor 2
val / ['110110 /base /rt /offset16'] = binop LDC2 rt/imm offset16/base
......@@ -174,6 +190,9 @@ type instruction =
| BLTZL of binop-rr
| BNEL of ternop-rrr
| C-cond-fmt of ternop-cflrr
| CVT-PS-S of ternop-lrr
| CVT-S-PL of binop-lr
| CVT-S-PU of binop-lr
| LDC2 of binop-rr
| LWC2 of binop-rr
| LWL of binop-lr
......
......@@ -177,6 +177,10 @@ val / ['011000 /rs /rt /offset16']
| bnec? = ternop BNEC (right rs) (right rt) offset18
| bnvc? = ternop BNVC (right rs) (right rt) offset18
### CACHE
### - Perform Cache Operation
val / ['011111 /base /op /offset9 0 100101'] = binop CACHE op offset9/base
### Class-fmt
### - Scalar Floating-Point Class Mask
val / ['010001 /fmt5sd 00000 /fs /fd 011011'] = binop-fmt CLASS-fmt fmt fd (right fs)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment