Jacob Young
a66cd54f94
llvm: cleanup even more unused LLVM API bindings
2023-08-08 21:32:50 -04:00
Jacob Young
a0cb03ed99
llvm: finish converting instructions
2023-08-08 21:32:50 -04:00
Jacob Young
49cc1bff08
llvm: finish converting intrinsics
2023-08-08 21:32:50 -04:00
Jacob Young
6577f52614
llvm: convert vector reduction intrinsics
...
Scratch that thing I said about one pass. :)
2023-08-08 21:32:50 -04:00
Jacob Young
e1efd4d3c2
Builder: simplify intrinsic table
...
This format removes back-references allowing it to be parsed in a single
pass. It also reduces the number of kinds, simplifying the code.
2023-08-08 21:32:50 -04:00
Jacob Young
5b79f08ee8
llvm: finish converting attributes to use Builder and the C LLVM API
2023-08-08 21:32:50 -04:00
Jacob Young
b63d9745b5
llvm: convert intrinsics to using Builder
2023-08-08 21:32:50 -04:00
Jacob Young
3ebf8ce970
Builder: fix builtin pseudo-instruction dumping
2023-08-08 21:32:50 -04:00
Jacob Young
f938404a45
Builder: fix attribute spacing
2023-08-08 21:32:50 -04:00
Jacob Young
1c7798a3cd
Merge pull request #16705 from antlilja/builder-intrinsics
...
Implement more intrinsics in new LLVM IR builder API and remove uses of LLVM owns API
2023-08-05 23:05:02 -04:00
Robin Voetter
68f84964b3
llvm: add const addrspace cast
2023-08-05 17:11:57 -07:00
antlilja
e149f1e1de
Use new LLVM IR builder API in bit op lowering
2023-08-06 01:46:57 +02:00
antlilja
86f61a9d26
Implement bitop intrinsics in new LLVM IR builder
...
* llvm.bitreverse
* llvm.bswap
* llvm.ctpop
* llvm.ctlz
* llvm.cttz
2023-08-06 01:46:57 +02:00
antlilja
2b4ac7c6b3
Use new LLVM builder API in buildFloatOP
2023-08-06 01:46:56 +02:00
antlilja
63dcffdf9f
Implement fp intrinsics in new LLVM IR builder
...
Intrinsics implemented
* llvm.ceil
* llvm.cos
* llvm.exp
* llvm.exp2
* llvm.fabs
* llvm.floor
* llvm.log
* llvm.log10
* llvm.log2
* llvm.round
* llvm.sin
* llvm.trunc
* llvm.fma
2023-08-06 01:46:51 +02:00
Jacob Young
b8c9d5ae98
cbe: don't emit traps in naked functions
...
Closes #16680
2023-08-05 16:44:56 -07:00
Jacob Young
9e0a34f329
llvm: fix data layout calculation for experimental llvm targets
...
Closes #16616
2023-08-01 19:20:22 -07:00
Jacob Young
228c956377
std: finish cleanup up asm
...
This also required implementing the necessary syntax in the x86_64 backend.
2023-07-31 03:49:21 -04:00
Jacob Young
817fa3af86
std: cleanup asm usage
...
After fixing some issues with inline assembly in the C backend, the std
cleanups have the side effect of making these functions compatible with
the backend, allowing it to be used on linux without linking libc.
2023-07-31 01:58:10 -04:00
Jacob Young
6f0a613b6f
Merge pull request #16611 from xxxbxxx/packed-struct
...
codegen: fix various packed struct issues
Closes #16609
Closes #15337
2023-07-29 23:49:14 -04:00
Jacob Young
dc8a80a191
llvm: support read-write output constraints in assembly
...
Closes #15227
2023-07-29 09:49:04 -07:00
Xavier Bouchoux
8c367ef99a
codegen: fix access to byte-aligned nested packed struct elems
...
When acessing a packed struct member via a byte aligned ptr (from the optimisation in Sema.structFieldPtrByIndex())
the codegen must apply the parent ptr packed_offset in addition to the field offset itself.
resolves https://github.com/ziglang/zig/issues/16609
2023-07-29 18:16:13 +02:00
Xavier Bouchoux
46abf20454
llvm: partial fix of store undefined to packed result location
...
prefer marking too few undefined bits, rather than too many that may overwrite nearby values.
partially resolves https://github.com/ziglang/zig/issues/15337
2023-07-29 11:56:27 +02:00
Jacob Young
125b453c58
llvm: fix SysV C abi for structs smaller than two eightbytes
...
Closes #16038
Closes #16288
2023-07-28 19:27:08 -04:00
Andrew Kelley
0f21d3d4d1
LLVM: always add argument attributes to calls
...
These are needed for correctness. There's no reason to only add them for
function pointers.
closes #16290
2023-07-27 00:49:25 -07:00
Jacob Young
f9717f87f5
llvm: fix data layout on ios
...
Closes #16549
2023-07-26 16:49:32 -07:00
Andrew Kelley
6cee98eb30
frontend: forbid packed and extern tuples
2023-07-25 21:45:33 -07:00
Xavier Bouchoux
5ab1854602
codegen/llvm: fix memset with vectors smaller than one byte
...
The special case to take advantage of llvm's intrinsic
was generating invalid llvm ir:
```
Invalid bitcast
%60 = bitcast <2 x i2> %59 to i8, !dbg !3122
thread 145453 panic: LLVM module verification failed
```
2023-07-25 18:14:10 -07:00
Jacob G-W
3c08fe931a
make @typeInfo not return private decls
...
fixes #10731
Thanks @nektro for previous work in #14878
This change creates a small breaking change:
It removes the `is_pub` field of a decl in `@typeInfo`
2023-07-25 16:19:08 -07:00
Jacob Young
3fc2e36de2
llvm: convert global assembly
2023-07-23 23:48:19 -04:00
Jacob Young
533111e849
llvm: convert inline assembly
...
Also, implement TODOs from a previous commit.
2023-07-23 23:48:19 -04:00
Jacob Young
06af9cc101
llvm: fix datalayout generation for more targets
...
Closes #16482
2023-07-23 23:48:18 -04:00
Jacob Young
aa44f8f0fd
llvm: convert attributes and non-intrinsic calls
2023-07-23 23:48:18 -04:00
Andrew Kelley
a2d81c547c
llvm: fix building for 32-bit targets
2023-07-21 16:37:50 -07:00
Andrew Kelley
3f15010abe
Merge pull request #16430 from jacobly0/llvm-builder
...
llvm: begin the journey of independence from llvm
2023-07-20 12:55:03 -07:00
Jacob Young
4d31d4d875
llvm: cleanup LLVM IR dumping
2023-07-20 02:44:40 -04:00
Jacob Young
a1062c63ca
llvm: add Builder trailing extra interface
2023-07-20 01:48:50 -04:00
Jacob Young
ea72fea1a4
llvm: fix bootstrap
2023-07-19 23:39:42 -04:00
Jacob Young
9dd7a9eb02
llvm: fix various crashes
2023-07-19 23:38:40 -04:00
Jacob Young
9c4d5e64b4
llvm: minor fixes
2023-07-19 23:38:40 -04:00
Jacob Young
9afb349aba
llvm: convert most instructions
2023-07-19 23:38:40 -04:00
Jacob Young
ef84e86992
llvm: convert cursor positioning
2023-07-19 23:38:40 -04:00
Jacob Young
3f46e747a8
llvm: convert basic block creation
2023-07-19 23:38:40 -04:00
Jacob Young
8fde3a8f04
llvm: finish converting constants
2023-07-19 23:38:40 -04:00
Jacob Young
1f8407c356
llvm: cleanup management and implement more const functions
2023-07-19 23:38:40 -04:00
Jacob Young
7ec7fe5359
llvm: cleanup init
2023-07-19 23:38:40 -04:00
Jacob Young
ff8a49448c
llvm: finish converting lowerValue
2023-07-19 23:38:40 -04:00
Jacob Young
2cb52235b9
llvm: convert all calls to constInt
2023-07-19 23:38:40 -04:00
Jacob Young
65fd401c06
llvm: remove more usages of llvm.Type
2023-07-19 23:38:40 -04:00
Jacob Young
d167bd4b56
llvm: finish converting lowerType
2023-07-19 23:38:40 -04:00