https://gcc.gnu.org/bugzilla/show_bug.cgi?id=18562
Andrew Pinski changed:
What|Removed |Added
Target Milestone|--- |4.9.0
Resolution|---
--- Comment #13 from pinskia at gcc dot gnu dot org 2006-09-18 03:13
---
The problem here is the x86 back-end pushes constant vectors to the constant
pool.
Note my patch will not work any more because it has been outdated to take into
account the new CONSTRUCTOR layout.
--
pinskia
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-09-14
06:51 ---
Hmm, but vectors are not consider as aggregates.
at the tree level right before optimization, we have:
A_6 = {1.299523162841796875e+0, 1.299523162841796875e+0,
1.299523162841796875e+0,
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-09-14
07:09 ---
Actually the issue is that we don't change the constructor into a VECTOR_CST:
constructor 0x41ec8720
type vector_type 0x41ebb9a0 __v4sf type real_type 0x41e0fd90 float
sizes-gimplified
--
What|Removed |Added
BugsThisDependsOn||14295
Status|WAITING |NEW
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18562
--- Additional Comments From rth at gcc dot gnu dot org 2005-01-18 09:50
---
Found the tree-ssa aggregate copy-propagation pr. Made this pr depend on it,
as this has a different sort of test case.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18562
--- Additional Comments From steven at gcc dot gnu dot org 2005-01-12
09:24 ---
If this is closed, let's be sure to find that enhancement request and close
this as a dup.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18562
--- Additional Comments From steven at gcc dot gnu dot org 2005-01-12
09:37 ---
AMD64 has this at -O2:
Test case 1:
main:
.LFB499:
subq$24, %rsp
.LCFI0:
movl$.LC1, %edi
movl$4, %eax
movaps .LC0(%rip), %xmm0
movups %xmm0,
--- Additional Comments From uros at kss-loka dot si 2005-01-12 10:54
---
Another testcase that I think should be optimized:
#include xmmintrin.h
__m128 test() {
float val1[4] = {0.0f, 0.0f, 0.0f, 0.0f};
return _mm_loadu_ps(val1);
}
This is currently compiled to:
--- Additional Comments From rth at gcc dot gnu dot org 2005-01-11 23:58
---
Your first test case is fixed by the patch for PR13366. We now get
.align 16
.LC0:
.long 1067869798
.long 1067869798
.long 1067869798
.long 1067869798
...
--- Additional Comments From uros at kss-loka dot si 2005-01-12 06:53
---
(In reply to comment #3)
In the second testcase, compiler should figure out that the whole val1[] array
is initialized with constants. In this case, .LCx constant vector can be built
in compile time and a load of
--- Additional Comments From pinskia at gcc dot gnu dot org 2004-11-19
14:44 ---
Confirmed. This is either a target bug or an RTL optimization problem. The
reason why I say that is
because the builtins are not expandded before reaching RTL.
--
What|Removed
--- Additional Comments From uros at gcc dot gnu dot org 2004-11-19 15:41
---
If val1 is moved out of the main() function, produced code is OK:
--cut here--
#include xmmintrin.h
#include stdio.h
float val1[4] = {1.3f, 1.4f, 1.5f, 1.6f};
int main(void) {
float result[4];
13 matches
Mail list logo