std.math performance (SSE vs. real)

dennis luehring via Digitalmars-d digitalmars-d at puremagic.com
Mon Jun 30 09:34:33 PDT 2014


Am 30.06.2014 18:30, schrieb dennis luehring:
> Am 30.06.2014 08:21, schrieb Walter Bright:
>>> The only way I know to access x87 is with inline asm.
>>
>> I suggest using "long double" on Linux and look at the compiler output. You
>> don't have to believe me - use gcc or clang.
>
> gcc.godbolt.org clang 3.4.1 -O3

better this

int main(int argc, char** argv)
{
   return argc * 12345.6789L;
}

.LCPI0_0:
         # x86_fp80 12345.6788999999999996
	.quad	-4546745350290602879

	.short	16396
	.zero	6
main:                                   # @main
	movl	%edi, -8(%rsp)
	fldt	.LCPI0_0(%rip)
	fimull	-8(%rsp)
	fnstcw	-10(%rsp)
	movw	-10(%rsp), %ax
	movw	$3199, -10(%rsp)        # imm = 0xC7F
	fldcw	-10(%rsp)
	movw	%ax, -10(%rsp)
	fistpl	-4(%rsp)
	fldcw	-10(%rsp)
	movl	-4(%rsp), %eax
	ret



More information about the Digitalmars-d mailing list