GlobalISel: mark overflow bit of overflow ops legal.
authorTim Northover <tnorthover@apple.com>
Thu, 25 Aug 2016 17:37:41 +0000 (17:37 +0000)
committerTim Northover <tnorthover@apple.com>
Thu, 25 Aug 2016 17:37:41 +0000 (17:37 +0000)
It's expected this will map to NZCV register class and be properly selectable.

llvm-svn: 279761

llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp

index 4e533dd..d8f72a9 100644 (file)
@@ -47,10 +47,13 @@ AArch64MachineLegalizer::AArch64MachineLegalizer() {
     for (auto Ty : {s32, s64})
       setAction({BinOp, Ty}, Legal);
 
-  for (auto Op : { G_UADDE, G_USUBE, G_SADDO, G_SSUBO, G_SMULO, G_UMULO })
+  for (auto Op : { G_UADDE, G_USUBE, G_SADDO, G_SSUBO, G_SMULO, G_UMULO }) {
     for (auto Ty : { s32, s64 })
       setAction({Op, Ty}, Legal);
 
+    setAction({Op, 1, s1}, Legal);
+  }
+
   for (auto BinOp : {G_FADD, G_FSUB, G_FMUL, G_FDIV})
     for (auto Ty : {s32, s64})
       setAction({BinOp, Ty}, Legal);