OSDN Git Service

[ARM] GlobalISel: Purge G_SEQUENCE
authorDiana Picus <diana.picus@linaro.org>
Wed, 7 Jun 2017 12:35:05 +0000 (12:35 +0000)
committerDiana Picus <diana.picus@linaro.org>
Wed, 7 Jun 2017 12:35:05 +0000 (12:35 +0000)
commitf6257e92c06d6dc59fbe28b247456006861fdb1c
tree62afce847af833026b63ce9cd0db1a463dd120fb
parent3204344f223b6cd8c18c8b5b1ef5b0d280fac468
[ARM] GlobalISel: Purge G_SEQUENCE

According to the commit message from r296921, G_MERGE_VALUES and
G_INSERT are to be preferred over G_SEQUENCE. Therefore, stop generating
G_SEQUENCE in the ARM backend and remove the code dealing with it.

This boils down to the code breaking up double values for the soft float
calling convention. Use G_MERGE_VALUES + G_UNMERGE_VALUES instead of
G_SEQUENCE + G_EXTRACT for it. This maps very nicely to VMOVDRR +
VMOVRRD and simplifies the code in the instruction selector.

There's one occurence of G_SEQUENCE left in arm-irtranslator.ll, but
that is part of the target-independent code for translating constant
structs. Therefore, it is beyond the scope of this commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304902 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/ARMCallLowering.cpp
lib/Target/ARM/ARMInstructionSelector.cpp
lib/Target/ARM/ARMRegisterBankInfo.cpp
test/CodeGen/ARM/GlobalISel/arm-instruction-select.mir
test/CodeGen/ARM/GlobalISel/arm-irtranslator.ll
test/CodeGen/ARM/GlobalISel/arm-isel.ll
test/CodeGen/ARM/GlobalISel/arm-legalize-fp.mir
test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir