Andrew Kelley
6dc5ce931c
Merge pull request #10959 from joachimschmidt557/stage2-aarch64
...
stage2 AArch64: misc improvements
2022-02-22 01:30:49 -05:00
joachimschmidt557
25f73224f7
stage2 AArch64: pass a few more behavior tests
2022-02-21 23:05:16 +01:00
joachimschmidt557
2ba1ef165a
stage2 AArch64: implement genSetReg for ptr_stack_offset
2022-02-21 22:54:14 +01:00
joachimschmidt557
ec62e76455
stage2 AArch64: replace genMulConstant with binOp
2022-02-21 22:54:09 +01:00
joachimschmidt557
a9154a7eaf
stage2 AArch64: implement storing to memory
2022-02-21 22:44:40 +01:00
Andrew Kelley
74303a3d95
Merge pull request #10925 from Vexu/stage2
...
stage2: support anon init through error unions and optionals
2022-02-21 14:18:17 -05:00
Veikka Tuominen
a5ac062689
stage2: make field/array base ptr work at comptime
2022-02-20 11:59:49 +02:00
Andrew Kelley
7d9e3840bb
Sema: fix inline break from a non-comptime scope to outer one
...
Prior to this, the compiler would hit an assertion because the
break_inline would not successfully move the compile-time control flow.
2022-02-20 00:20:29 -07:00
Veikka Tuominen
6f0601c793
stage2: support anon init through error unions and optionals at runtime
2022-02-20 02:11:02 +02:00
Andrew Kelley
746435a954
Sema: implement @typeInfo for list literals
2022-02-19 15:11:18 -07:00
Veikka Tuominen
e027492243
stage2: support anon init through error unions and optionals
2022-02-19 20:21:19 +02:00
Jakub Konka
59df39e949
add integer division tests
2022-02-19 14:24:03 +01:00
Cody Tapscott
db80dff4e0
Add backend-specific skips for bitreverse, byteswap tests
2022-02-18 14:28:32 -07:00
Cody Tapscott
fe1d6c2f56
Skip failing stage1 @bitReverse test
2022-02-18 14:28:32 -07:00
Cody Tapscott
ef417f19e1
stage2: Implement @bitReverse and @byteSwap
...
This change implements the above built-ins for Sema and the LLVM
backend. Other backends have had placeholders added for lowering.
2022-02-18 14:28:32 -07:00
Andrew Kelley
60bb1d4e1c
Merge pull request #10906 from topolarity/cbe-array-support
...
stage2 CBE: Implement 2D array support
2022-02-18 14:08:06 -05:00
Andrew Kelley
736b9dcdd6
Merge pull request #10858 from topolarity/stage2-bitcast
...
stage2 sema: Fix sign handling of exotic integers in `@bitCast`
2022-02-18 13:49:00 -05:00
Jakub Konka
97c25fb8d0
x64: implement array_elem_val when array is stored in memory
2022-02-18 09:14:15 +01:00
Jakub Konka
abfaf8382b
x64: implement array_elem_val when array fits in register
2022-02-18 09:14:15 +01:00
Jakub Konka
085c606b87
x64: implement slice_elem_ptr
2022-02-18 09:14:15 +01:00
Andrew Kelley
9ea253b9c4
Sema: implement type info for structs
2022-02-17 20:48:09 -07:00
Andrew Kelley
0bb22600bd
Sema: fix typeinfo for enums with no declarations
2022-02-17 20:48:09 -07:00
Andrew Kelley
feb4b01b38
Sema: fix typeinfo for sentinels of array and pointer
2022-02-17 20:48:09 -07:00
Veikka Tuominen
6235afc632
stage1: fix f80 negation
2022-02-17 23:06:46 +02:00
Andrew Kelley
63cbec1a96
stage2: add more functions to freestanding libc
...
The log functions are not passing behavior tests.
2022-02-17 13:11:58 -07:00
Jakub Konka
d1c74ac42d
Merge pull request #10914 from ziglang/x64-more-codegen
...
stage2,x64: refactor stack mgmt mechanics, implement slice, fix ptr_add and ptr_sub
2022-02-17 18:05:30 +01:00
Jakub Konka
3193cc1c1e
x64: fix ptr_add and ptr_sub
...
Add standalone implementation of operand reuse for ptr related
arithmetic operations of add and sub.
2022-02-17 15:07:42 +01:00
John Schmidt
e2ad95c088
stage2: implement vector floatops
2022-02-17 14:47:21 +02:00
Cody Tapscott
1639fd4c45
Fix 2D array support for C backend
...
This updates the C backend to use proper array types.
In order to do that, this commit also:
- fixes up elem_ptr and field_ptr handling
- adds `renderTypecast` (renders in C typecast format, e.g. "int* [10]")
- adds a bit special handling for undefined pointers, which is necessary
to support slice/elem_ptr to undefined decls
2022-02-16 12:57:11 -07:00
Jakub Konka
78e6f9c44c
x64: fix ptr_add
...
However, still missing is taking into account pointer alignment
when performing arithmetic.
2022-02-16 14:13:06 +01:00
Jakub Konka
c7775a9f62
x64: impl genBinMathOpMir for ptr_stack_off and PIE memory
2022-02-16 14:13:06 +01:00
Jakub Konka
9c82f3ae6f
stage2: disable failing aarch64-macos behavior tests
2022-02-15 21:04:36 +01:00
Jan Philipp Hafer
c6cd919a18
stage1: fix comptime saturation subtraction
...
- also simplifies code
- adding a few more tests
closes #10870
2022-02-15 10:40:53 +02:00
joachimschmidt557
22895f5616
stage2 AArch64: Enable behavior testing
2022-02-14 22:33:01 +01:00
Cody Tapscott
45aed7171c
Skip 8/16-bit @bitCast test for wasm
2022-02-13 13:28:08 -07:00
Cody Tapscott
c586e3ba1b
Add additional tests for @bitCast
2022-02-13 13:28:08 -07:00
Mateusz Radomski
b5f8fb85e6
Implement f128 @rem
2022-02-13 15:37:38 +02:00
Jacob G-W
3bbe6a28e0
stage2: add decltests
2022-02-13 14:42:20 +02:00
Andrew Kelley
0b7347fd18
move more behavior tests to the "passing" section
2022-02-12 21:35:29 -07:00
Andrew Kelley
c349191b75
organize behavior tests
...
moving towards disabling failing tests on an individual basis
2022-02-12 21:13:07 -07:00
Andrew Kelley
a005ac9d3c
stage2: implement @popCount for SIMD vectors
2022-02-12 20:44:30 -07:00
Jakub Konka
d542a588c6
Skip @sqrt f80 test on freebsd
2022-02-12 21:24:18 +01:00
Andrew Kelley
16076964d6
disable NaN f80 behavior tests
...
Let's get all these other bug fixes in and figure out f80 NaN later.
Looks like it's not working at comptime in master branch anyway.
2022-02-12 11:18:23 +01:00
Andrew Kelley
774f9bdb79
LLVM backend: disable failing aarch64 behavior test
2022-02-12 11:18:23 +01:00
Andrew Kelley
a024aff932
make f80 less hacky; lower as u80 on non-x86
...
Get rid of `std.math.F80Repr`. Instead of trying to match the memory
layout of f80, we treat it as a value, same as the other floating point
types. The functions `make_f80` and `break_f80` are introduced to
compose an f80 value out of its parts, and the inverse operation.
stage2 LLVM backend: fix pointer to zero length array tripping LLVM
assertion. It now checks for when the element type is a zero-bit type
and lowers such thing the same way that pointers to other zero-bit types
are lowered.
Both stage1 and stage2 LLVM backends are adjusted so that f80 is lowered
as x86_fp80 on x86_64 and i386 architectures, and identical to a u80 on
others. LLVM constants are lowered in a less hacky way now that #10860
is fixed, by using the expression `(exp << 64) | fraction` using llvm
constants.
Sema is improved to handle c_longdouble by recursively handling it
correctly for whatever the float bit width is. In both stage1 and
stage2.
2022-02-12 11:18:23 +01:00
joachimschmidt557
2262640e8b
stage2 ARM: lower const slices
...
Follow-up to e1a535360fb9ed08fc48018571b9702ab12a5876 for ARM
This also fixes some stack offset calculation bugs
2022-02-12 00:01:05 +01:00
Cody Tapscott
70d7f87be0
Fix up sign handling and add arbitrary-length integer support to @bitCast()
2022-02-11 08:49:19 -07:00
Jakub Konka
cad3e3e63a
x64: enable more behavior tests
2022-02-11 12:49:06 +01:00
Luuk de Gram
9c6d416bec
Activate passing behavior tests
...
This moves the single bugs behavior tests to the outer branch and disables the test cases
for all non-passing backends.
For the larger files, we move it up a single branch and disable it for the c backend.
All test cases that do pass for the c backend however, are enabled.
2022-02-10 21:40:06 +01:00
Jakub Konka
e139c41fd8
stage2: handle truncate to signed non-pow-two integers
2022-02-10 15:05:12 +01:00