Igor Breger
4e66147d1e
[GlobalISel][X86] G_PHI support.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312473 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-04 09:06:45 +00:00
Igor Breger
4ebb481ded
[GlobalISel][X86] Refactor X86LegalizerInfo. NFC.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312234 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-31 11:40:03 +00:00
Igor Breger
5b46835851
[GlobalISel][X86] Support G_IMPLICIT_DEF.
...
Summary: Support G_IMPLICIT_DEF.
Reviewers: zvi, guyblank, t.p.northover
Reviewed By: guyblank
Subscribers: rovka, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D36733
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@311633 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-24 07:06:27 +00:00
Igor Breger
041b4a8eaf
[GlobalISel][X86] Support G_BRCOND operation.
...
Summary: Support G_BRCOND operation. For now don't try to fold cmp/trunc instructions.
Reviewers: zvi, guyblank
Reviewed By: guyblank
Subscribers: rovka, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D34754
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@311327 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-21 10:51:54 +00:00
Quentin Colombet
f6eeaf64bb
[GlobalISel] Make GlobalISel a non-optional library.
...
With this change, the GlobalISel library gets always built. In
particular, this is not possible to opt GlobalISel out of the build
using the LLVM_BUILD_GLOBAL_ISEL variable any more.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309990 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-03 21:52:25 +00:00
Igor Breger
8c3ce14ba8
[GlobalISel][X86] Support G_LOAD/G_STORE i1.
...
Summary: Support G_LOAD/G_STORE i1.
Reviewers: zvi, guyblank
Reviewed By: guyblank
Subscribers: rovka, kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D35178
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307527 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-10 09:26:09 +00:00
Igor Breger
77954ced1a
[GlobalISel][X86] extend G_ZEXT support.
...
Summary:
Mark G_ZEXT/G_SEXT i1 to i8/i16, i8 to i16 as legal.
Support G_ZEXT i1 to i8/i16 instruction selection ( C++ code).
This patch requred to support G_LOAD/G_STORE i1.
Reviewers: zvi, guyblank
Reviewed By: guyblank
Subscribers: rovka, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D35177
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307526 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-10 09:07:34 +00:00
Igor Breger
31db5788ec
[GlobalISel][X86] Support G_GLOBAL_VALUE operation.
...
Summary: Support G_GLOBAL_VALUE operation. For now most of the PIC configurations not implemented yet.
Reviewers: zvi, guyblank
Reviewed By: guyblank
Subscribers: rovka, kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D34738
Conflicts:
test/CodeGen/X86/GlobalISel/regbankselect-X86_64.mir
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306972 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-02 08:58:29 +00:00
Igor Breger
31bb0eb518
[GlobalISel][X86] Support bitwise operations : G_AND, G_OR, G_XOR
...
Summary: Support G_AND, G_OR, G_XOR for i8/i16/i32/i64. Selection done via TableGen'erated code.
Reviewers: zvi, guyblank, aymanmus, m_zuckerman
Reviewed By: aymanmus
Subscribers: rovka, kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D34605
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306533 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-28 11:39:04 +00:00
Tim Northover
05321d30b5
AArch64: legalize G_EXTRACT operations.
...
This is the dual problem to legalizing G_INSERTs so most of the code and
testing was cribbed from there.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306328 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-26 20:34:13 +00:00
Igor Breger
54b8b993d1
[GlobalISel][X86] Support vector type G_INSERT legalization/selection.
...
Summary:
Support vector type G_INSERT legalization/selection.
Split from https://reviews.llvm.org/D33665
Reviewers: qcolombet, t.p.northover, zvi, guyblank
Reviewed By: guyblank
Subscribers: guyblank, rovka, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D33956
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305989 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-22 09:43:35 +00:00
Igor Breger
2bcb4e0921
[GlobalISel][X86] G_LOAD/G_STORE vec256/512 support
...
Summary: mark G_LOAD/G_STORE vec256/512 legal for AVX/AVX512. Implement instruction selection.
Reviewers: zvi, guyblank
Reviewed By: zvi
Subscribers: rovka, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D33268
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303617 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-23 08:23:51 +00:00
Igor Breger
db37cbc6f9
[GlobalISel][X86] G_ADD/G_SUB vector legalizer/selector support.
...
Summary: G_ADD/G_SUB vector legalizer/selector support.
Reviewers: zvi, guyblank
Reviewed By: guyblank
Subscribers: rovka, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D33232
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303345 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-18 11:10:56 +00:00
Igor Breger
04f47c753c
[GlobalISel][X86] Support add i64 in IA32.
...
Summary: support G_UADDE instruction selection.
Reviewers: zvi, guyblank
Reviewed By: guyblank
Subscribers: rovka, kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D33096
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303255 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-17 12:48:08 +00:00
Igor Breger
e637084b4f
[GlobalISel][X86] G_ICMP support.
...
Summary: support G_ICMP for scalar types i8/i16/i64.
Reviewers: zvi, guyblank
Reviewed By: guyblank
Subscribers: rovka, kristof.beyls, llvm-commits, krytarowski
Differential Revision: https://reviews.llvm.org/D32995
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302774 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-11 07:17:40 +00:00
Igor Breger
4d70cb577b
[GlobalISel][X86] G_ZEXT i1 to i32/i64 support.
...
Summary: Support G_ZEXT i1 to i32/i64 instruction selection.
Reviewers: zvi, guyblank
Reviewed By: guyblank
Subscribers: rovka, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D32965
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302623 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-10 06:52:58 +00:00
Igor Breger
13b9798e2b
[GlobalISel][X86] G_GEP selection support.
...
Summary: [GlobalISel][X86] G_GEP selection support.
Reviewers: zvi, guyblank
Reviewed By: guyblank
Subscribers: dberris, rovka, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D32396
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302412 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-08 09:40:43 +00:00
Igor Breger
ca7431c78f
[GlobalISel][X86] G_MUL legalizer/selector support.
...
Summary:
G_MUL legalizer/selector/regbank support.
Use only Tablegen-erated instruction selection.
This patch dealing with legal operations only.
Reviewers: zvi, guyblank
Reviewed By: guyblank
Subscribers: krytarowski, rovka, kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D32698
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302410 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-08 09:03:37 +00:00
Igor Breger
9b90bf6cee
[GlobalISel][X86] G_SEXT/G_ZEXT support.
...
Reviewers: zvi, guyblank
Reviewed By: zvi
Subscribers: rovka, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D32591
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301790 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-01 06:30:16 +00:00
Igor Breger
ea3c2beccb
[GlobalISel] implement narrowing for G_CONSTANT.
...
Summary: [GlobalISel] implement narrowing for G_CONSTANT.
Reviewers: bogner, zvi, t.p.northover
Reviewed By: t.p.northover
Subscribers: llvm-commits, dberris, rovka, kristof.beyls
Differential Revision: https://reviews.llvm.org/D31744
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299772 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-07 14:41:59 +00:00
Igor Breger
7733e74e54
[GlobalISel][X86] support G_FRAME_INDEX instruction selection.
...
Summary:
Support G_FRAME_INDEX instruction selection.
Reviewers: zvi, rovka, ab, qcolombet
Reviewed By: ab
Subscribers: llvm-commits, dberris, kristof.beyls, eladcohen, guyblank
Differential Revision: https://reviews.llvm.org/D30980
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298800 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-26 08:11:12 +00:00
Igor Breger
6a1a59e062
[GlobalISel][X86] Support G_STORE/G_LOAD operation
...
Summary:
1. Support pointer type as function argumnet and return value
2. G_STORE/G_LOAD - set legal action for i8/i16/i32/i64/f32/f64/vec128
3. RegisterBank - support typeless operations like G_STORE/G_LOAD, for scalar use GPR bank.
4. Support instruction selection for G_LOAD/G_STORE
Reviewers: zvi, rovka, ab, qcolombet
Reviewed By: rovka
Subscribers: llvm-commits, dberris, kristof.beyls, eladcohen, guyblank
Differential Revision: https://reviews.llvm.org/D30973
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298609 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-23 15:25:57 +00:00
Igor Breger
d0885af658
[GlobalISel][X86] clang-format. NFC
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298590 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-23 12:13:29 +00:00
Igor Breger
a59e6d2210
[GlobalISel][X86] Support float/double and vector types.
...
Summary: [GlobalISel][X86] Add support for f32/f64 and vector types in RegisterBank and InstructionSelector.
Reviewers: delena, zvi
Reviewed By: zvi
Subscribers: dberris, rovka, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D30533
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296856 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-03 08:06:46 +00:00
Igor Breger
8ae3570fa8
[X86][GlobalISel] Initial implementation , select G_ADD gpr, gpr
...
Summary: Initial implementation for X86InstructionSelector. Handle selection COPY and G_ADD/G_SUB gpr, gpr .
Reviewers: qcolombet, rovka, zvi, ab
Reviewed By: rovka
Subscribers: mgorny, dberris, kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D29816
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@295824 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-22 12:25:09 +00:00
Igor Breger
f4df3d44a5
[X86][GlobalISel] Add general-purpose Register Bank
...
Summary:
[X86][GlobalISel] Add general-purpose Register Bank.
Add trivial handling of G_ADD legalization .
Add Regestry Bank selection for COPY and G_ADD instructions
Reviewers: rovka, zvi, ab, t.p.northover, qcolombet
Reviewed By: qcolombet
Subscribers: qcolombet, mgorny, dberris, kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D29771
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294723 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-10 07:05:56 +00:00