Igor Breger
d8b51e134e
[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
llvm-svn: 307527
2017-07-10 09:26:09 +00:00
Igor Breger
d48c5e4855
[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
llvm-svn: 307526
2017-07-10 09:07:34 +00:00
Igor Breger
717bd36c83
[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
llvm-svn: 306972
2017-07-02 08:58:29 +00:00
Igor Breger
d5b59cf914
[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
llvm-svn: 306533
2017-06-28 11:39:04 +00:00
Tim Northover
c2d5e6d637
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.
llvm-svn: 306328
2017-06-26 20:34:13 +00:00
Igor Breger
1c29be7e4f
[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
llvm-svn: 305989
2017-06-22 09:43:35 +00:00
Igor Breger
617be6e475
[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
llvm-svn: 303617
2017-05-23 08:23:51 +00:00
Igor Breger
842b5b36ba
[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
llvm-svn: 303345
2017-05-18 11:10:56 +00:00
Igor Breger
28f290fab8
[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
llvm-svn: 303255
2017-05-17 12:48:08 +00:00
Igor Breger
c7b5977bb1
[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
llvm-svn: 302774
2017-05-11 07:17:40 +00:00
Igor Breger
fda31e64e0
[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
llvm-svn: 302623
2017-05-10 06:52:58 +00:00
Igor Breger
810c6257f1
[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
llvm-svn: 302412
2017-05-08 09:40:43 +00:00
Igor Breger
605b965ae5
[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
llvm-svn: 302410
2017-05-08 09:03:37 +00:00
Igor Breger
c08a783521
[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
llvm-svn: 301790
2017-05-01 06:30:16 +00:00
Igor Breger
2953788c36
[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
llvm-svn: 299772
2017-04-07 14:41:59 +00:00
Igor Breger
531a203a06
[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
llvm-svn: 298800
2017-03-26 08:11:12 +00:00
Igor Breger
a8ba572dcf
[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
llvm-svn: 298609
2017-03-23 15:25:57 +00:00
Igor Breger
8a924bea78
[GlobalISel][X86] clang-format. NFC
...
llvm-svn: 298590
2017-03-23 12:13:29 +00:00
Igor Breger
321cf3c650
[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
llvm-svn: 296856
2017-03-03 08:06:46 +00:00
Igor Breger
f7359d893a
[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
llvm-svn: 295824
2017-02-22 12:25:09 +00:00
Igor Breger
b4442f34cd
[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
llvm-svn: 294723
2017-02-10 07:05:56 +00:00