Commit Graph

80 Commits

Author SHA1 Message Date
H. Peter Anvin
c65a2f634b Support binary and octal floating-point
For consistency, support binary and octal floating-point, and accept
a "0d" or "0t" prefix for decimal floating-point.  However, we do not
accept a binary exponent (p) for a decimal mantissa, or vice versa.
2007-10-22 17:34:10 -07:00
H. Peter Anvin
bea0bbb62c More consistent handling of radix letters
Allow any radix letter from the set [bydtoqhx] to be used either
"Intel-style" (0...x) or "C-style" (0x...).  In Intel style, the
leading 0 remains optional as long as the first digit is in the range
0-9.

As a consequence, allow the prefix "0h" for hexadecimal floating
point.
2007-10-22 16:53:48 -07:00
H. Peter Anvin
449e04b330 Allow $-prefixed hexadecimal FP as an alternative to 0x
Since we allow the prefix $ instead of 0x for integer constants, do
the same for floating point.  No suffix support at this time; we may
want to consider if that would be appropriate.
2007-10-19 18:33:57 -07:00
H. Peter Anvin
7065309739 Formatting: kill off "stealth whitespace"
"Stealth whitespace" makes it harder to read diffs, and just generally
cause unwanted weirdness.  Do a source-wide pass to get rid of it.
2007-10-19 14:42:29 -07:00
H. Peter Anvin
31420e76d1 test/floatx.asm: fix test case
"dq" should have been "dt"
2007-10-19 14:26:52 -07:00
H. Peter Anvin
513e3c1bd2 uscore.asm: Fix test case
"$1e+16" was missing, instead "$1e16" was duplicated
2007-10-19 14:19:52 -07:00
H. Peter Anvin
37d88e4125 Don't confuse suffixed hexadecimal with floating-point
1e30 is a floating-point constant, but 1e30h is not.  The scanner
won't know that until it sees the "h", so make sure we keep enough
state to be able to distinguish "1e30" (a possible hex constant) from
"1.e30", "1e+30" or "1.0" (unabiguously floating-point.)
2007-10-19 14:10:35 -07:00
H. Peter Anvin
487a087066 test/Makefile: Use -Ox instead of -O999 2007-10-19 13:16:51 -07:00
H. Peter Anvin
361584882e Test of underscored constants 2007-10-19 13:14:06 -07:00
H. Peter Anvin
a366cac2a6 Tests of obscenely large exponents 2007-10-16 15:46:04 -07:00
H. Peter Anvin
125c878e96 Handle rounding of denorms correctly; make fp overflow a warning
- Handle rounding of denorms correctly
- Make fp overflow a warning, not an error (produces Inf)
- Make fp warnings controllable
2007-10-16 11:32:58 -07:00
H. Peter Anvin
61872221ad Add 1.5 as a test case: representative of an exact fraction
1.5 is an exactly representable fraction, useful for test.
2007-10-16 10:31:16 -07:00
H. Peter Anvin
32f21f16fc Add testnos3 from the gdtoa package (floating-point test) 2007-10-15 17:48:43 -07:00
Charles Crayne
b263b504bc Must define types before using them 2007-10-11 20:32:33 -07:00
H. Peter Anvin
f57f55c9cb Revert "floatb.asm: fix broken testcase"
This reverts commit d9e3116be1.

0x513c1704 is 50.49e9, not 50.40e9
2007-10-08 19:26:57 -07:00
H. Peter Anvin
d9e3116be1 floatb.asm: fix broken testcase
50.40e9 as a 32-bit float is 0x513c1704
2007-10-08 18:39:24 -07:00
H. Peter Anvin
36a8f95bd0 Add Frank's floattest.asm test file 2007-10-08 12:12:23 -07:00
H. Peter Anvin
30c3ad1024 zerobyte.asm: use a real instruction to avoid confusing ndisasm
It's useful to be able to disassemble a test case, so avoid mixing
data bytes and code.
2007-10-05 17:44:16 -07:00
H. Peter Anvin
653e03bef5 zerobyte.asm: add test cases for non-initial \170 uses
Add test cases for noninitial uses of \170, in order to test for
accidental duplication of REX prefixes.
2007-10-05 17:42:31 -07:00
H. Peter Anvin
5d4fd7accc Check in the proper zerobyte test
The previous checkin checked in zerobyte.bin, not zerobyte.asm
2007-10-05 17:29:01 -07:00
H. Peter Anvin
c189b44032 Emit REX prefix before literal zero (\170) 2007-10-05 17:04:32 -07:00
H. Peter Anvin
9d14a10858 Add test for problematic floats 2007-10-05 14:36:03 -07:00
H. Peter Anvin
6b74577d7f floatx.asm: add Inf and NaN to the boundary condition tests 2007-10-04 23:51:08 -07:00
H. Peter Anvin
6b8abf54d3 floatx.asm: add specific tests for exponent boundary conditions
Add tests for the exponent boundaries (underflow, denorm, normal).
2007-10-04 23:09:19 -07:00
H. Peter Anvin
b8e604eb5d Additional rules in test/Makefile
Add rules for .pl -> .asm
2007-10-04 15:18:23 -07:00
H. Peter Anvin
d0b0d28f42 Unbreak relative references to immediate addresses
Remove bogus "treat labels different from immediates" code, which
would result in generating of a relative mod/rm but without adjusting
the address accordingly.

