rjmccall added a comment.

Just a few comment suggestions, but functionally LGTM.


================
Comment at: lib/CodeGen/CGBuiltin.cpp:246
@@ -244,1 +245,3 @@
+    // On little-Endian, high-double will be in low part of i128.
+    // Therefore, on big-Endian we shift high part to low part.
     Width >>= 1;
----------------
Hmm, let's merge these the old and new comments a bit:

We want the sign bit of the higher-order double.  The bitcast we just
did works as if the double-double was stored to memory and then
read as an i128.  The "store" will put the higher-order double in the
lower address in both little- and big-Endian modes, but the "load"
will treat those bits as a different part of the i128: the low bits in
little-Endian, the high bits in big-Endian.  Therefore, on big-Endian
we need to shift the high bits down to the low before truncating.

================
Comment at: lib/CodeGen/CGBuiltin.cpp:252
@@ +251,3 @@
+    } 
+    // After we have high-dobule in the low part of i128
+    // we need to truncate it to extract the sign.
----------------
Typo: dobule.

Also, we're not quite extracting the sign yet; we're truncating as a way to 
extract the higher-order double, which we'll extract the sign from in a second.


Repository:
  rL LLVM

http://reviews.llvm.org/D14149



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

Reply via email to