Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

x86-64 Compatability #17

Open
Ericson2314 opened this issue Apr 4, 2013 · 16 comments
Open

x86-64 Compatability #17

Ericson2314 opened this issue Apr 4, 2013 · 16 comments

Comments

@Ericson2314
Copy link
Owner

No description provided.

@iamgreaser
Copy link

Very important because 64-bit is awesome and you should all be porting everything to 64-bit.

With that said, porting the SSE stuff to compiler intrinsics would make this part much easier.

@aponigricon
Copy link
Contributor

Approved

On Friday, April 5, 2013, iamgreaser wrote:

Very important because 64-bit is awesome and you should all be porting
everything to 64-bit.

With that said, porting the SSE stuff to compiler intrinsics would make
this part much easier.


Reply to this email directly or view it on GitHubhttps://github.com//issues/17#issuecomment-15981326
.

@Ericson2314
Copy link
Owner Author

Only v5.asm NEEDs that for x86-64, for the rest the C equivalents will do as a stop gap. On the other hand fixing subtle errors in the C types may be harder than the assembly

@Lensman
Copy link

Lensman commented Apr 6, 2013

Seems worthwhile, especially converting to intrin.

@Ericson2314
Copy link
Owner Author

In the end, I certainly want intrinsics and C working on x86-64

@Lensman
Copy link

Lensman commented Apr 19, 2013

Will have to be careful of __m64 datatypes. Probably have to convert them to __128 equivalents, which may mean wasted ops unless algorithms are also converted to take advantage of extra bandwidth eg;

static inline void mmxcolorsub(long _color){
*color = _m_to_int(_mm_subs_pu8(_m_from_int(_color), _m_from_int(flashbrival)));
}

@Ericson2314
Copy link
Owner Author

What exactly is the problem with __m64?

@Lensman
Copy link

Lensman commented May 4, 2013

Nothing is wrong with it, but intrinsics that support that datatype are not supported on x86_64, so it will mean hand coded assembly. I have converted hrendzsse to intrinsics, and surprisingly it runs faster than the original code. Go figure ;)
It's all 128 bit xxm registers now, and on x86_64 there are 8 more to play with too. Thought this might be agood place to tackle in my spare time as it covers 6 asm functions;
hrendzsse/3dn, hrendsse/3dn vrendsse/3dn etc. I haven't finished the fog versions, but it's trivial to do so. This should collapse 8 functions into one more manageble one. I also had a play with mem mapped files, and now have voxlap working with 4096x4096x256 faster than the original. I'd say that is some progress.

@Ericson2314
Copy link
Owner Author

Wow, I'll be back working on Voxlap about a week, but it looks like you might have it done before then!

@iamgreaser
Copy link

The point you made about __m64 not working on x86-64 is incorrect - it DOES work, at least in GCC.
But yeah, if you're willing to do SSE2 support, then using an __m128 version of the code should be a bit faster.

@aponigricon
Copy link
Contributor

The point I made?

@Ericson2314
Copy link
Owner Author

Lensman I think.

@aponigricon
Copy link
Contributor

Oh, well... my computer is broken... and I wont get my fingers on it's keyboard before at least two weeks, sooo...
What have you guys actually been doing?

@Ericson2314
Copy link
Owner Author

@aponigricon
Copy link
Contributor

Haskell? Dude... NO... please... NOOOO...

@Ericson2314
Copy link
Owner Author

Yup. I may use Voxlap, but everything else will be Haskell. Seriously C is a shitty language. Rust or ATS is much better for manual memory.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants