[llvm-commits] [llvm] r77194 - in /llvm/trunk: lib/AsmParser/LLParser.cpp lib/VMCore/AsmWriter.cpp test/Analysis/ScalarEvolution/nsw.ll test/Assembler/flags-reversed.ll test/Assembler/flags-signed.ll test/Assembler/flags-unsigned.ll test/Assembler/flags.ll

Dan Gohman gohman at apple.com
Mon Jul 27 09:11:46 PDT 2009


Author: djg
Date: Mon Jul 27 11:11:46 2009
New Revision: 77194

URL: http://llvm.org/viewvc/llvm-project?rev=77194&view=rev
Log:
Change the assembly syntax for nsw, nuw, and exact, putting them
after their associated opcodes rather than before. This makes them
a little easier to read.

Modified:
    llvm/trunk/lib/AsmParser/LLParser.cpp
    llvm/trunk/lib/VMCore/AsmWriter.cpp
    llvm/trunk/test/Analysis/ScalarEvolution/nsw.ll
    llvm/trunk/test/Assembler/flags-reversed.ll
    llvm/trunk/test/Assembler/flags-signed.ll
    llvm/trunk/test/Assembler/flags-unsigned.ll
    llvm/trunk/test/Assembler/flags.ll

Modified: llvm/trunk/lib/AsmParser/LLParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/LLParser.cpp?rev=77194&r1=77193&r2=77194&view=diff

==============================================================================
--- llvm/trunk/lib/AsmParser/LLParser.cpp (original)
+++ llvm/trunk/lib/AsmParser/LLParser.cpp Mon Jul 27 11:11:46 2009
@@ -1954,9 +1954,27 @@
   case lltok::kw_urem:
   case lltok::kw_srem:
   case lltok::kw_frem: {
+    bool NUW = false;
+    bool NSW = false;
+    bool Exact = false;
     unsigned Opc = Lex.getUIntVal();
     Constant *Val0, *Val1;
     Lex.Lex();
+    LocTy ModifierLoc = Lex.getLoc();
+    if (Opc == Instruction::Add ||
+        Opc == Instruction::Sub ||
+        Opc == Instruction::Mul) {
+      if (EatIfPresent(lltok::kw_nuw))
+        NUW = true;
+      if (EatIfPresent(lltok::kw_nsw)) {
+        NSW = true;
+        if (EatIfPresent(lltok::kw_nuw))
+          NUW = true;
+      }
+    } else if (Opc == Instruction::SDiv) {
+      if (EatIfPresent(lltok::kw_exact))
+        Exact = true;
+    }
     if (ParseToken(lltok::lparen, "expected '(' in binary constantexpr") ||
         ParseGlobalTypeAndValue(Val0) ||
         ParseToken(lltok::comma, "expected comma in binary constantexpr") ||
@@ -1965,10 +1983,25 @@
       return true;
     if (Val0->getType() != Val1->getType())
       return Error(ID.Loc, "operands of constexpr must have same type");
+    if (!Val0->getType()->isIntOrIntVector()) {
+      if (NUW)
+        return Error(ModifierLoc, "nuw only applies to integer operations");
+      if (NSW)
+        return Error(ModifierLoc, "nsw only applies to integer operations");
+    }
+    // API compatibility: Accept either integer or floating-point types with
+    // add, sub, and mul.
     if (!Val0->getType()->isIntOrIntVector() &&
         !Val0->getType()->isFPOrFPVector())
       return Error(ID.Loc,"constexpr requires integer, fp, or vector operands");
-    ID.ConstantVal = Context.getConstantExpr(Opc, Val0, Val1);
+    Constant *C = Context.getConstantExpr(Opc, Val0, Val1);
+    if (NUW)
+      cast<OverflowingBinaryOperator>(C)->setHasNoUnsignedOverflow(true);
+    if (NSW)
+      cast<OverflowingBinaryOperator>(C)->setHasNoSignedOverflow(true);
+    if (Exact)
+      cast<SDivOperator>(C)->setIsExact(true);
+    ID.ConstantVal = C;
     ID.Kind = ValID::t_Constant;
     return false;
   }
@@ -2055,49 +2088,6 @@
     ID.Kind = ValID::t_Constant;
     return false;
   }
