From owner-FreeBSD-tech-jp@jp.freebsd.org  Sun Jul  8 16:14:33 2001
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id QAA51149;
	Sun, 8 Jul 2001 16:14:33 +0900 (JST)
	(envelope-from owner-FreeBSD-tech-jp@jp.FreeBSD.org)
Received: from ns.kobe1995.net (root@211.12.126.15.user.dt.il24.net [211.12.126.15])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id QAA51143
	for <freebsd-tech-jp@jp.freebsd.org>; Sun, 8 Jul 2001 16:14:25 +0900 (JST)
	(envelope-from kaz@kobe1995.net)
Received: from beauty.kobe1995.net (beauty [192.168.0.6])
	by ns.kobe1995.net (8.8.8/3.7W-primary) with ESMTP id QAA11825
	for <freebsd-tech-jp@jp.freebsd.org>; Sun, 8 Jul 2001 16:14:19 +0900 (JST)
Received: (from kaz@localhost) by beauty.kobe1995.net (8.11.3/3.4Wbeta6-glove) id f687EJm12212; Sun, 8 Jul 2001 16:14:19 +0900 (JST)
Date: Sun, 8 Jul 2001 16:14:19 +0900 (JST)
Message-Id: <200107080714.f687EJm12212@beauty.kobe1995.net>
To: FreeBSD-tech-jp@jp.freebsd.org
In-Reply-To: Your message of "Sat, 7 Jul 2001 16:46:32 +0900".
	<002901c106b8$f0c4c120$230488d2@us.and.or.jp>
From: kaz@kobe1995.net (NAKAMURA Kazushi)
X-Mailer: mnews [version 1.22] 1999-12/19(Sun)
Reply-To: FreeBSD-tech-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+010328
X-Sequence: FreeBSD-tech-jp 3140
Subject: [FreeBSD-tech-jp 3140] Re: summary of stack alignment on FreeBSD
Errors-To: owner-FreeBSD-tech-jp@jp.freebsd.org
Sender: owner-FreeBSD-tech-jp@jp.freebsd.org
X-Originator: kaz@kobe1995.net

$BCfB<OB;V!w?@8M$G$9!#(B

In article <002901c106b8$f0c4c120$230488d2@us.and.or.jp>
sa2c@and.or.jp writes:
>FreeBSD$B$G$N(Bstack alignment$B$K$D$$$FD4$Y$F$_$?$N$G$9$,!"(B
>$B$^$H$^$C$?>pJs$,$J$$$h$&$@$C$?$N$G(Bsummary$B$N(Bweb page$B$r(B
>$B:n@.$7$^$7$?!#(B
>
>$B$<$R$4Mw$$$?$@$$$F!"$40U8+$r$$$?$@$1$k$H9,$$$G$9!#(B
  $B>/$7A0$+$i%O%^$C$F$$$?$N$G!"$H$F$b;29M$K$J$j$^$7$?!#$7$+$7!"(B
stack$B$G$O$J$/!"(Bstatic$BNN0h$K(B align 16 $B$r;XDj$7$F3d$jEv$F$?>l9g$G$b(B
$B%j%s%/$K<:GT$9$k$H8@$&>I>u$KG:$^$5$l$F$$$^$9!#(Bdouble$B7?$@$1$G$J$/(B
SSE$BL?Na$G07$&%*%Z%i%s%I$b(B16Byte(128bit)$B6-3&$KB7$($F$*$+$J$$$H(B
$B%Z%J%k%F%#$,@8$8$k!"$b$7$/$O(B Bus error $B$GMn$A$k$N$G$9$,!"(B
align 16 $BB0@-$rIU$1$?%a%b%j$+$i(BSSE$BL?Na$G;H$&(Bxmm$B%l%8%9%?$X$NE>Aw(B
$BL?Na$,%j%s%/$K<:GT$7$^$9!#(B4.3R$B$H(B6/30$B$N(B5-current$B$KIUB0$N(Bgcc,gas,ld
$B$NAH9g$;$G3NG'$7$F$$$^$9!#(B6/27$B$N(Bbinutils$B$N%P!<%8%g%s%"%C%W$G(Bgogo$B$d(B
lame$BEy(Bnasm$B$N=PNO$,%j%s%/=PMh$k$h$&$K$J$C$?$H$$$&$3$H$G!"(Bgas$B$K$h$k(B
SSE$BL?Na(B+align 16 $B$N=PNO$b%j%s%/=PMh$k$h$&$K$J$C$?$+$H4|BT$7$?$N(B
$B$G$9$,!"BLL\$G$7$?!#;EJ}$,L5$$$N$G(B -S $B$G%"%;%s%V%i%=!<%9$r(B
$BEG$+$;$F<j$G=$@5$7$FDL$7$F$$$k$N$G$9$,!"%W%m%0%i%`$N5,LO$,Bg$-$/(B
$B$J$k$H!"<j4V$,3]$+$j$9$.$F$D$-9g$$@Z$l$J$/$J$C$F$-$^$9!#0J2<$K(B
$B>I>u$,8=$l$k%5%s%W%k%=!<%9$rIU$1$^$9!#(B

==> bug.C <==
/* test program for SSE by kaz @ kobe1995.net
	% c++ -g bug.C && ./a.out
  But it fails. So,
	% c++ -g -S bug.C
  And change loop.s to avoid bug of gcc (may be):
	 #APP
	-       movaps ($A.15),%xmm0
	-       movaps ($B.16),%xmm1
	+       movaps A.15,%xmm0
	+       movaps B.16,%xmm1
	 #NO_APP
	% c++ loop.s && ./a.out
*/

#include <stdio.h>
#include <sys/time.h>
#include <unistd.h>
#include <stdlib.h>
#include <limits.h>

main(){
static float __attribute__((aligned(16)))
	A[4]={1.,1.,1.,1.},
	B[4]={0.,1.,2.,3.},
	C[4];

	int i;

	printf("float A=(");
	for(i=0;i<4;i++)	printf("%f,",A[i]);
	printf("\b)\n");

	printf("float B=(");
	for(i=0;i<4;i++)	printf("%f,",B[i]);
	printf("\b)\n");

	asm("movaps (%0),%%xmm0"				//SSE
	:
	:"g"(A));
	asm("movaps (%0),%%xmm1"				//SSE
	:
	:"g"(B));

	asm("addps %xmm1,%xmm0");				//SSE
//	asm("mulps %xmm1,%xmm0");				//SSE
	asm("movaps %%xmm0,%0":"=g"(C));			//SSE
	printf("float C=(");
	for(i=0;i<4;i++)	printf("%f,",C[i]);
	printf("\b)\n");
}
-- 
$BCfB<OB;V!w?@8M(B		<mailto:kaz@kobe1995.net>
NAKAMURA Kazushi@KOBE	<http://kobe1995.net/>
