Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as C by scodil ( 18 years ago )
union vec2d 
{
    double e[2];
    double v __attribute__((vector_size(16)));
};
typedef union vec2d vec2d;

static
vec2d a={{1,2}}, b={{3,4}};

static inline 
vec2d
foo1 ( vec2d a, vec2d b )
{ 
    return (vec2d){ .v = a.v/b.v };
}

static inline
vec2d
foo2 ( vec2d a, vec2d b )
{
    return (vec2d){ .v = a.v+a.v*b.v };
}
    
vec2d
foo3 ()
{
    return (vec2d){ .v = foo1(a,foo2(b,b)).v };
}

vec2d
foo4 ()
{
    return (vec2d){ .v = a.v / (b.v+b.v*b.v) };
}


/////////////

.file	"c_vec2.c"
	.text
	.p2align 4,,15
.globl foo3
	.type	foo3, @function
foo3:
.LFB4:
	subq	$96, %rsp
.LCFI0:
	movq	b+8(%rip), %rax
	movq	b(%rip), %rdx
	movq	$0, -16(%rsp)
	movq	$0, -80(%rsp)
	movq	$0, 80(%rsp)
	movq	%rax, 16(%rsp)
	movq	%rdx, 8(%rsp)
	movapd	8(%rsp), %xmm0
	movq	%rax, (%rsp)
	movq	%rdx, -8(%rsp)
	movapd	%xmm0, %xmm1
	movq	a(%rip), %rax
	mulpd	-8(%rsp), %xmm1
	movq	%rax, -56(%rsp)
	movq	a+8(%rip), %rax
	movq	%rax, -48(%rsp)
	addpd	%xmm1, %xmm0
	movapd	%xmm0, -24(%rsp)
	movq	-24(%rsp), %rax
	movq	%rax, -72(%rsp)
	movq	-16(%rsp), %rax
	movapd	-56(%rsp), %xmm0
	movq	%rax, -64(%rsp)
	divpd	-72(%rsp), %xmm0
	movapd	%xmm0, -88(%rsp)
	movq	-88(%rsp), %rax
	movq	%rax, 24(%rsp)
	movq	-80(%rsp), %rax
	movq	%rax, 32(%rsp)
	movapd	24(%rsp), %xmm0
	movapd	%xmm0, 72(%rsp)
	movq	72(%rsp), %xmm0
	movq	80(%rsp), %xmm1
	addq	$96, %rsp
	ret
.LFE4:
	.size	foo3, .-foo3
	.p2align 4,,15
.globl foo4
	.type	foo4, @function
foo4:
.LFB5:
	movapd	b(%rip), %xmm0
	movq	$0, -16(%rsp)
	movapd	%xmm0, %xmm1
	mulpd	%xmm0, %xmm1
	addpd	%xmm1, %xmm0
	movapd	a(%rip), %xmm1
	divpd	%xmm0, %xmm1
	movapd	%xmm1, -24(%rsp)
	movq	-16(%rsp), %xmm1
	movq	-24(%rsp), %xmm0
	ret
.LFE5:
	.size	foo4, .-foo4
	.section	.rodata
	.align 16
	.type	a, @object
	.size	a, 16
a:
	.long	0
	.long	1072693248
	.long	0
	.long	1073741824
	.align 16
	.type	b, @object
	.size	b, 16
b:
	.long	0
	.long	1074266112
	.long	0
	.long	1074790400
	.section	.eh_frame,"a",@progbits
.Lframe1:
	.long	.LECIE1-.LSCIE1
.LSCIE1:
	.long	0x0
	.byte	0x1
	.string	"zR"
	.uleb128 0x1
	.sleb128 -8
	.byte	0x10
	.uleb128 0x1
	.byte	0x3
	.byte	0xc
	.uleb128 0x7
	.uleb128 0x8
	.byte	0x90
	.uleb128 0x1
	.align 8
.LECIE1:
.LSFDE1:
	.long	.LEFDE1-.LASFDE1
.LASFDE1:
	.long	.LASFDE1-.Lframe1
	.long	.LFB4
	.long	.LFE4-.LFB4
	.uleb128 0x0
	.byte	0x4
	.long	.LCFI0-.LFB4
	.byte	0xe
	.uleb128 0x68
	.align 8
.LEFDE1:
.LSFDE3:
	.long	.LEFDE3-.LASFDE3
.LASFDE3:
	.long	.LASFDE3-.Lframe1
	.long	.LFB5
	.long	.LFE5-.LFB5
	.uleb128 0x0
	.align 8
.LEFDE3:
	.ident	"GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)"
	.

 

Revise this Paste

Your Name: Code Language: