Giter VIP home page Giter VIP logo

ps2-clang-patches's People

Contributors

ravenslofty avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

f0bes

ps2-clang-patches's Issues

MMI

The EE Core has a SIMD-ish extension called Multimedia Instructions.

It is quite an eclectic mix, and I would have to go through it in more detail to see what can be done.

No DMULT(U)/DDIV(U)

Although it has 64-bit addition/subtraction, it doesn't have a 64-bit multiply/divide unit, which is frustrating.

Pipeline 2

The EE Core has multiple pipelines (it's 2-way superscalar), but it requires the programmer to manually emit (INSN)1 opcodes to harness the otherwise dormant second pipeline. Perhaps a routine for 64-bit multiply can be produced using both multiply pipelines together.

The floating-point problem

The PS2's FPU behaves in a distinctly non-IEEE 754 fashion; there are no traps (this can be fixed by checking flags, perhaps), a fixed rounding mode (truncation), no NaNs or infinities, and all of it is single-precision.

I've already had to break the N32 ABI by setting long double to be equal to 64-bit double, when the ABI calls for 128-bit long double. I don't think this will meaningfully affect anybody's code though.

VU0 macro mode

The EE can use VU0 through the coprocessor 2 interface to give it upper or lower instructions. This isn't quite as efficient as using VU0 in micro mode, but it's also much more convenient; perhaps Clang could autovectorise it?

No LL/SC (atomic) instructions

I don't know how much effort it will be to ensure Clang doesn't emit these instructions for atomic locking on a single core CPU.

Can this run on the PS2 itself?

Hello! I'm exploring creating a bare bones PS2 Linux distro that can run off a disc without requiring FMCB or a modchip. The main thing I'm looking for is a compiler that will actually run on the PS2 so it can actually be used for writing new software without depending on cross-compilation, could this project do that?
I'm planning to base it on Maximus32's 3.8 kernel since it's the newest I've found.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.