I am ok with the wopt fix. One minor comment, your change does not
need to be enclosed inside x86_64
Sun

On Wed, Apr 20, 2011 at 6:34 AM, Mathew, Pallavi <pallavi.mat...@amd.com> wrote:
> Hi,
>
> Can a gatekeeper please review the attached patch that:
>
> 1. Fixes a bug in GVN which was not able to differentiate scalar and
>
> vector constant. For example, 2.1 and <2.1, 2.1> would get the same
>
> value number and this bug could cause run time as well compile-time
> problems.
>
> This fix updates:
>
> osprey/be/opt/opt_vnfre.cxx
>
> osprey/be/opt/opt_etable.cxx
>
> osprey/be/opt/opt_etable.h
>
> osprey/be/opt/opt_vn.cxx
>
> osprey/be/opt/opt_vn_expr.h
>
> osprey/be/opt/opt_vn_expr.cxx
>
> osprey/be/opt/opt_vn_expr_taxonomy.h
>
>
>
> 2. Fixes an alignment bug. The problem can be explained by the following f90
> snippet.
>
> Statemnt 22 (which is a loop with 3 iterations) is vectorized. Neither
> input%field2%arr nor
>
> input%field1%arr is aligned properly. However, compiler generates aligned
> load instructions for
>
> them causing segmentation fault at runtime.
>
>
>
>       1     module foobar
>
>       2     implicit none
>
>       3
>
>       4     type t1
>
>       5         integer :: pad1
>
>       6         integer :: pad2
>
>       7         integer :: pad3
>
>       8         real*8, dimension(3) :: arr
>
>       9     end type t1;
>
>      10
>
>      11     type t2
>
>      12         type(t1) :: field1
>
>      13         type(t1) :: field2
>
>      14     end type t2;
>
>      15
>
>      16     contains
>
>      17
>
>      18     subroutine foo(input)
>
>      19         type(t2) :: input
>
>      20         real*8, dimension(3) :: arr2;
>
>      21
>
>      22         arr2 = input%field2%arr - input%field1%arr
>
>      23         call bar (arr2);
>
>      24     end subroutine foo
>
>      25
>
>      26     end module foobar
>
> This fix updates:
>
> osprey/be/cg/whirl2ops.cxx
>
>
>
> 3. Fixes a problem illustrated with the snippet shown below built with -O3.
>
> <mydata> is accessed using aligned SIMD instruction no matter this snippet
>
> is built with -m32 or -m64. With -m32, the SP is not guaranteed to land at
>
> 16-byte boundary, therefore we are not able to *statically* allocate a local
>
> var at 16-byte boundary.
>
>
>
> ------------------------------
>
> void foo (void) {
>
>     int i, mydata[4];
>
>     for (i= 0; i < 4; i++)
>
>         mydata[i] = 1;
>
>
>
>     extern void bar (int*);
>
>     bar (&mydata);
>
> }
>
> -------------------------------
>
>
>
> The root cause is that with -m32, stack frame is 8-byte aligned, and
>
> therefore local variables cannot be statically aligned at a boundary more
>
> stringent than 8-byte alingment (unless one use alloca() to allocate
>
> space for local var). Using aligned SSE instructions to load/store
>
> local arrays will incur segmentation fault.
>
> There are two problems fixed by the change:
>
>   i) Register allocation doesn't respect a variable's alignment when
>
>      it spills/restores to/from its home location.
>
>  ii) local variables should not have more stringent alignment than stack
> frame.
>
> This fix updates:
>
> osprey/be/cg/whirl2ops.cxx
>
> osprey/be/cg/cg_spill.cxx
>
> osprey/be/com/data_layout.cxx
>
>
>
> Thanks.
>
> Pallavi
>
> ------------------------------------------------------------------------------
> Benefiting from Server Virtualization: Beyond Initial Workload
> Consolidation -- Increasing the use of server virtualization is a top
> priority.Virtualization can reduce costs, simplify management, and improve
> application availability and disaster protection. Learn more about boosting
> the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
> _______________________________________________
> Open64-devel mailing list
> Open64-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/open64-devel
>
>

------------------------------------------------------------------------------
Benefiting from Server Virtualization: Beyond Initial Workload 
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve 
application availability and disaster protection. Learn more about boosting 
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to