program float_stress {
section module {
}
section data {
int rax = 0
float xmm0 = 0.0
float xmm1 = 0.0
float xmm2 = 0.0
float xmm3 = 0.0
float xmm4 = 0.0
float xmm5 = 0.0
float xmm6 = 0.0
float xmm7 = 0.0
float xmm8 = 0.0
float xmm9 = 0.0
float xmm10 = 0.0
float xmm11 = 0.0
float xmm12 = 0.0
float xmm13 = 0.0
float xmm14 = 0.0
float xmm15 = 0.0
float xmm16 = 0.0
float xmm17 = 0.0
float xmm18 = 0.0
float xmm19 = 0.0
float xmm20 = 0.0
float xmm21 = 0.0
float xmm22 = 0.0
float xmm23 = 0.0
float xmm24 = 0.0
float xmm25 = 0.0
float xmm26 = 0.0
float xmm27 = 0.0
float xmm28 = 0.0
float xmm29 = 0.0
float xmm30 = 0.0
float xmm32 = 0.0
float xmm33 = 0.0
float xmm35 = 0.0
float xmm36 = 0.0
float xmm37 = 0.0
float xmm38 = 0.0
float xmm39 = 0.0
float xmm41 = 0.0
float real_const_19 = 20.20
float real_const_18 = 19.19
float real_const_15 = 16.16
float real_const_13 = 14.14
float real_const_4 = 5.5
float real_const_1 = 2.2
float real_const_12 = 13.13
float real_const_16 = 17.17
float real_const_2 = 3.3
float real_const_0 = 1.1
float real_const_3 = 4.4
float real_const_5 = 6.6
float real_const_11 = 12.12
float real_const_20 = 0.0
float real_const_10 = 11.11
float real_const_7 = 8.8
float real_const_6 = 7.7
float real_const_9 = 10.10
float real_const_17 = 18.18
float real_const_14 = 15.15
float real_const_8 = 9.9
string fmt_float = "%.6f "
string newline = "\n"
float x = 0.0
float y = 0.0
float z = 0.0
float test_a = 0.0
float test_b = 0.0
float test_c = 0.0
float test_d = 0.0
float test_e = 0.0
float test_f = 0.0
float test_g = 0.0
float test_h = 0.0
float test_i = 0.0
float test_j = 0.0
float test_k = 0.0
float test_l = 0.0
float test_m = 0.0
float test_n = 0.0
float test_o = 0.0
float test_p = 0.0
float test_q = 0.0
float test_r = 0.0
float test_s = 0.0
float test_t = 0.0
float test_sum = 0.0
float test_tmp = 0.0
}
section code {
start:
call PROC_test
mov x, 0
mov y, 1
mov z, 2
mov x, y
mul x, z
print fmt_float, x
print newline
done
function PROC_test:
mov xmm0, real_const_0
mov test_a, xmm0
mov xmm1, real_const_1
mov test_b, xmm1
mov xmm2, real_const_2
mov test_c, xmm2
mov xmm3, real_const_3
mov test_d, xmm3
mov xmm4, real_const_4
mov test_e, xmm4
mov xmm5, real_const_5
mov test_f, xmm5
mov xmm6, real_const_6
mov test_g, xmm6
mov xmm7, real_const_7
mov test_h, xmm7
mov xmm8, real_const_8
mov test_i, xmm8
mov xmm9, real_const_9
mov test_j, xmm9
mov xmm10, real_const_10
mov test_k, xmm10
mov xmm11, real_const_11
mov test_l, xmm11
mov xmm12, real_const_12
mov test_m, xmm12
mov xmm13, real_const_13
mov test_n, xmm13
mov xmm14, real_const_14
mov test_o, xmm14
mov xmm15, real_const_15
mov test_p, xmm15
mov xmm16, real_const_16
mov test_q, xmm16
mov xmm17, real_const_17
mov test_r, xmm17
mov xmm18, real_const_18
mov test_s, xmm18
mov xmm19, real_const_19
mov test_t, xmm19
mov xmm20, real_const_20
mov test_sum, xmm20
mov xmm21, test_a
mul xmm21, test_b
mov xmm22, test_c
div xmm22, test_d
add xmm21, xmm22
mov xmm23, test_e
mul xmm23, test_f
sub xmm21, xmm23
mov xmm24, test_g
div xmm24, test_h
add xmm21, xmm24
mov xmm25, test_i
mul xmm25, test_j
sub xmm21, xmm25
mov xmm26, test_k
div xmm26, test_l
add xmm21, xmm26
mov xmm27, test_m
div xmm27, test_n
sub xmm21, xmm27
mov xmm28, test_o
div xmm28, test_p
add xmm21, xmm28
mov xmm29, test_q
div xmm29, test_r
sub xmm21, xmm29
mov xmm30, test_s
div xmm30, test_t
add xmm21, xmm30
mov test_tmp, xmm21
add test_sum, test_tmp
mov xmm32, test_a
add xmm32, test_b
add xmm32, test_c
add xmm32, test_d
add xmm32, test_e
mov xmm33, test_f
add xmm33, test_g
add xmm33, test_h
add xmm33, test_i
add xmm33, test_j
mul xmm32, xmm33
mov test_tmp, xmm32
add test_sum, test_tmp
mov xmm35, test_k
mul xmm35, test_l
mov xmm36, test_m
mul xmm36, test_n
sub xmm35, xmm36
mov xmm37, test_o
add xmm37, test_p
add xmm37, test_q
div xmm35, xmm37
mov xmm38, test_r
mul xmm38, test_s
mov xmm39, test_t
add xmm39, test_a
mul xmm38, xmm39
add xmm35, xmm38
mov test_tmp, xmm35
add test_sum, test_tmp
mov xmm41, test_sum
add xmm41, test_a
add xmm41, test_b
add xmm41, test_c
add xmm41, test_d
add xmm41, test_e
add xmm41, test_f
add xmm41, test_g
add xmm41, test_h
add xmm41, test_i
add xmm41, test_j
add xmm41, test_k
add xmm41, test_l
add xmm41, test_m
add xmm41, test_n
add xmm41, test_o
add xmm41, test_p
add xmm41, test_q
add xmm41, test_r
add xmm41, test_s
add xmm41, test_t
mov test_sum, xmm41
print fmt_float, test_sum
print newline
PROC_END_test:
ret
}
}