Update addressing mode test.
2007-09-28 17:17:20 -07:00
H. Peter Anvin
3f9bc94b6e Test for various addressing modes in 64-bit mode
Test of various addressing modes in 64-bit mode.  Relative addresses
specified as numbers are currently broken!!
2007-09-26 17:00:18 -07:00
H. Peter Anvin
b0aff17908 test/movimm.asm: add optimizable forms
Add optimizable forms that probably should be shrunk by the optimizer.
2007-09-25 15:44:40 -07:00
H. Peter Anvin
0bd2565dd7 Test of immediate handling on 64-bit mode 2007-09-25 15:39:42 -07:00
H. Peter Anvin
3e1aaa9dd0 Fix BR 1490407: size of the second operand of LAR/LSL
The second operand of LAR/LSL is always 16 bits.
2007-09-25 14:26:03 -07:00
H. Peter Anvin
9713703db7 test/Makefile: make a bit more useful 2007-09-24 13:42:09 -07:00
H. Peter Anvin
dc467ba8af Support __float*__ for floating-point numbers in expressions
Add special operators to allow the use of floating-point constants in
contexts other than DW/DD/DQ/DT/DO.

As part of this checkin, make MAX_KEYWORD generated by tokhash.pl,
since it knows what all the keywords are so it can tell which one is
the longest.
2007-09-24 12:30:54 -07:00
H. Peter Anvin
fc565dd362 Implement INVLPGA according to the documentation
INVLPGA is defined as taking rax,ecx but "the portion of rax used to
form the address is determined by the effective address size", so it
is really ax/eax/rax.
2007-09-22 22:35:28 -07:00
H. Peter Anvin
20dec371dc Simple test for 0x67 prefixes 2007-09-22 21:50:03 -07:00
H. Peter Anvin
f04031bbd7 Make test/Makefile a bit more useful
Make all the tests depend on the nasm binary...
2007-09-22 21:47:13 -07:00
H. Peter Anvin
eb49a4e1d4 Merge commit 'origin/sse5' 2007-09-19 16:22:03 -07:00
H. Peter Anvin
b4b4317878 test/Makefile: make a bit more useful 2007-09-19 16:15:22 -07:00
H. Peter Anvin
f48bc6fb48 Support generating NaNs and infinities
Support generating NaNs and infinities as part of floating-point
constants.
2007-09-18 21:55:56 -07:00
H. Peter Anvin
72ac77bb0b Simple test for hexadecimal floating-point numbers
Very trivial test for hexadecimal floating-point numbers
2007-09-18 18:37:36 -07:00
H. Peter Anvin
e31747e95b Unify all standard IEEE floating-point formats; add 128-bit
Unify all the standard IEEE formats into one function, add support for
IEEE standard 128-bit floating point numbers.

The 80-bit format is still special since it explicitly represents the
integer portion.
2007-09-18 17:50:34 -07:00
H. Peter Anvin
cf5180a955 Actually generate SSE5 instructions
This checkin completes what is required to actually generate SSE5
instructions.  No support in the disassembler yet.

This checkin covers:

- Support for actually generating DREX prefixes.
- Support for matching operand "operand X must match Y"
2007-09-17 17:25:27 -07:00
H. Peter Anvin
2ced2ec370 test/r13.asm: test special-casing of rbp and r13 in 64-bit mode
Test that we correctly special-case the modr/m generation for r13 in
64-bit mode.
2007-09-17 13:19:25 -07:00
H. Peter Anvin
9ab60dabcc Simple performance benchmarks: label, macro and token lookups
Simple scripts to generate performance benchmarks for label,
macro and token lookups.  The label and macro lookups are simple
numerical sequences; it may be desirable to add some more
sophisticated algorithms for producing tokens in case we want to
compare different hash functions against each other.
2007-09-13 18:13:20 -07:00
H. Peter Anvin
53a3c687dd Fix some MMX/SSE irregularities which interact with the 64-bit support 2007-09-02 16:37:03 +00:00
H. Peter Anvin
4768f5f6f2 Simple 64-bit org test 2007-09-02 06:23:29 +00:00
H. Peter Anvin
3894519675 Use standard macro for the default directive 2007-08-29 16:41:43 +00:00
H. Peter Anvin
859f085985 More test cases for rel and abs addressing 2007-08-29 16:38:47 +00:00
H. Peter Anvin
12fc7bc4b2 Add test cases for IP-relative addressing 2007-08-29 15:49:53 +00:00
Keith Kanios
b7a89544d0 General push for x86-64 support, dubbed 0.99.00. 2007-04-12 02:40:54 +00:00
H. Peter Anvin
e2c80181b6 Apply Nindent to all .c and .h files 2005-01-15 22:15:51 +00:00