-  case lltok::kw_nuw: {
-    Lex.Lex();
-    bool AlsoSigned = EatIfPresent(lltok::kw_nsw);
-    if (Lex.getKind() != lltok::kw_add &&
-        Lex.getKind() != lltok::kw_sub &&
-        Lex.getKind() != lltok::kw_mul)
-      return TokError("expected 'add', 'sub', or 'mul'");
-    bool Result = LLParser::ParseValID(ID);
-    if (!Result) {
-      cast<OverflowingBinaryOperator>(ID.ConstantVal)
-        ->setHasNoUnsignedOverflow(true);
-      if (AlsoSigned)
-        cast<OverflowingBinaryOperator>(ID.ConstantVal)
-          ->setHasNoSignedOverflow(true);
-    }
-    return Result;
-  }
-  case lltok::kw_nsw: {
-    Lex.Lex();
-    bool AlsoUnsigned = EatIfPresent(lltok::kw_nuw);
-    if (Lex.getKind() != lltok::kw_add &&
-        Lex.getKind() != lltok::kw_sub &&
-        Lex.getKind() != lltok::kw_mul)
-      return TokError("expected 'add', 'sub', or 'mul'");
-    bool Result = LLParser::ParseValID(ID);
-    if (!Result) {
-      cast<OverflowingBinaryOperator>(ID.ConstantVal)
-        ->setHasNoSignedOverflow(true);
-      if (AlsoUnsigned)
-        cast<OverflowingBinaryOperator>(ID.ConstantVal)
-          ->setHasNoUnsignedOverflow(true);
-    }
-    return Result;
-  }
-  case lltok::kw_exact: {
-    Lex.Lex();
-    if (Lex.getKind() != lltok::kw_sdiv)
-      return TokError("expected 'sdiv'");
-    bool Result = LLParser::ParseValID(ID);
-    if (!Result)
-      cast<SDivOperator>(ID.ConstantVal)->setIsExact(true);
-    return Result;
-  }
   }
   
   Lex.Lex();
@@ -2563,15 +2553,49 @@
   // Binary Operators.
   case lltok::kw_add:
   case lltok::kw_sub:
-  case lltok::kw_mul:
+  case lltok::kw_mul: {
+    bool NUW = false;
+    bool NSW = false;
+    LocTy ModifierLoc = Lex.getLoc();
+    if (EatIfPresent(lltok::kw_nuw))
+      NUW = true;
+    if (EatIfPresent(lltok::kw_nsw)) {
+      NSW = true;
+      if (EatIfPresent(lltok::kw_nuw))
+        NUW = true;
+    }
     // API compatibility: Accept either integer or floating-point types.
-    return ParseArithmetic(Inst, PFS, KeywordVal, 0);
+    bool Result = ParseArithmetic(Inst, PFS, KeywordVal, 0);
+    if (!Result) {
+      if (!Inst->getType()->isIntOrIntVector()) {
+        if (NUW)
+          return Error(ModifierLoc, "nuw only applies to integer operations");
+        if (NSW)
+          return Error(ModifierLoc, "nsw only applies to integer operations");
+      }
+      if (NUW)
+        cast<OverflowingBinaryOperator>(Inst)->setHasNoUnsignedOverflow(true);
+      if (NSW)
+        cast<OverflowingBinaryOperator>(Inst)->setHasNoSignedOverflow(true);
+    }
+    return Result;
+  }
   case lltok::kw_fadd:
   case lltok::kw_fsub:
   case lltok::kw_fmul:    return ParseArithmetic(Inst, PFS, KeywordVal, 2);
 
+  case lltok::kw_sdiv: {
+    bool Exact = false;
+    if (EatIfPresent(lltok::kw_exact))
+      Exact = true;
+    bool Result = ParseArithmetic(Inst, PFS, KeywordVal, 1);
+    if (!Result)
+      if (Exact)
+        cast<SDivOperator>(Inst)->setIsExact(true);
+    return Result;
+  }
+
   case lltok::kw_udiv:
-  case lltok::kw_sdiv:
   case lltok::kw_urem:
   case lltok::kw_srem:   return ParseArithmetic(Inst, PFS, KeywordVal, 1);
   case lltok::kw_fdiv:
@@ -2619,50 +2643,6 @@
       return ParseStore(Inst, PFS, true);
     else
       return TokError("expected 'load' or 'store'");
