llvm-project/llvm/test/CodeGen/X86/GlobalISel
Amara Emerson 8f25a021dd [AArch64][GlobalISel] Make s8 and s16 G_CONSTANTs legal.
We sometimes get poor code size because constants of types < 32b are legalized
as 32 bit G_CONSTANTs with a truncate to fit. This works but means that the
localizer can no longer sink them (although it's possible to extend it to do so).

On AArch64 however s8 and s16 constants can be selected in the same way as s32
constants, with a mov pseudo into a W register. If we make s8 and s16 constants
legal then we can avoid unnecessary truncates, they can be CSE'd, and the
localizer can sink them as normal.

There is a caveat: if the user of a smaller constant has to widen the sources,
we end up with an anyext of the smaller typed G_CONSTANT. This can cause
regressions because of the additional extend and missed pattern matching. To
remedy this, there's a new artifact combiner to generate the wider G_CONSTANT
if it's legal for the target.

Differential Revision: https://reviews.llvm.org/D63587

llvm-svn: 364075
2019-06-21 16:43:50 +00:00
..
GV.ll
add-ext.ll [X86FixupLEAs] Turn optIncDec into a generic two address LEA optimizer. Support LEA64_32r properly. 2019-05-25 06:17:47 +00:00
add-scalar.ll [x86] allow 8-bit adds to be promoted by convertToThreeAddress() to form LEA 2018-12-12 17:58:27 +00:00
add-vec.ll
and-scalar.ll Fix line-endings. NFCI. 2018-09-20 10:59:08 +00:00
ashr-scalar.ll [GlobalISel][Utils] Add a getConstantVRegVal variant that looks through instrs 2019-03-14 01:37:13 +00:00
avoid-matchtable-crash.mir
binop.ll Fix line-endings. NFCI. 2018-09-20 10:59:08 +00:00
br.ll
brcond.ll
callingconv.ll [X86FixupLEAs] Turn optIncDec into a generic two address LEA optimizer. Support LEA64_32r properly. 2019-05-25 06:17:47 +00:00
calllowering-nocrashret.ll [GISel]: Remove an incorrect assert in CallLowering 2018-09-28 15:08:49 +00:00
cmp.ll
constant.ll Revert r345165 "[X86] Bring back the MOV64r0 pseudo instruction" 2018-10-31 21:53:24 +00:00
ext-x86-64.ll GlobalISel: Allow shift amount to be a different type 2019-01-22 21:42:11 +00:00
ext.ll GlobalISel: Allow shift amount to be a different type 2019-01-22 21:42:11 +00:00
fadd-scalar.ll
fconstant.ll
fdiv-scalar.ll
fmul-scalar.ll
fpext-scalar.ll
frameIndex.ll
fsub-scalar.ll
gep.ll [X86FixupLEAs] Turn optIncDec into a generic two address LEA optimizer. Support LEA64_32r properly. 2019-05-25 06:17:47 +00:00
inttoptr.ll
irtranslator-callingconv.ll [GlobalISel] Enable CSE in the IRTranslator & legalizer for -O0 with constants only. 2019-04-15 05:04:20 +00:00
legalize-add-v128.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-add-v256.mir [X86] Regenerate legalize test files 2019-03-01 13:13:40 +00:00
legalize-add-v512.mir [X86] Regenerate legalize test files 2019-03-01 13:13:40 +00:00
legalize-add.mir [GISel]: Change how CSE is enabled by default for each pass 2019-01-24 23:11:25 +00:00
legalize-and-scalar.mir [GISel]: Change how CSE is enabled by default for each pass 2019-01-24 23:11:25 +00:00
legalize-ashr-scalar.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-brcond.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-cmp.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-constant.mir [AArch64][GlobalISel] Make s8 and s16 G_CONSTANTs legal. 2019-06-21 16:43:50 +00:00
legalize-ext-x86-64.mir [GISel]: Change how CSE is enabled by default for each pass 2019-01-24 23:11:25 +00:00
legalize-ext.mir [GlobalISel] Fix the artifact combiner to fold G_IMPLICIT_DEF properly 2018-10-10 18:01:48 +00:00
legalize-fadd-scalar.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-fdiv-scalar.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-fmul-scalar.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-fneg.mir [AArch64][GlobalISel] Add some missing vector support for FP arithmetic ops. 2019-01-28 02:28:22 +00:00
legalize-fpext-scalar.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-fptrunc-scalar.mir [GlobalISel][X86] Add the support for G_FPTRUNC 2018-08-31 11:26:51 +00:00
legalize-fsub-scalar.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-gep.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-insert-vec256.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-insert-vec512.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-lshr-scalar.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-memop-scalar-32.mir [GlobalISel] Enable CSE in the IRTranslator & legalizer for -O0 with constants only. 2019-04-15 05:04:20 +00:00
legalize-memop-scalar-64.mir GlobalISel: Verify memory size for load/store 2019-01-30 01:10:42 +00:00
legalize-mul-scalar.mir [GISel]: Change how CSE is enabled by default for each pass 2019-01-24 23:11:25 +00:00
legalize-mul-v128.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-mul-v256.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-mul-v512.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-or-scalar.mir [GISel]: Change how CSE is enabled by default for each pass 2019-01-24 23:11:25 +00:00
legalize-phi.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-shl-scalar.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-sub-v128.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-sub-v256.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-sub-v512.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
legalize-sub.mir [GISel]: Change how CSE is enabled by default for each pass 2019-01-24 23:11:25 +00:00
legalize-trunc.mir GlobalISel: Verify memory size for load/store 2019-01-30 01:10:42 +00:00
legalize-undef.mir [GlobalISel] Fix the artifact combiner to fold G_IMPLICIT_DEF properly 2018-10-10 18:01:48 +00:00
legalize-xor-scalar.mir [GISel]: Change how CSE is enabled by default for each pass 2019-01-24 23:11:25 +00:00
lit.local.cfg
lshr-scalar.ll [GlobalISel][Utils] Add a getConstantVRegVal variant that looks through instrs 2019-03-14 01:37:13 +00:00
memop-scalar-x32.ll
memop-scalar.ll [X86FixupLEAs] Turn optIncDec into a generic two address LEA optimizer. Support LEA64_32r properly. 2019-05-25 06:17:47 +00:00
memop-vec.ll
mul-scalar.ll Fix line-endings. NFCI. 2018-09-20 10:59:08 +00:00
mul-vec.ll
or-scalar.ll Fix line-endings. NFCI. 2018-09-20 10:59:08 +00:00
phi.ll Fix line-endings. NFCI. 2018-09-20 10:59:08 +00:00
ptrtoint.ll Fix line-endings. NFCI. 2018-09-20 10:59:08 +00:00
regbankselect-AVX2.mir
regbankselect-AVX512.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
regbankselect-X32.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
regbankselect-X86_64.mir [GlobalISel][X86] Add the support for G_FPTRUNC 2018-08-31 11:26:51 +00:00
select-GV-32.mir GlobalISel: Verify memory size for load/store 2019-01-30 01:10:42 +00:00
select-GV-64.mir GlobalISel: Verify memory size for load/store 2019-01-30 01:10:42 +00:00
select-add-v128.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-add-v256.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-add-v512.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-add-x32.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-add.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-and-scalar.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-ashr-scalar.mir GlobalISel: Enforce operand types for constants 2019-02-04 23:29:31 +00:00
select-blsi.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-blsr.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-br.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-brcond.mir [X86] Merge the different Jcc instructions for each condition code into single instructions that store the condition code as an operand. 2019-04-05 19:28:09 +00:00
select-cmp.mir [X86] Merge the different SETcc instructions for each condition code into single instructions that store the condition code as an operand. 2019-04-05 19:27:49 +00:00
select-constant.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-copy.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-ext-x86-64.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-ext.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-extract-vec256.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-extract-vec512.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-fadd-scalar.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-fconstant.mir [X86] Introduce new MOVSSrm/MOVSDrm opcodes that use VR128 register class. 2019-06-18 03:23:11 +00:00
select-fdiv-scalar.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-fmul-scalar.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-fpext-scalar.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-fptrunc-scalar.mir [GlobalISel][X86] Add the support for G_FPTRUNC 2018-08-31 11:26:51 +00:00
select-fsub-scalar.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-gep.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-inc.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-insert-vec256.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-insert-vec512.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-intrinsic-x86-flags-read-u32.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-leaf-constant.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-lshr-scalar.mir GlobalISel: Enforce operand types for constants 2019-02-04 23:29:31 +00:00
select-memop-scalar-unordered.mir [X86][GlobalISEL] Support lowering aligned unordered atomics 2019-03-15 17:50:30 +00:00
select-memop-scalar-x32.mir MIR: Reject non-power-of-4 alignments in MMO parsing 2019-01-30 23:09:28 +00:00
select-memop-scalar.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-memop-v128.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-memop-v256.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-memop-v512.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-merge-vec256.mir [GlobalISel] Restrict G_MERGE_VALUES capability and replace with new opcodes. 2018-12-10 18:44:58 +00:00
select-merge-vec512.mir [GlobalISel] Restrict G_MERGE_VALUES capability and replace with new opcodes. 2018-12-10 18:44:58 +00:00
select-mul-scalar.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-mul-vec.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-or-scalar.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-phi.mir [X86] Merge the different Jcc instructions for each condition code into single instructions that store the condition code as an operand. 2019-04-05 19:28:09 +00:00
select-shl-scalar.mir GlobalISel: Enforce operand types for constants 2019-02-04 23:29:31 +00:00
select-sub-v128.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-sub-v256.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-sub-v512.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-sub.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-trunc.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-undef.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-unmerge-vec256.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-unmerge-vec512.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
select-xor-scalar.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
shl-scalar-widening.ll [x86] allow 8-bit adds to be promoted by convertToThreeAddress() to form LEA 2018-12-12 17:58:27 +00:00
shl-scalar.ll [GlobalISel][Utils] Add a getConstantVRegVal variant that looks through instrs 2019-03-14 01:37:13 +00:00
sub-scalar.ll Fix line-endings. NFCI. 2018-09-20 10:59:08 +00:00
sub-vec.ll
trunc.ll Fix line-endings. NFCI. 2018-09-20 10:59:08 +00:00
undef.ll [x86] don't try to convert add with undef operands to LEA 2018-12-09 14:40:37 +00:00
x32-select-frameIndex.mir Describe stack-id as an enum 2019-06-17 09:13:29 +00:00
x86-legalize-GV.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
x86-legalize-inttoptr.mir Describe stack-id as an enum 2019-06-17 09:13:29 +00:00
x86-legalize-ptrtoint.mir Describe stack-id as an enum 2019-06-17 09:13:29 +00:00
x86-legalize-sdiv.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
x86-legalize-srem.mir Describe stack-id as an enum 2019-06-17 09:13:29 +00:00
x86-legalize-udiv.mir [GlobalIsel][X86] Support G_UDIV/G_UREM/G_SREM 2018-10-08 13:40:34 +00:00
x86-legalize-urem.mir Describe stack-id as an enum 2019-06-17 09:13:29 +00:00
x86-select-frameIndex.mir Describe stack-id as an enum 2019-06-17 09:13:29 +00:00
x86-select-inttoptr.mir Describe stack-id as an enum 2019-06-17 09:13:29 +00:00
x86-select-ptrtoint.mir Describe stack-id as an enum 2019-06-17 09:13:29 +00:00
x86-select-sdiv.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
x86-select-srem.mir Describe stack-id as an enum 2019-06-17 09:13:29 +00:00
x86-select-trap.mir [GlobalIsel][X86] Support for llvm.trap intrinsic 2018-08-31 11:05:13 +00:00
x86-select-udiv.mir Describe stack-id as an enum 2019-06-17 09:13:29 +00:00
x86-select-urem.mir Describe stack-id as an enum 2019-06-17 09:13:29 +00:00
x86_64-fallback.ll GlobalISel: Consolidate load/store legalization 2019-02-05 00:26:12 +00:00
x86_64-irtranslator-struct-return.ll [GlobalISel] Enable CSE in the IRTranslator & legalizer for -O0 with constants only. 2019-04-15 05:04:20 +00:00
x86_64-irtranslator.ll [GlobalIsel][X86] Support G_UDIV/G_UREM/G_SREM 2018-10-08 13:40:34 +00:00
x86_64-legalize-GV.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
x86_64-legalize-fcmp.mir [GlobalIsel][X86] Support for G_FCMP 2018-08-31 09:38:27 +00:00
x86_64-legalize-fptosi.mir [GlobalISel][X86_64] Support for G_FPTOSI 2018-08-31 11:16:58 +00:00
x86_64-legalize-inttoptr.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
x86_64-legalize-ptrtoint.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
x86_64-legalize-sdiv.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
x86_64-legalize-sitofp.mir [GISel]: Change how CSE is enabled by default for each pass 2019-01-24 23:11:25 +00:00
x86_64-legalize-srem.mir [GlobalIsel][X86] Support G_UDIV/G_UREM/G_SREM 2018-10-08 13:40:34 +00:00
x86_64-legalize-udiv.mir [GlobalIsel][X86] Support G_UDIV/G_UREM/G_SREM 2018-10-08 13:40:34 +00:00
x86_64-legalize-urem.mir [GlobalIsel][X86] Support G_UDIV/G_UREM/G_SREM 2018-10-08 13:40:34 +00:00
x86_64-legalize-zext.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
x86_64-select-fcmp.mir [X86] Merge the different SETcc instructions for each condition code into single instructions that store the condition code as an operand. 2019-04-05 19:27:49 +00:00
x86_64-select-fptosi.mir [GlobalISel][X86_64] Support for G_FPTOSI 2018-08-31 11:16:58 +00:00
x86_64-select-frameIndex.mir Describe stack-id as an enum 2019-06-17 09:13:29 +00:00
x86_64-select-inttoptr.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
x86_64-select-ptrtoint.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
x86_64-select-sdiv.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
x86_64-select-sitofp.mir Remove irrelevant references to legacy git repositories from 2019-01-15 16:18:52 +00:00
x86_64-select-srem.mir [GlobalIsel][X86] Support G_UDIV/G_UREM/G_SREM 2018-10-08 13:40:34 +00:00
x86_64-select-udiv.mir [GlobalIsel][X86] Support G_UDIV/G_UREM/G_SREM 2018-10-08 13:40:34 +00:00
x86_64-select-urem.mir [GlobalIsel][X86] Support G_UDIV/G_UREM/G_SREM 2018-10-08 13:40:34 +00:00
x86_64-select-zext.mir [globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC 2018-05-05 21:19:59 +00:00
xor-scalar.ll Fix line-endings. NFCI. 2018-09-20 10:59:08 +00:00