Commit Graph

2518 Commits

Author SHA1 Message Date
Jacob Young 729daed591 x86_64: rewrite casts 2023-05-18 20:42:38 -04:00
Jacob Young 403c2d91be x86_64: fix float min/max behavior 2023-05-18 20:42:38 -04:00
Andrew Kelley ad391ad399 Revert "Sema: handle recursive inferred errors better in analyzeIsNonErrComptimeOnly"
This reverts commit 5aa9628de3.

This is a breaking language change and I do not agree with it. Please go
through the proposal process on this one.
2023-05-18 16:24:07 -07:00
zooster 3d64ed0353 make @trap return unreachable/noreturn (#15749)
`@trap` is a special function that we know never returns so it should
behave just like `@panic` and `@compileError` do currently and cause the
"unreachable code" + "control flow is diverted here" compile error.
Currently, `@trap(); @trap();` does not cause this error. Now it does.
2023-05-18 17:00:35 -04:00
Andrew Kelley 958fba0eb7 Merge pull request #15713 from alichraghi/ali-spirv
spirv: get more behavior tests passing
2023-05-16 16:09:22 -07:00
Andrew Kelley 4ba61a2191 Merge pull request #15704 from Vexu/fix-memcpyset
`@mem{cpy,set}` fixes
2023-05-15 22:39:45 -07:00
Ali Chraghi 6fca3f8b72 spirv: lower ptrtoint & ignore dbg_inline instructions 2023-05-15 22:04:42 +03:30
Ali Chraghi f8de4db873 spirv: implement arithmeticTypeInfo for Enum (@intToEnum) 2023-05-15 14:22:40 +03:30
Veikka Tuominen 0bc5e7b523 Sema: use elemPtrOneLayerOnly in zirMemCpy
Closes #15633
2023-05-15 10:31:24 +03:00
Veikka Tuominen ab5a72f6ca Sema: ensure dest ptr of memcpy has length
Closes #15513
2023-05-15 10:31:24 +03:00
Jacob Young 40457a3696 x86_64: implement integer vector bitwise operations 2023-05-15 03:07:51 -04:00
Jacob Young f39ff6cc68 x86_64: implement integer vector mul 2023-05-15 03:07:51 -04:00
Jacob Young 77a8cb5728 x86_64: fix @clz and @ctz of u8 2023-05-15 03:07:51 -04:00
Jacob Young 6c6d8d67cf x86_64: redo movement, float negation, and @fabs 2023-05-15 03:07:51 -04:00
Jacob Young b6d6102850 x86_64: reimplement @floatToInt 2023-05-15 03:07:51 -04:00
Jacob Young 72b4657053 Dwarf: fix overflow write byte_size 2023-05-15 03:07:51 -04:00
Jacob Young 904ffb41de x86_64: implement calling function references 2023-05-15 03:07:51 -04:00
Jacob Young 57c38f6433 x86_64: implement global payload pointers 2023-05-15 03:07:51 -04:00
Jacob Young 2cbd442a9d x86_64: implement integer vector movement 2023-05-15 03:07:51 -04:00
Jacob Young f83ebd8e6c x86_64: implement stack probing 2023-05-15 03:07:51 -04:00
Jacob Young 1336619979 x86_64: fix field_ptr nonsense 2023-05-15 03:07:51 -04:00
Jacob Young 81664f17d5 codegen: implement global enum_numbered 2023-05-15 03:07:51 -04:00
Jacob Young e36e9323f4 x86_64: implement union_init 2023-05-15 03:07:51 -04:00
Jacob Young 019c884481 x86_64: add missing multply of f16 2023-05-15 03:07:51 -04:00
Ali Chraghi 9c550721e4 spirv: lower float_to_int and int_to_float 2023-05-15 03:04:17 +03:30
Ryan Liptak 815e53b147 Update all std.mem.tokenize calls to their appropriate function
Everywhere that can now use `tokenizeScalar` should get a nice little performance boost.
2023-05-13 13:45:04 -07:00
Veikka Tuominen 68bacad804 Merge pull request #15643 from Vexu/fixes
make `@call` compile errors match regular calls
2023-05-13 12:52:16 +03:00
Veikka Tuominen 5aa9628de3 Sema: handle recursive inferred errors better in analyzeIsNonErrComptimeOnly
Closes #15669
2023-05-12 14:59:26 +03:00
Ali Chraghi ccc490ef68 setup spirv backend in behavior tests 2023-05-11 20:31:52 +02:00
Andrew Kelley 7f7bd206dc Merge pull request #15519 from dweiller/issue-15482
Optimize lowering of `s[start..][0..len]`
2023-05-11 08:59:44 -07:00
Andrew Kelley 5569e6b49d Merge pull request #15639 from jacobly0/signed-mod
llvm/cbe: fix signed `@mod`/`@divFloor` computations
2023-05-11 08:36:33 -07:00
Veikka Tuominen f0fdaf32d3 fix incorrect use of mutable pointers to temporary values 2023-05-11 17:23:06 +03:00
Veikka Tuominen 0a7f8c2e01 Sema: return const pointers from ref inits
Closes #12189
2023-05-11 12:23:57 +03:00
Jacob Young c5b96c7447 llvm: fix @max/@min of unsupported float types
Closes #15611
2023-05-10 15:16:50 -04:00
Jacob Young 2e6a6d7564 llvm/cbe: fix signed @mod/@divFloor computations
Closes #15636
2023-05-10 15:11:52 -04:00
r00ster91 297b5d1074 fix [x]u65529 and above overflowing
```
$ cat overflow.zig
test {
    var a: [1]u65535 = undefined;
    _ = a;
}
$ zig-out/bin/zig test overflow.zig
thread 290266 panic: integer overflow
zig/src/type.zig:3604:55: 0xada43d in intAbiAlignment (zig)
            std.math.ceilPowerOfTwoPromote(u16, (bits + 7) / 8),
                                                      ^
zig/src/type.zig:3598:42: 0xadd4ea in intAbiSize (zig)
        const alignment = intAbiAlignment(bits, target);
                                         ^
zig/src/type.zig:3500:61: 0x92be91 in abiSizeAdvanced (zig)
                return AbiSizeAdvanced{ .scalar = intAbiSize(bits, target) };
                                                            ^
zig/src/type.zig:3385:62: 0x928933 in abiSizeAdvanced (zig)
                switch (try payload.elem_type.abiSizeAdvanced(target, strat)) {
                                                             ^
zig/src/type.zig:3268:32: 0x92c012 in abiSize (zig)
        return (abiSizeAdvanced(ty, target, .eager) catch unreachable).scalar;
                               ^
```
This is only noticed in a debug build of zig and silently does the wrong
thing and overflows in release builds.

This happened to `[x]u65529` and above because of the ` + 7` on a `u16`.
2023-05-09 11:58:34 +03:00
Jacob Young 6778da4516 x86_64: implement binary operations for f16 and f16 vectors 2023-05-08 07:36:20 -04:00
Jacob Young f8708e2c4d x86_64: implement @floor, @ceil, and @trunc for float vectors 2023-05-08 07:36:20 -04:00
Jacob Young ea957c4cff x86_64: implement @sqrt for f16 scalars and vectors 2023-05-08 07:36:20 -04:00
Jacob Young 05580b9453 x86_64: implement float cast from f16 to f64 2023-05-08 07:36:20 -04:00
Jacob Young 1c53f0a6b0 Dwarf: workaround crash 2023-05-08 07:36:20 -04:00
Jacob Young cba195c117 x86_64: implement some float and float vector movement
This allows actually storing value of these supported types in
registers, and not restricting them to stack slots.
2023-05-08 07:36:20 -04:00
Jacob Young 3a5e3c52e0 x86_64: implement @mulAdd 2023-05-08 07:36:20 -04:00
Jacob Young 5d4288c5f6 x86_64: fix unordered float equality 2023-05-08 07:36:19 -04:00
Jacob Young 32ab930f1d x86_64: implement f16 conversions when supported 2023-05-08 07:36:19 -04:00
Jacob Young 1a261917ce x86_64: implement @ctz and @clz for u128 2023-05-08 07:36:19 -04:00
Dominic 5a3eca5d4c Disallow named test decls with duplicate names 2023-05-08 10:59:06 +03:00
dweiller 4d296debef test: disable by-length slice test on wasm backend 2023-05-07 15:55:21 +10:00
dweiller e507f0c0aa test: add behavior tests for pointer slice-by-length 2023-05-07 15:55:21 +10:00
dweiller 7c8d60e814 test: add behavior tests for slice-by-length 2023-05-07 15:55:20 +10:00