Please post a link to the new ABI you are talking about.
I also still need an answer to what the above code is actually doing. In particular, I asked in a developer e-mail:
This ABI requires you to read the TOC, even if the the routine in question does not reference the TOC? The functions you are modifying are all leaf functions. I am confused.
If setting r2 is necessary for leaf function, is r2 then not a usuable register? Do you have reference to this new ABI, and why do we have a new ABI?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
From a quick read of the discussion, all this TOC stuff is unnecessary:
If local and global entry points coincide, the function may
expect no particular value in either r12 or r2; this can be
used by functions that do not need a TOC.
Since all the functions you've been patching are leaf functions, they shouldn't need the TOC or GOT, so I don't plan on applying any of the TOC stuff in the patches unless you have a reason you think they are needed?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The initial patch of this bug was only partially incorporated in atlas 3.10.2 So I am adding two new patches (atlas.3.10.2-ppc64le_abiv2_step2.patch atlas.3.10.2-ppc64le_abiv2_step3.patch) to be applied on top of atlas 3.10.2 to continue the required changes for ppc64le architecture.
Yeah, I stopped when I didn't get the answers on my my absurdly abbreviated schedule for 3.10.2 :)
I'm currently pretty heavily engaged in getting some new stuff going for 3.11.30. Do you have a machine you can test this on right if I do apply all th e patches?
If so, maybe after 3.11.30 is released, I can talk with you and apply everything in the developer release, and get you to confirm it works. Then, if does, we can apply the partial patches and you can confirm it works in the 3.10 series.
My guess is it'll be late next week before I clear the decks enough, but I can't be too confident as school is about to begin . . .
Many thanks,
Clint
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
-------- Original Message --------
Subject: [math-atlas:patches] #65 atlas to support ppc64le new archi ABI V2
From: R. Clint Whaley rwhaley@users.sf.net
To: [math-atlas:patches]65@patches.math-atlas.p.re.sf.net
Date: 14/08/2014 16:46
Yeah, I stopped when I didn't get the answers on my my absurdly abbreviated schedule for 3.10.2 :)
I'm currently pretty heavily engaged in getting some new stuff going for 3.11.30. Do you have a machine you can test this on right if I do apply all th e patches?
Yes I have a machine on which I already tested the provided two patches on top of 3.10.2 that was sufficient to have make build to complete. But did not tested on main branch because my tests on 3.10.2 are still failing during make check.
(this is what I summarized in step3 patch header extracted below)
If so, maybe after 3.11.30 is released, I can talk with you and apply everything in the developer release, and get you to confirm it works. Then, if does, we can apply the partial patches and you can confirm it works in the 3.10 series.
My guess is it'll be late next week before I clear the decks enough, but I can't be too confident as school is about to begin . . .
Many thanks,
Clint
make check failure and summary extracted from step3 patch header:
TODO: make check failure because xsslvtst execution failure
related to vector assembly code that assumes big-endian env
as written in ATL_cmm4x4x128_av.c and ATL_smm4x4x128_av.c.
Would need significant work to support little-endian as per
endianess comments of all PowerPC vector instructions in: https://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/FBFA164F824370F987256D6A006F424D/$file/vector_simd_pem.ppc.2005AUG23.pdf
===
My problem is that I do not have a good understanding of what is done in the two huge pointed files. Is it possible to have a much smaller standalone snippet code that I could build/tried/test to make the porting between PowerPC big-endian to little-endian ?
--
Michel Normand
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
If the TOC stuff is not needed, is the extra:
+ #if _CALL_ELF == 2
+ .type ATL_DecAtomicCount,@function
+ .localentry ATL_DecAtomicCount, .-ATL_DecAtomicCount
+ #endif
Still needed as well? Reason I ask is that it doesn't look like you added that junk to the probe_Altivec/VSX funcs, and I don't want to add that crap if isn't necessary.
Thanks,
Clint
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
-------- Original Message --------
Subject: [math-atlas:patches] #65 atlas to support ppc64le new archi ABI V2
From: R. Clint Whaley rwhaley@users.sf.net
To: [math-atlas:patches]65@patches.math-atlas.p.re.sf.net
Date: 19/08/2014 23:20
If the TOC stuff is not needed, is the extra:
+ #if _CALL_ELF == 2
+ .type ATL_DecAtomicCount,@function
+ .localentry ATL_DecAtomicCount, .-ATL_DecAtomicCount
+ #endif
Still needed as well? Reason I ask is that it doesn't look like you added that junk to the probe_Altivec/VSX funcs, and I don't want to add that crap if isn't necessary.
No it is not needed.
Thanks,
Clint
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
OK, I think that means I have applied all your patches, so when I release 3.11.30, you can verify it works, and send me fixes from there, and your stuff will be fixed for the developer.
We'll still have to complete the 3.10 stuff, but there's no hurry on that, since I have no idea when the next stable will be.
Once we've got 3.11 confirmed as working, maybe I can get you to give me new 3.10 patches with everything we've figured out as unnecessary excluded, to make the stable patching simpler.
Thanks,
Clint
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I have applied all the original patch to the developer basefiles, except the above .type/.localentry stuff in prior mesg. Will await for conf that it is required before doing that.
Everything else should be there for 3.11.30.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I tested the atlas.3.11.30 and found it has two following missing patches I am adding in attachments:
atlas.3.11.30-correction_commit_e14cb31.patch
atlas.3.11.30-ppc64le_abiv2_step3.patch
Still looking for the answer to:
(6) What the heck does this do:
+ #if _CALL_ELF == 2
+ .type ATL_USERMM,@function
+0: addis 2,12,.TOC.-0b@ha
+ addi 2,2,.TOC.-0b@l
+ .localentry ATL_USERMM, .-ATL_USERMM
+ #endif
Please post a link to the new ABI you are talking about.
I also still need an answer to what the above code is actually doing. In particular, I asked in a developer e-mail:
This ABI requires you to read the TOC, even if the the routine in question does not reference the TOC? The functions you are modifying are all leaf functions. I am confused.
If setting r2 is necessary for leaf function, is r2 then not a usuable register? Do you have reference to this new ABI, and why do we have a new ABI?
1- https://wiki.debian.org/ppc64el?action=AttachFile&do=view&target=An+Overview+of+the+Open+Power+ELFv2+ABI.odp
2- https://gcc.gnu.org/ml/gcc-patches/2013-11/authors.html#01140
do not understand why my previous post not yet visible :( still wait some hours before to re-submit.
The provided patch is un-complete as still some errors about parameters passing for ABI V2 in ppc asm files of atlas/ATLAS/tune/blas/gemm/CASES/*
From a quick read of the discussion, all this TOC stuff is unnecessary:
Since all the functions you've been patching are leaf functions, they shouldn't need the TOC or GOT, so I don't plan on applying any of the TOC stuff in the patches unless you have a reason you think they are needed?
I agree to not apply the TOC stuff.
update the patch
Last edit: mnormand 2014-07-24
the ABI V2 document for ppc64le architecture is available at
https://www-03.ibm.com/technologyconnect/tgcm/TGCMFileServlet.wss/ABI64BitOpenPOWER_21July2014_pub.pdf?id=B81AEC1A37F5DAF185257C3E004E8845&linkid=1n0000&c_t=voe0egg7dwbsx47htq1znm2uwo8tbfrj
The initial patch of this bug was only partially incorporated in atlas 3.10.2 So I am adding two new patches (atlas.3.10.2-ppc64le_abiv2_step2.patch atlas.3.10.2-ppc64le_abiv2_step3.patch) to be applied on top of atlas 3.10.2 to continue the required changes for ppc64le architecture.
Yeah, I stopped when I didn't get the answers on my my absurdly abbreviated schedule for 3.10.2 :)
I'm currently pretty heavily engaged in getting some new stuff going for 3.11.30. Do you have a machine you can test this on right if I do apply all th e patches?
If so, maybe after 3.11.30 is released, I can talk with you and apply everything in the developer release, and get you to confirm it works. Then, if does, we can apply the partial patches and you can confirm it works in the 3.10 series.
My guess is it'll be late next week before I clear the decks enough, but I can't be too confident as school is about to begin . . .
Many thanks,
Clint
-------- Original Message --------
Subject: [math-atlas:patches] #65 atlas to support ppc64le new archi ABI V2
From: R. Clint Whaley rwhaley@users.sf.net
To: [math-atlas:patches] 65@patches.math-atlas.p.re.sf.net
Date: 14/08/2014 16:46
Yes I have a machine on which I already tested the provided two patches on top of 3.10.2 that was sufficient to have make build to complete. But did not tested on main branch because my tests on 3.10.2 are still failing during make check.
(this is what I summarized in step3 patch header extracted below)
make check failure and summary extracted from step3 patch header:
related to vector assembly code that assumes big-endian env
as written in ATL_cmm4x4x128_av.c and ATL_smm4x4x128_av.c.
Would need significant work to support little-endian as per
endianess comments of all PowerPC vector instructions in:
https://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/FBFA164F824370F987256D6A006F424D/$file/vector_simd_pem.ppc.2005AUG23.pdf
===
My problem is that I do not have a good understanding of what is done in the two huge pointed files. Is it possible to have a much smaller standalone snippet code that I could build/tried/test to make the porting between PowerPC big-endian to little-endian ?
--
Michel Normand
sorry for the bad formatting of previous comment that I sent via email.
(I hate sourceforge for those formatting features)
If the TOC stuff is not needed, is the extra:
+ #if _CALL_ELF == 2
+ .type ATL_DecAtomicCount,@function
+ .localentry ATL_DecAtomicCount, .-ATL_DecAtomicCount
+ #endif
Still needed as well? Reason I ask is that it doesn't look like you added that junk to the probe_Altivec/VSX funcs, and I don't want to add that crap if isn't necessary.
Thanks,
Clint
-------- Original Message --------
Subject: [math-atlas:patches] #65 atlas to support ppc64le new archi ABI V2
From: R. Clint Whaley rwhaley@users.sf.net
To: [math-atlas:patches] 65@patches.math-atlas.p.re.sf.net
Date: 19/08/2014 23:20
No it is not needed.
OK, I think that means I have applied all your patches, so when I release 3.11.30, you can verify it works, and send me fixes from there, and your stuff will be fixed for the developer.
We'll still have to complete the 3.10 stuff, but there's no hurry on that, since I have no idea when the next stable will be.
Once we've got 3.11 confirmed as working, maybe I can get you to give me new 3.10 patches with everything we've figured out as unnecessary excluded, to make the stable patching simpler.
Thanks,
Clint
I have applied all the original patch to the developer basefiles, except the above .type/.localentry stuff in prior mesg. Will await for conf that it is required before doing that.
Everything else should be there for 3.11.30.
OK, can you see if 3.11.30 works for you? If not, send me the patches to fix.
Thanks,
Clint
I tested the atlas.3.11.30 and found it has two following missing patches I am adding in attachments:
atlas.3.11.30-correction_commit_e14cb31.patch
atlas.3.11.30-ppc64le_abiv2_step3.patch
I believe everything should be working for this in 3.11.35. Please open a new tracker if something is missing there.
Thanks!
Clint