Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
apollo_core:start [2020/02/12 06:04]
muaddib [Supported instructions]
apollo_core:start [2020/09/27 09:50] (current)
muaddib
Line 1: Line 1:
 ====== 68080 Core ====== ====== 68080 Core ======
  
-{{:apollo-01.png?​nolink&​128|}}+{{:crom_apollo-02.png?​nolink&​128|}}
  
 ===== Overview ===== ===== Overview =====
Line 7: Line 7:
 **68080** is a new CPU that is code-compatible with the **Motorola 68k** processors. **68080** is a new CPU that is code-compatible with the **Motorola 68k** processors.
  
-It is an affordable CPU for your classic Amigas (or Amiga compatibles) that is **much faster than the fastest 68060**. It is compatible with all CPUs and [[apollo_core:​fpu|FPUs]] of the Motorola 68000 family. [(Few rare instructions are currently not supported.)] ​ It is designed according to modern CPU standards, is fully written in **VHDL**, and is intended to run on [[https://​www.intel.com/​content/​www/​us/​en/​products/​programmable/​cyclone-series.html|Altera Cyclone FPGAs]].+It is an affordable CPU for your classic Amigas (or Amiga compatibles) that is **much faster than the fastest 68060**. It is compatible with all CPUs and [[apollo_core:​fpu|FPUs]] of the Motorola 68000 family. [(MMU-related ​instructions are currently not supported.)] ​ It is designed according to modern CPU standards, is fully written in **VHDL**, and is intended to run on [[https://​www.intel.com/​content/​www/​us/​en/​products/​programmable/​cyclone-series.html|Altera Cyclone FPGAs]].
  
 **AmigaOS 3.x** currently recognizes this new CPU as a **68040**. **AmigaOS 3.x** currently recognizes this new CPU as a **68040**.
Line 51: Line 51:
 | Amiga 1200   | MK2          | 68060   ​| ​ 66 MHz |   65 | ++++++++++++++++ |  | Amiga 1200   | MK2          | 68060   ​| ​ 66 MHz |   65 | ++++++++++++++++ | 
 | Amiga 600    | Vampire 600 V2   | SILVER6 |     x15 |  173 | +++++++++++++++++++++++++++++++++++++++++++ |  | Amiga 600    | Vampire 600 V2   | SILVER6 |     x15 |  173 | +++++++++++++++++++++++++++++++++++++++++++ | 
 +
 +More detailed comparisons to an overclocked 68060 can be found [[http://​www.apollo-core.com/​knowledge.php?​note=30521|here]].
  
 ---- ----
 +
 ===== Features ===== ===== Features =====
  
Line 60: Line 63:
  
 ^ Feature ^ 68000 ^ 68020 ^ 68030 ^ 68040 ^ 68060 ^ 68080 ^  ^ Feature ^ 68000 ^ 68020 ^ 68030 ^ 68040 ^ 68060 ^ 68080 ^ 
-68K ISA                          |  X     ​| ​ X     ​| ​ X     ​| ​ X    |  X    |  X     |+68k ISA                          |  X     ​| ​ X     ​| ​ X     ​| ​ X    |  X    |  X     |
 | Extended EA-modes ​               |        |  X     ​| ​ X     ​| ​ X    |  X    |  X     | | Extended EA-modes ​               |        |  X     ​| ​ X     ​| ​ X    |  X    |  X     |
 | BitFields ​                       |        |  X     ​| ​ X     ​| ​ X    |  X    |  X     | | BitFields ​                       |        |  X     ​| ​ X     ​| ​ X    |  X    |  X     |
Line 96: Line 99:
   * [[.code_samples:​|68080 asm code samples]]   * [[.code_samples:​|68080 asm code samples]]
  
-^ Unsupported instructions ^ Notes ^ +68080 lets you use EA as 1 source and to update 3rd registers ​so normally not overwrite source registers.
-| ''​TAS2''​ | Never used on AmigaOS | +
-| ''​MMU''​-related | Not implemented | +
- +
----- +
- +
- +
-===== New 64-bit instructions ===== +
- +
-{{:64bit.png?​nolink&​48|}}+
  
-The instructions are very similar to the ''​SSE'' ​/ ''​ALTIVEC''​ version of them. APOLLO lets you use EA as 1 source and to update 3rd registers ​so normally ​not overwrite source registers.+''​MMU''​-related instructions are not supported. ​ These are rarely used on AmigaOS.
  
-  * **(ea)** can be any Effective Address. +==== AMMX: New 64-bit instructions ====
-  * **B** is one of 16 Source Regs. +
-  * **C** is one of 16 Source Regs. +
-  * **D** is one of 16 Destination Regs.+
  
-^ Instruction ^ Operands ^ Description ^ +These instructions ​are very similar to the ''​SSE''​ / ''​AltiVec''​ versions of them.
-| [[apollo_core:​instructions:​perm|PERM]] ​    | (ea),B,C,D | Permute Bytes+
-| [[apollo_core:​instructions:​bsel|BSEL]] ​    | (ea),​B,​D ​  | Select Bytes. | +
-| [[apollo_core:​instructions:​por|POR]] ​      | (ea),​B,​D ​  | Parallel OR. | +
-| [[apollo_core:​instructions:​pand|PAND]] ​    | (ea),​B,​D ​  | Parallel AND. | +
-| [[apollo_core:​instructions:​pand|PANDN]] ​   | (ea),​B,​D ​  | Parallel ANDN. | +
-| [[apollo_core:​instructions:​padd|PADD.B]] ​  | (ea),​B,​D ​  | Parallel ADD.B. | +
-| [[apollo_core:​instructions:​padd|PADD.W]] ​  | (ea),​B,​D ​  | Parallel ADD.W. | +
-| [[apollo_core:​instructions:​padd|PADDss.B]] | (ea),​B,​D ​  | Parallel ADDss.B - Signed with Saturate. | +
-| [[apollo_core:​instructions:​padd|PADDss.W]] | (ea),​B,​D ​  | Parallel ADDss.W - Signed with Saturate. | +
-| [[apollo_core:​instructions:​padd|PADDus.B]] | (ea),​B,​D ​  | Parallel ADDus.B - Unsigned with Saturate. | +
-| [[apollo_core:​instructions:​padd|PADDus.W]] | (ea),​B,​D ​  | Parallel ADDus.W - Unsigned with Saturate. | +
-| [[apollo_core:​instructions:​psub|PSUB.B]] ​  | (ea),​B,​D ​  | Parallel SUB.B. | +
-| [[apollo_core:​instructions:​psub|PSUB.W]] ​  | (ea),​B,​D ​  | Parallel SUB.W. | +
-| [[apollo_core:​instructions:​psub|PSUBss.B]] | (ea),​B,​D ​  | Parallel SUBss.B - Signed with Saturate. | +
-| [[apollo_core:​instructions:​psub|PSUBss.W]] | (ea),​B,​D ​  | Parallel SUBss.W - Signed with Saturate. | +
-| [[apollo_core:​instructions:​psub|PSUBus.B]] | (ea),​B,​D ​  | Parallel SUBus.B - Unsigned with Saturate. | +
-| [[apollo_core:​instructions:​psub|PSUBus.W]] | (ea),​B,​D ​  | Parallel SUBus.W - Unsigned with Saturate. | +
-| [[apollo_core:​instructions:​pavg|PAVG.B]] ​  | (ea),​B,​D ​  | Parallel AVG.B. | +
-| [[apollo_core:​instructions:​pavg|PAVG.W]] ​  | (ea),​B,​D ​  | Parallel AVG.W. | +
-| [[apollo_core:​instructions:​pcmp|PCMPeq.B]] | (ea),​B,​D ​  | Parallel CMPeq.B - Equal. | +
-| [[apollo_core:​instructions:​pcmp|PCMPeq.W]] | (ea),​B,​D ​  | Parallel CMPeq.W - Equal. | +
-| [[apollo_core:​instructions:​pcmp|PCMPgt.B]] | (ea),​B,​D ​  | Parallel CMPgt.B - Greater Than. | +
-| [[apollo_core:​instructions:​pcmp|PCMPgt.W]] | (ea),​B,​D ​  | Parallel CMPgt.W - Greater Than. | +
-| [[apollo_core:​instructions:​pmul|PMULSH.W]] | (ea),​B,​D ​  | Parallel MULSH.W. | +
-| [[apollo_core:​instructions:​pmul|PMULSL.W]] | (ea),​B,​D ​  | Parallel MULSL.W. |+
  
   * Quick Reference: [[http://​www.apollo-core.com/​AMMXQuickRef.pdf|PDF]]   * Quick Reference: [[http://​www.apollo-core.com/​AMMXQuickRef.pdf|PDF]]
Last modified: le 2020/08/02 12:37