ir/tests/debug.x86/regset-fib2.irt
2023-02-07 01:57:07 +03:00

159 lines
2.7 KiB
Plaintext

--TEST--
Fib2
--TARGET--
x86
--ARGS--
--debug-regset 0x3ff --save --dump-live-ranges -S --run
--CODE--
{
int32_t zero = 0;
double c_0 = 0;
double c_1 = 1;
double c_10000 = 10000;
uintptr_t f = func(printf);
uintptr_t format = "%g\n";
l_1 = START(l_6);
double lo_1 = COPY(c_0);
double hi_1 = COPY(c_1);
l_2 = END(l_1);
l_3 = LOOP_BEGIN(l_2, l_9);
double lo_2 = PHI(l_3, lo_1, lo_3);
double hi_2 = PHI(l_3, hi_1, hi_3);
bool b = LT(hi_2, c_10000);
l_4 = IF(l_3, b);
l_7 = IF_TRUE(l_4);
double hi_3 = ADD(hi_2, lo_2);
double lo_3 = SUB(hi_3, lo_2);
ll = CALL/2(l_7, f, format, lo_3);
l_8 = CALL/2(ll, f, format, lo_3);
l_9 = LOOP_END(l_8, l_3);
l_5 = IF_FALSE(l_4);
l_6 = RETURN(l_5, zero);
}
--EXPECT--
{
uintptr_t c_1 = 0;
bool c_2 = 0;
bool c_3 = 1;
int32_t c_4 = 0;
double c_5 = 0;
double c_6 = 1;
double c_7 = 10000;
uintptr_t c_8 = func(printf);
uintptr_t c_9 = "%g\n";
l_1 = START(l_17);
l_2 = END(l_1);
l_3 = LOOP_BEGIN(l_2, l_15);
double d_4 = PHI(l_3, c_5, d_10);
double d_5 = PHI(l_3, c_6, d_9);
bool d_6 = LT(d_5, c_7);
l_7 = IF(l_3, d_6);
l_8 = IF_TRUE(l_7);
double d_9 = ADD(d_5, d_4);
double d_10 = SUB(d_9, d_4);
l_11 = CALL/2(l_8, c_8, c_9, d_10);
l_13 = CALL/2(l_11, c_8, c_9, d_10);
l_15 = LOOP_END(l_13, l_3);
l_16 = IF_FALSE(l_7);
l_17 = RETURN(l_16, c_4);
}
{ # LIVE-RANGES (vregs_count=3)
TMP
[%xmm0]: [2.2-2.3)
[%eax]: [11.0-11.1)
[%eax]: [13.0-13.1)
[%xmm0]: [15.2-15.3)
R1 (d_4) [%xmm1]: [3.0-10.1), DEF(4.2), USE(9.1/2), USE(10.1/2)
R2 (d_5, d_9) [SPILL=0x0]
[%xmm0]: [3.0-10.0), DEF(5.2), USE(6.1/1)!, USE(9.0/1)!, DEF(9.0)!, DEF(9.2)!, USE(10.0/1, hint=R3)!
: [10.0-16.0), PHI_USE(15.2, phi=d_5/3)
R3 (d_10) [SPILL=0x8]
[%xmm0]: [10.0-11.1), DEF(10.0, hint=R2)!, DEF(10.2)!, USE(11.1/4)
: [11.1-16.0), USE(13.1/4), PHI_USE(15.2, phi=d_4/3)
[%eax] : [17.0-17.1)
[%SCRATCH] : [11.1-11.2), [13.1-13.2)
}
test:
subl $0x1c, %esp
xorpd %xmm1, %xmm1
movsd .L3, %xmm0
movsd %xmm0, 0xc(%esp)
.L1:
movsd 0xc(%esp), %xmm0
ucomisd .L4, %xmm0
jp .L2
jae .L2
movsd 0xc(%esp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0xc(%esp)
movsd 0xc(%esp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x14(%esp)
leal .L5, %eax
movl %eax, (%esp)
movsd 0x14(%esp), %xmm0
movsd %xmm0, 4(%esp)
calll printf
leal .L5, %eax
movl %eax, (%esp)
movsd 0x14(%esp), %xmm7
movsd %xmm7, 4(%esp)
calll printf
movsd 0x14(%esp), %xmm1
jmp .L1
.L2:
xorl %eax, %eax
addl $0x1c, %esp
retl
.rodata
.db 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90
.L3:
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f
.L4:
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xc3, 0x40
.L5:
.db 0x25, 0x67, 0x0a, 0x00
1
1
1
1
2
2
3
3
5
5
8
8
13
13
21
21
34
34
55
55
89
89
144
144
233
233
377
377
610
610
987
987
1597
1597
2584
2584
4181
4181
6765
6765
exit code = 0