Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Zwinkau
libfirm
Commits
c569340a
Commit
c569340a
authored
Oct 29, 2004
by
Michael Beck
Browse files
Removed last changes
[r4246]
parent
16eba3c0
Changes
3
Hide whitespace changes
Inline
Side-by-side
ir/tv/fltcalc.c
View file @
c569340a
...
...
@@ -458,7 +458,7 @@ static char* _add(const char* a, const char* b, char* result)
* when exponents are equal is required though.
* Also special care about the sign is needed when the mantissas are equal
* (+/- 0 ?) */
if
(
sign
&&
sc_val_to_long
(
exp_diff
,
VALUE_SIZE
>>
2
,
1
)
==
0
)
{
if
(
sign
&&
sc_val_to_long
(
exp_diff
)
==
0
)
{
switch
(
sc_comp
(
_mant
(
a
),
_mant
(
b
)))
{
case
1
:
/* a > b */
if
(
_sign
(
a
))
_sign
(
result
)
=
1
;
/* abs(a) is bigger and a is negative */
...
...
@@ -769,7 +769,7 @@ static char* _trunc(const char *a, char *result)
memcpy
(
&
_desc
(
result
),
&
_desc
(
a
),
sizeof
(
descriptor_t
));
exp_bias
=
(
1
<<
_desc
(
a
).
exponent_size
)
/
2
-
1
;
exp_val
=
sc_val_to_long
(
_exp
(
a
)
,
VALUE_SIZE
>>
2
,
1
)
-
exp_bias
;
exp_val
=
sc_val_to_long
(
_exp
(
a
))
-
exp_bias
;
if
(
exp_val
<
0
)
{
sc_val_from_ulong
(
0
,
NULL
);
...
...
@@ -1212,7 +1212,7 @@ LLDBL fc_val_to_float(const void *val)
/* @@@ long double exponent is 15bit, so the use of sc_val_to_long should not
* lead to wrong results */
exponent
=
sc_val_to_long
(
_exp
(
value
)
,
VALUE_SIZE
>>
2
,
1
)
;
exponent
=
sc_val_to_long
(
_exp
(
value
))
;
sc_val_from_ulong
(
2
,
NULL
);
_shift_right
(
_mant
(
value
),
sc_get_buffer
(),
_mant
(
value
));
...
...
ir/tv/strcalc.c
View file @
c569340a
...
...
@@ -1153,22 +1153,14 @@ void sc_val_from_ulong(unsigned long value, void *buffer)
}
}
long
sc_val_to_long
(
const
void
*
val
,
unsigned
int
bits
,
unsigned
int
is_signed
)
long
sc_val_to_long
(
const
void
*
val
)
{
int
i
;
long
l
=
0
;
for
(
i
=
CALC_BUFFER_SIZE
-
1
;
i
>=
0
;
i
--
)
{
l
=
(
l
<<
4
)
+
_val
(((
char
*
)
val
)[
i
]);
if
(
bits
<
(
sizeof
(
long
)
<<
3
))
{
/* remove unused bits */
l
&=
~
((
-
1
)
<<
bits
);
/* sign extend */
if
(
is_signed
)
if
(
l
&
(
1
<<
(
bits
-
1
)))
l
|=
((
-
1
)
<<
bits
);
}
return
l
;
}
...
...
@@ -1287,7 +1279,7 @@ void sc_bitcalc(const void* value1, const void* value2, int radius, int sign, un
long
offset
;
carry_flag
=
0
;
offset
=
sc_val_to_long
(
val2
,
radius
,
sign
);
offset
=
sc_val_to_long
(
val2
);
DEBUGPRINTF_COMPUTATION
((
"%s "
,
sc_print_hex
(
value1
)));
switch
(
op
)
...
...
ir/tv/strcalc.h
View file @
c569340a
...
...
@@ -121,7 +121,7 @@ const int sc_get_buffer_length(void);
void
sc_val_from_str
(
const
char
*
str
,
unsigned
int
len
,
void
*
buffer
);
void
sc_val_from_long
(
long
l
,
void
*
buffer
);
void
sc_val_from_ulong
(
unsigned
long
l
,
void
*
buffer
);
long
sc_val_to_long
(
const
void
*
val
,
unsigned
int
bits
,
unsigned
int
sign
);
long
sc_val_to_long
(
const
void
*
val
);
void
sc_min_from_bits
(
unsigned
int
num_bits
,
unsigned
int
sign
,
void
*
buffer
);
void
sc_max_from_bits
(
unsigned
int
num_bits
,
unsigned
int
sign
,
void
*
buffer
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment