aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorPetar Avramovic <Petar.Avramovic@rt-rk.com>2020-02-19 10:06:28 +0100
committerPetar Avramovic <Petar.Avramovic@rt-rk.com>2020-02-19 10:09:52 +0100
commit92c80529ddb3ae147e9e58aed8d68b4aa2ea2379 (patch)
treede73e1f67acd965ce4be00dfc51c3148be207c86 /clang/lib/Frontend/CompilerInvocation.cpp
parentfa6aef44277230adecb541c78a71978172accd5c (diff)
downloadllvm-92c80529ddb3ae147e9e58aed8d68b4aa2ea2379.zip
llvm-92c80529ddb3ae147e9e58aed8d68b4aa2ea2379.tar.gz
llvm-92c80529ddb3ae147e9e58aed8d68b4aa2ea2379.tar.bz2
[MIPS GlobalISel] RegBankSelect G_MERGE_VALUES and G_UNMERGE_VALUES
Consider large operands in G_MERGE_VALUES and G_UNMERGE_VALUES as Ambiguous during regbank selection. Introducing new InstType AmbiguousWithMergeOrUnmerge which will allow us to recognize whether to narrow scalar or use s64:fprb. This change exposed a bug when reusing data from TypeInfoForMF. Thus when Instr is about to get destroyed (using narrow scalar) clear its data in TypeInfoForMF. Internal data is saved based on Instr's address, and it will no longer be valid. Add detailed asserts for InstType and operand size. Generate generic instructions instead of MIPS target instructions during argument lowering and custom legalizer. Select G_UNMERGE_VALUES and G_MERGE_VALUES when proper banks are selected: {s32:gprb, s32:gprb, s64:fprb} for G_UNMERGE_VALUES and {s64:fprb, s32:gprb, s32:gprb} for G_MERGE_VALUES. Update tests. One improvement is when floating point argument in gpr(or two gprs) gets passed to another function through gpr unnecessary fpr-to-gpr moves are no longer generated. Differential Revision: https://reviews.llvm.org/D74623
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions