Tags: kalray/llvm-project
Tags
[kvx] Implement scall builtin Summary: In the frontend, generate notail call by casting the scall 1st argument to a pointer of addrspace 259 In the backend, at call lowering, look at the callee type: if it is a pointer of addrspace 259, assume it is a SCALL. We create a new ISD node named SCALL to differentiate calls and tailcalls from system calls. Add a new file KVXCommon.h to include definitions that are common to the frontend and the backend. For now, just move the ADDRSPACE enum in there. Also includes minor refactoring: - use namespaces in CGBuiltin.cpp to avoid ambiguities between clang::KVX and llvm::KVX namespaces - factorize list of physical registers defined in CALL/ICALL/SCALL Test Plan: added frontend and backend CodeGen tests Reviewers: dsampaio, O81 llvm-coolidge Reviewed By: dsampaio, O81 llvm-coolidge Subscribers: piannetta Differential Revision: https://phab.kalray.eu/D36822
[kvx] Rename xxor -> xeor, xnxor -> xneor Summary: Follow the builtin renaming: xxor -> xeor, xnxor -> xneor https://kalray.atlassian.net/browse/TOOLCHAIN-181 Test Plan: updated tests Reviewers: dsampaio, piannetta, O81 llvm-coolidge Reviewed By: dsampaio, O81 llvm-coolidge Differential Revision: https://phab.kalray.eu/D34120
clusterOS and KVX Porting toolchain: only support LocalExecTLSModel Summary: The clusterOS and KVX Porting toolchain only support the LocalExecTLSModel, for all modes. Test Plan: CI Reviewers: O81 llvm-coolidge! Differential Revision: https://phab.kalray.eu/D28791
clusterOS and KVX Porting toolchain: only support LocalExecTLSModel Summary: The clusterOS and KVX Porting toolchain only support the LocalExecTLSModel, for all modes. Test Plan: CI Reviewers: O81 llvm-coolidge! Differential Revision: https://phab.kalray.eu/D28791
[kvx] Do not remove KILL and IMPLICIT_DEF during scheduling Summary: Instead of removing them, schedule them as normal without considering them as solo instruction. Then, fix the printer code to handle printing when they are in a bundle. This allows to have more correct code with regards to verify-machineinstr, thus fixing Generic/undef-phi.ll test. Test Plan: CodeGen files updated Reviewers: dsampaio, O81 llvm-coolidge Reviewed By: dsampaio, O81 llvm-coolidge Maniphest Tasks: T20700 Differential Revision: https://phab.kalray.eu/D26540
[kvx][NFC] Add i128 test files Summary: Adds `__int128` test files. Test Plan: CI Reviewers: csix, O81 llvm-coolidge Reviewed By: csix, O81 llvm-coolidge Maniphest Tasks: T16472 Differential Revision: https://phab.kalray.eu/D23694
[kvx] Fix a wrong emission of MAKEi43, constant too big Summary: The function isSplatBuildVec, used for checking that an integer is a valid splat build-vector immediate; and in particular checking its size; was incorrectly assuming the integer to be unsigned. The MAKE instruction of build_vector assumes the integer is signed. Hence, we had off-by-one errors in the size of constants given to MAKE, resulting in too big bundles in unfortunate cases. Test Plan: update jfctint.ll, all others are unchanged Reviewers: dsampaio, O81 llvm-coolidge Reviewed By: dsampaio, O81 llvm-coolidge Subscribers: hkhallouki Maniphest Tasks: T19709 Differential Revision: https://phab.kalray.eu/D22358
[kvx] Fix a wrong emission of MAKEi43, constant too big Summary: The function isSplatBuildVec, used for checking that an integer is a valid splat build-vector immediate; and in particular checking its size; was incorrectly assuming the integer to be unsigned. The MAKE instruction of build_vector assumes the integer is signed. Hence, we had off-by-one errors in the size of constants given to MAKE, resulting in too big bundles in unfortunate cases. Test Plan: update jfctint.ll, all others are unchanged Reviewers: dsampaio, O81 llvm-coolidge Reviewed By: dsampaio, O81 llvm-coolidge Subscribers: hkhallouki Maniphest Tasks: T19709 Differential Revision: https://phab.kalray.eu/D22358
Revert "[kvx][loopdo] Enabling hardware loops by default" This reverts commit 3297363.
[kvx][TCA] Rename and rework CV1 TCA builtins to line up with GCC Summary: - Renamed all TCA builtins and intrinsics to have the 'x' prefix - Renamed: - `lv` -> `xload256` - `lv_cond` -> `xloadc256` - `sv` -> `xstore256` - `sv_cond` -> `xstorec256` - `lvc` -> `xload1024q[0123]` - `lvc_cond` -> `xloadc1024q[0123]` - `swapvo` -> `xswap256` - `alignv` -> `xalign512o` - `alignov` -> `xaccess512o` - Reworked `xload1024q` and `xloadc1024q`: - Removed the column argument (now explicit in the builtin name) - xload builtins: check for presence of '.u' modifier (must be given) - Reworked `xswap256`: signature is now `tca256_t * -> long4 -> long4` - Reworked `xalign512o`: signature is now `tca512_t -> long -> tca256_t` - Reworked `xaccess512o`: signature is now `tca512_t -> long -> long4` - Swapped the two first arguments of `xstore256` and `xstorec256` - Typo fixes in kvxtcaintrin.h - ACB 4.8 to 4.9 compatibility layer: added builtins and intrinsics definitions to access the 4.8 builtins. These definitions will be removed in ACB 4.10. - (internal) Swapped the column argument of `xloadc1024q` intrinsic - (internal) Swapped the two arguments of `xstorec256` intrinsic - (internal) Change TCA type string qualifier from 't' to 'x' Test Plan: - modified and updated CodeGen tests + kvxtca.c and kvx-tca-types.c - kept the previous versions of TCA CodeGen tests, prefixed with `acb_4_8_` - Compiler document CI Reviewers: dsampaio, O81 llvm-coolidge, mqho, echaloin Reviewed By: dsampaio, O81 llvm-coolidge, mqho Subscribers: echaloin, jlemaire, jvillette, mkapfer, xraynaud, mqho, bddinechin Maniphest Tasks: T18645 Differential Revision: https://phab.kalray.eu/D19114
PreviousNext