-  case lltok::kw_nuw: {
-    bool AlsoSigned = EatIfPresent(lltok::kw_nsw);
-    if (Lex.getKind() == lltok::kw_add ||
-        Lex.getKind() == lltok::kw_sub ||
-        Lex.getKind() == lltok::kw_mul) {
-      Lex.Lex();
-      KeywordVal = Lex.getUIntVal();
-      bool Result = ParseArithmetic(Inst, PFS, KeywordVal, 0);
-      if (!Result) {
-        cast<OverflowingBinaryOperator>(Inst)->setHasNoUnsignedOverflow(true);
-        if (AlsoSigned)
-          cast<OverflowingBinaryOperator>(Inst)->setHasNoSignedOverflow(true);
-      }
-      return Result;
-    }
-    return TokError("expected 'add', 'sub', or 'mul'");
-  }
-  case lltok::kw_nsw: {
-    bool AlsoUnsigned = EatIfPresent(lltok::kw_nuw);
-    if (Lex.getKind() == lltok::kw_add ||
-        Lex.getKind() == lltok::kw_sub ||
-        Lex.getKind() == lltok::kw_mul) {
-      Lex.Lex();
-      KeywordVal = Lex.getUIntVal();
-      bool Result = ParseArithmetic(Inst, PFS, KeywordVal, 1);
-      if (!Result) {
-        cast<OverflowingBinaryOperator>(Inst)->setHasNoSignedOverflow(true);
-        if (AlsoUnsigned)
-          cast<OverflowingBinaryOperator>(Inst)->setHasNoUnsignedOverflow(true);
-      }
-      return Result;
-    }
-    return TokError("expected 'add', 'sub', or 'mul'");
-  }
-  case lltok::kw_exact:
-    if (Lex.getKind() == lltok::kw_sdiv) {
-      Lex.Lex();
-      KeywordVal = Lex.getUIntVal();
-      bool Result = ParseArithmetic(Inst, PFS, KeywordVal, 1);
-      if (!Result)
-        cast<SDivOperator>(Inst)->setIsExact(true);
-      return Result;
-    }
-    return TokError("expected 'udiv'");
   case lltok::kw_getresult:     return ParseGetResult(Inst, PFS);
   case lltok::kw_getelementptr: return ParseGetElementPtr(Inst, PFS);
   case lltok::kw_extractvalue:  return ParseExtractValue(Inst, PFS);

Modified: llvm/trunk/lib/VMCore/AsmWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/AsmWriter.cpp?rev=77194&r1=77193&r2=77194&view=diff

==============================================================================
--- llvm/trunk/lib/VMCore/AsmWriter.cpp (original)
+++ llvm/trunk/lib/VMCore/AsmWriter.cpp Mon Jul 27 11:11:46 2009
@@ -848,12 +848,12 @@
   if (const OverflowingBinaryOperator *OBO =
         dyn_cast<OverflowingBinaryOperator>(U)) {
     if (OBO->hasNoUnsignedOverflow())
-      Out << "nuw ";
+      Out << " nuw";
     if (OBO->hasNoSignedOverflow())
-      Out << "nsw ";
+      Out << " nsw";
   } else if (const SDivOperator *Div = dyn_cast<SDivOperator>(U)) {
     if (Div->isExact())
-      Out << "exact ";
+      Out << " exact";
   }
 }
 
@@ -1061,8 +1061,8 @@
   }
 
   if (const ConstantExpr *CE = dyn_cast<ConstantExpr>(CV)) {
-    WriteOptimizationInfo(Out, CE);
     Out << CE->getOpcodeName();
+    WriteOptimizationInfo(Out, CE);
     if (CE->isCompare())
       Out << ' ' << getPredicateText(CE->getPredicate());
     Out << " (";
@@ -1694,12 +1694,12 @@
     Out << "tail ";
   }
 
-  // Print out optimization information.
-  WriteOptimizationInfo(Out, &I);
-
   // Print out the opcode...
   Out << I.getOpcodeName();
 
+  // Print out optimization information.
+  WriteOptimizationInfo(Out, &I);
+
   // Print out the compare instruction predicates
   if (const CmpInst *CI = dyn_cast<CmpInst>(&I))
     Out << ' ' << getPredicateText(CI->getPredicate());

Modified: llvm/trunk/test/Analysis/ScalarEvolution/nsw.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/ScalarEvolution/nsw.ll?rev=77194&r1=77193&r2=77194&view=diff

