Commit Graph

2476 Commits

Author SHA1 Message Date
Luuk de Gram 55a260c968 wasm: implement shl for big integers 2023-05-19 20:20:29 +02:00
Luuk de Gram 061d99285d wasm: correctly use elem type when lowering
Previously when lowering a value of `elem_ptr` we would multiply the
abisize of the parent type by the index, rather than the element type.
This would result in an invalid pointer way beyond the correct pointer.

We now also pass the current offset to each recursive call to ensure
we do not miss inner offsets.
2023-05-19 20:20:26 +02:00
Jacob Young 79bdd2bd63 x86_64: implement saturating add/sub for weird types 2023-05-18 20:42:38 -04:00
Jacob Young 60e69fdaa1 codegen: emit global vector padding 2023-05-18 20:42:38 -04:00
Jacob Young 35da95fe87 x86_64: implement integer vector @truncate 2023-05-18 20:42:38 -04:00
Jacob Young 01b63cd081 x86_64: delete some incorrect code 2023-05-18 20:42:38 -04:00
Jacob Young 36ddab03fa x86_64: fix multi-limb compare 2023-05-18 20:42:38 -04:00
Jacob Young 80df8da82f x86_64: initialize array sentinels 2023-05-18 20:42:38 -04:00
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