bruno added inline comments.

================
Comment at: lib/CodeGen/CGExprScalar.cpp:1042
+    }
+
+    assert(SrcElementTy->isFloatingPointTy() &&
----------------
What happens if the SrcElementTy is float and DstElementTy isn't? Seems like it 
will hit the assertion below.


================
Comment at: lib/Sema/SemaExpr.cpp:7511
+      // If this is a compound assignment, allow converting the RHS to the type
+      // of the LHS.
+      if (IsCompAssign && isVector(LHSType, Context.HalfTy)) {
----------------
Since it seems that you're always doing the same conversion (the only variable 
input here is the number of elements), can you update the comment to mention 
the exact conversion?


================
Comment at: lib/Sema/SemaExpr.cpp:8072
+/// Convert E, which is a vector, to a vector that has a different element
+/// type.
+static ExprResult convertVector(Expr *E, QualType ElementType, Sema &S) {
----------------
What about `Convert vector E to a vector with the same number of elements but 
different element type`?


================
Comment at: lib/Sema/SemaExpr.cpp:11316
+// This helper function promotes a binary operator's operands (which are of a
+// half vector type) to a vector of floats and then truncates the result to
+// a vector of either half or short.
----------------
`which are of a half vector type` -> should be there an assertion below to make 
sure?


================
Comment at: lib/Sema/SemaExpr.cpp:11329
+  QualType BinOpResTy = RHS.get()->getType();
+  if (isVector(ResultTy, Context.ShortTy))
+    BinOpResTy = S.GetSignedVectorType(BinOpResTy);
----------------
Can you add a comment explaining that a) this conversion from float -> int and 
b) it's needed in case the original binop is a comparison? 


================
Comment at: lib/Sema/SemaExpr.cpp:11537
+  // Some of the binary operations require promoting operands of half vector
+  // and truncating the result. For now, we do this only when HalfArgsAndReturn
+  // is set (that is, when the target is arm or arm64).
----------------
What about `of half vector and truncating the result` to `of half vector to 
float and truncating the result back to half`


================
Comment at: lib/Sema/SemaExpr.cpp:11568
   
-  if (CompResultTy.isNull())
+  if (CompResultTy.isNull()) {
+    if (ConvertHalfVec)
----------------
Please add a comment here explaining that this path only happens when it's a 
compound assignment.


================
Comment at: lib/Sema/SemaExpr.cpp:11978
+    // truncating the result. For now, we do this only when HalfArgsAndReturns
+    // is set (that is, when the target is arm or arm64).
+    ConvertHalfVec =
----------------
This same logic is used elsewhere in the patch, perhaps factor it out into a 
static function?


https://reviews.llvm.org/D32520



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to