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 5aa9628de3c6637f45b9d8cf8cbd19c422a74f6f.
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
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