diff options
author | Tim Northover <tnorthover@apple.com> | 2016-08-23 21:01:26 +0000 |
---|---|---|
committer | Tim Northover <tnorthover@apple.com> | 2016-08-23 21:01:26 +0000 |
commit | 6cd4b23a0fc9cc2f24d996148e170b0a538079d7 (patch) | |
tree | f70e16cf6123f81966b6be1c3a163a3b6a98cb11 /llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp | |
parent | b3a0be4d38ab08456aa4406e86d1b6c76581245a (diff) | |
download | llvm-6cd4b23a0fc9cc2f24d996148e170b0a538079d7.zip llvm-6cd4b23a0fc9cc2f24d996148e170b0a538079d7.tar.gz llvm-6cd4b23a0fc9cc2f24d996148e170b0a538079d7.tar.bz2 |
GlobalISel: legalize integer comparisons on AArch64.
Next step is doing both legalizations at the same time! Marvel at GlobalISel's
cunning.
llvm-svn: 279566
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp')
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp b/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp index 9d9f0b3..038c3cc 100644 --- a/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp +++ b/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp @@ -73,6 +73,19 @@ AArch64MachineLegalizer::AArch64MachineLegalizer() { setAction({TargetOpcode::G_FCONSTANT, s16}, WidenScalar); + // Comparisons: we produce a result in s32 with undefined high-bits for + // now. Values being compared can be 32 or 64-bits. + for (auto CmpOp : { G_ICMP }) { + setAction({CmpOp, 0, s32}, Legal); + setAction({CmpOp, 1, s32}, Legal); + setAction({CmpOp, 1, s64}, Legal); + + for (auto Ty : {s1, s8, s16}) { + setAction({CmpOp, 0, Ty}, WidenScalar); + setAction({CmpOp, 1, Ty}, WidenScalar); + } + } + // Control-flow setAction({G_BR, LLT::unsized()}, Legal); setAction({G_BRCOND, s32}, Legal); |