==============================================================================
--- llvm/trunk/test/Analysis/ScalarEvolution/nsw.ll (original)
+++ llvm/trunk/test/Analysis/ScalarEvolution/nsw.ll Mon Jul 27 11:11:46 2009
@@ -22,7 +22,7 @@
 	%tmp6 = sext i32 %i.01 to i64		; <i64> [#uses=1]
 	%tmp7 = getelementptr double* %p, i64 %tmp6		; <double*> [#uses=1]
 	store double %tmp5, double* %tmp7, align 8
-	%tmp8 = nsw add i32 %i.01, 1		; <i32> [#uses=2]
+	%tmp8 = add nsw i32 %i.01, 1		; <i32> [#uses=2]
 	br label %bb1
 
 bb1:		; preds = %bb

Modified: llvm/trunk/test/Assembler/flags-reversed.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/flags-reversed.ll?rev=77194&r1=77193&r2=77194&view=diff

==============================================================================
--- llvm/trunk/test/Assembler/flags-reversed.ll (original)
+++ llvm/trunk/test/Assembler/flags-reversed.ll Mon Jul 27 11:11:46 2009
@@ -3,16 +3,16 @@
 @addr = external global i64
 
 define i64 @add_both_reversed_ce() {
-; CHECK: ret i64 nuw nsw add (i64 ptrtoint (i64* @addr to i64), i64 91)
-	ret i64 nsw nuw add (i64 ptrtoint (i64* @addr to i64), i64 91)
+; CHECK: ret i64 add nuw nsw (i64 ptrtoint (i64* @addr to i64), i64 91)
+	ret i64 add nsw nuw (i64 ptrtoint (i64* @addr to i64), i64 91)
 }
 
 define i64 @sub_both_reversed_ce() {
-; CHECK: ret i64 nuw nsw sub (i64 ptrtoint (i64* @addr to i64), i64 91)
-	ret i64 nsw nuw sub (i64 ptrtoint (i64* @addr to i64), i64 91)
+; CHECK: ret i64 sub nuw nsw (i64 ptrtoint (i64* @addr to i64), i64 91)
+	ret i64 sub nsw nuw (i64 ptrtoint (i64* @addr to i64), i64 91)
 }
 
 define i64 @mul_both_reversed_ce() {
-; CHECK: ret i64 nuw nsw mul (i64 ptrtoint (i64* @addr to i64), i64 91)
-	ret i64 nsw nuw mul (i64 ptrtoint (i64* @addr to i64), i64 91)
+; CHECK: ret i64 mul nuw nsw (i64 ptrtoint (i64* @addr to i64), i64 91)
+	ret i64 mul nsw nuw (i64 ptrtoint (i64* @addr to i64), i64 91)
 }

Modified: llvm/trunk/test/Assembler/flags-signed.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/flags-signed.ll?rev=77194&r1=77193&r2=77194&view=diff

==============================================================================
--- llvm/trunk/test/Assembler/flags-signed.ll (original)
+++ llvm/trunk/test/Assembler/flags-signed.ll Mon Jul 27 11:11:46 2009
@@ -3,16 +3,16 @@
 @addr = external global i64
 
 define i64 @add_signed_ce() {
-; CHECK: ret i64 nsw add (i64 ptrtoint (i64* @addr to i64), i64 91)
-	ret i64 nsw add (i64 ptrtoint (i64* @addr to i64), i64 91)
+; CHECK: ret i64 add nsw (i64 ptrtoint (i64* @addr to i64), i64 91)
+	ret i64 add nsw (i64 ptrtoint (i64* @addr to i64), i64 91)
 }
 
 define i64 @sub_signed_ce() {
-; CHECK: ret i64 nsw sub (i64 ptrtoint (i64* @addr to i64), i64 91)
-	ret i64 nsw sub (i64 ptrtoint (i64* @addr to i64), i64 91)
+; CHECK: ret i64 sub nsw (i64 ptrtoint (i64* @addr to i64), i64 91)
+	ret i64 sub nsw (i64 ptrtoint (i64* @addr to i64), i64 91)
 }
 
 define i64 @mul_signed_ce() {
-; CHECK: ret i64 nsw mul (i64 ptrtoint (i64* @addr to i64), i64 91)
-	ret i64 nsw mul (i64 ptrtoint (i64* @addr to i64), i64 91)
+; CHECK: ret i64 mul nsw (i64 ptrtoint (i64* @addr to i64), i64 91)
+	ret i64 mul nsw (i64 ptrtoint (i64* @addr to i64), i64 91)
 }

Modified: llvm/trunk/test/Assembler/flags-unsigned.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/flags-unsigned.ll?rev=77194&r1=77193&r2=77194&view=diff

==============================================================================
--- llvm/trunk/test/Assembler/flags-unsigned.ll (original)
+++ llvm/trunk/test/Assembler/flags-unsigned.ll Mon Jul 27 11:11:46 2009
@@ -3,16 +3,16 @@
 @addr = external global i64
 
 define i64 @add_unsigned_ce() {
-; CHECK: ret i64 nuw add (i64 ptrtoint (i64* @addr to i64), i64 91)
-	ret i64 nuw add (i64 ptrtoint (i64* @addr to i64), i64 91)
+; CHECK: ret i64 add nuw (i64 ptrtoint (i64* @addr to i64), i64 91)
+	ret i64 add nuw (i64 ptrtoint (i64* @addr to i64), i64 91)
 }
 
 define i64 @sub_unsigned_ce() {
-; CHECK: ret i64 nuw sub (i64 ptrtoint (i64* @addr to i64), i64 91)
-	ret i64 nuw sub (i64 ptrtoint (i64* @addr to i64), i64 91)
+; CHECK: ret i64 sub nuw (i64 ptrtoint (i64* @addr to i64), i64 91)
+	ret i64 sub nuw (i64 ptrtoint (i64* @addr to i64), i64 91)
 }
 
 define i64 @mul_unsigned_ce() {
-; CHECK: ret i64 nuw mul (i64 ptrtoint (i64* @addr to i64), i64 91)
-	ret i64 nuw mul (i64 ptrtoint (i64* @addr to i64), i64 91)
+; CHECK: ret i64 mul nuw (i64 ptrtoint (i64* @addr to i64), i64 91)
+	ret i64 mul nuw (i64 ptrtoint (i64* @addr to i64), i64 91)
 }

Modified: llvm/trunk/test/Assembler/flags.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/flags.ll?rev=77194&r1=77193&r2=77194&view=diff

==============================================================================
--- llvm/trunk/test/Assembler/flags.ll (original)
+++ llvm/trunk/test/Assembler/flags.ll Mon Jul 27 11:11:46 2009
@@ -3,38 +3,38 @@
 @addr = external global i64
 
 define i64 @add_unsigned(i64 %x, i64 %y) {
-; CHECK: %z = nuw add i64 %x, %y
-	%z = nuw add i64 %x, %y
+; CHECK: %z = add nuw i64 %x, %y
+	%z = add nuw i64 %x, %y
 	ret i64 %z
 }
 
 define i64 @sub_unsigned(i64 %x, i64 %y) {
-; CHECK: %z = nuw sub i64 %x, %y
-	%z = nuw sub i64 %x, %y
+; CHECK: %z = sub nuw i64 %x, %y
+	%z = sub nuw i64 %x, %y
 	ret i64 %z
 }
 
 define i64 @mul_unsigned(i64 %x, i64 %y) {
-; CHECK: %z = nuw mul i64 %x, %y
-	%z = nuw mul i64 %x, %y
+; CHECK: %z = mul nuw i64 %x, %y
+	%z = mul nuw i64 %x, %y
 	ret i64 %z
 }
 
 define i64 @add_signed(i64 %x, i64 %y) {
-; CHECK: %z = nsw add i64 %x, %y
-	%z = nsw add i64 %x, %y
+; CHECK: %z = add nsw i64 %x, %y
+	%z = add nsw i64 %x, %y
 	ret i64 %z
 }
 
 define i64 @sub_signed(i64 %x, i64 %y) {
-; CHECK: %z = nsw sub i64 %x, %y
-	%z = nsw sub i64 %x, %y
+; CHECK: %z = sub nsw i64 %x, %y
+	%z = sub nsw i64 %x, %y
 	ret i64 %z
 }
 
 define i64 @mul_signed(i64 %x, i64 %y) {
-; CHECK: %z = nsw mul i64 %x, %y
-	%z = nsw mul i64 %x, %y
+; CHECK: %z = mul nsw i64 %x, %y
+	%z = mul nsw i64 %x, %y
 	ret i64 %z
 }
 
@@ -57,44 +57,44 @@
 }
 
 define i64 @add_both(i64 %x, i64 %y) {
-; CHECK: %z = nuw nsw add i64 %x, %y
-	%z = nuw nsw add i64 %x, %y
+; CHECK: %z = add nuw nsw i64 %x, %y
+	%z = add nuw nsw i64 %x, %y
 	ret i64 %z
 }
 
 define i64 @sub_both(i64 %x, i64 %y) {
-; CHECK: %z = nuw nsw sub i64 %x, %y
-	%z = nuw nsw sub i64 %x, %y
+; CHECK: %z = sub nuw nsw i64 %x, %y
+	%z = sub nuw nsw i64 %x, %y
 	ret i64 %z
 }
 
 define i64 @mul_both(i64 %x, i64 %y) {
-; CHECK: %z = nuw nsw mul i64 %x, %y
-	%z = nuw nsw mul i64 %x, %y
+; CHECK: %z = mul nuw nsw i64 %x, %y
+	%z = mul nuw nsw i64 %x, %y
 	ret i64 %z
 }
 
 define i64 @add_both_reversed(i64 %x, i64 %y) {
-; CHECK: %z = nuw nsw add i64 %x, %y
-	%z = nsw nuw add i64 %x, %y
+; CHECK: %z = add nuw nsw i64 %x, %y
+	%z = add nsw nuw i64 %x, %y
 	ret i64 %z
 }
 
 define i64 @sub_both_reversed(i64 %x, i64 %y) {
-; CHECK: %z = nuw nsw sub i64 %x, %y
-	%z = nsw nuw sub i64 %x, %y
+; CHECK: %z = sub nuw nsw i64 %x, %y
+	%z = sub nsw nuw i64 %x, %y
 	ret i64 %z
 }
 
 define i64 @mul_both_reversed(i64 %x, i64 %y) {
-; CHECK: %z = nuw nsw mul i64 %x, %y
-	%z = nsw nuw mul i64 %x, %y
+; CHECK: %z = mul nuw nsw i64 %x, %y
+	%z = mul nsw nuw i64 %x, %y
 	ret i64 %z
 }
 
 define i64 @sdiv_exact(i64 %x, i64 %y) {
-; CHECK: %z = exact sdiv i64 %x, %y
-	%z = exact sdiv i64 %x, %y
+; CHECK: %z = sdiv exact i64 %x, %y
+	%z = sdiv exact i64 %x, %y
 	ret i64 %z
 }
 
@@ -105,21 +105,21 @@
 }
 
 define i64 @add_both_ce() {
-; CHECK: ret i64 nuw nsw add (i64 ptrtoint (i64* @addr to i64), i64 91)
-	ret i64 nsw nuw add (i64 ptrtoint (i64* @addr to i64), i64 91)
+; CHECK: ret i64 add nuw nsw (i64 ptrtoint (i64* @addr to i64), i64 91)
+	ret i64 add nsw nuw (i64 ptrtoint (i64* @addr to i64), i64 91)
 }
 
 define i64 @sub_both_ce() {
-; CHECK: ret i64 nuw nsw sub (i64 ptrtoint (i64* @addr to i64), i64 91)
-	ret i64 nsw nuw sub (i64 ptrtoint (i64* @addr to i64), i64 91)
+; CHECK: ret i64 sub nuw nsw (i64 ptrtoint (i64* @addr to i64), i64 91)
+	ret i64 sub nsw nuw (i64 ptrtoint (i64* @addr to i64), i64 91)
 }
 
 define i64 @mul_both_ce() {
-; CHECK: ret i64 nuw nsw mul (i64 ptrtoint (i64* @addr to i64), i64 91)
-	ret i64 nuw nsw mul (i64 ptrtoint (i64* @addr to i64), i64 91)
+; CHECK: ret i64 mul nuw nsw (i64 ptrtoint (i64* @addr to i64), i64 91)
+	ret i64 mul nuw nsw (i64 ptrtoint (i64* @addr to i64), i64 91)
 }
 
 define i64 @sdiv_exact_ce() {
-; CHECK: ret i64 exact sdiv (i64 ptrtoint (i64* @addr to i64), i64 91)
-	ret i64 exact sdiv (i64 ptrtoint (i64* @addr to i64), i64 91)
+; CHECK: ret i64 sdiv exact (i64 ptrtoint (i64* @addr to i64), i64 91)
+	ret i64 sdiv exact (i64 ptrtoint (i64* @addr to i64), i64 91)
 }





More information about the llvm-commits mailing list