• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#include <_mingw_mac.h>
7
8        .file "truncf.S"
9        .text
10        .p2align 4,,15
11        .globl __MINGW_USYMBOL(truncf)
12        .def    __MINGW_USYMBOL(truncf);  .scl    2;      .type   32;     .endef
13
14#ifdef __x86_64__
15        .seh_proc __MINGW_USYMBOL(truncf)
16#endif
17__MINGW_USYMBOL(truncf):
18#if defined(_AMD64_) || defined(__x86_64__)
19	subq	$24, %rsp
20	.seh_stackalloc	24
21	.seh_endprologue
22	movd	%xmm0, 12(%rsp)
23	movl	12(%rsp), %edx
24	movl	%edx, %ecx
25	sarl	$23, %ecx
26	andl	$255, %ecx
27	subl	$127, %ecx
28	cmpl	$22, %ecx
29	jg	.l1
30	movl	%edx, %r8d
31	andl	$-2147483648, %r8d
32	testl	%ecx, %ecx
33	js	.l2
34	movl	$8388607, %eax
35	sarl	%cl, %eax
36	notl	%eax
37	andl	%edx, %eax
38	orl	%r8d, %eax
39	movl	%eax, 8(%rsp)
40	movss	8(%rsp), %xmm0
41	addq	$24, %rsp
42	ret
43	.p2align 4,,10
44.l1:
45	addl	$-128, %ecx
46	jne	.noinfnan
47	addss	%xmm0, %xmm0
48.noinfnan:
49	addq	$24, %rsp
50	ret
51	.p2align 4,,10
52.l2:
53	movl	%r8d, 8(%rsp)
54	movss	8(%rsp), %xmm0
55	addq	$24, %rsp
56	ret
57	.seh_endproc
58#elif defined(_X86_) || defined(__i386__)
59        flds    4(%esp)
60        subl    $8, %esp
61        fstcw   (%esp)
62        /* FE_TOWARDZERO */
63        movzwl (%esp), %eax
64        orb    $0xc, %ah
65        movw    %ax, 4(%esp)
66        fldcw   4(%esp)
67        frndint
68        fldcw   (%esp)
69        addl    $8, %esp
70        ret
71#endif
72