[PATCH] D11503: [INSTCOMBINE][X86][SSE] Replace sign/zero extension intrinsics with native IR

Sanjay Patel spatel at rotateright.com
Sat Jul 25 09:23:22 PDT 2015


spatel added subscribers: ab, probinson, echristo.
spatel added a comment.

LGTM; see inline comments for nits.

But as Paul suggested recently, we should decide how to handle these in general since we have a mishmash of implementations...
Then start the drudge work of fixing the hundreds of intrinsics that we decide are done wrong. :(

Reference:
http://reviews.llvm.org/D10555
https://llvm.org/bugs/show_bug.cgi?id=24125 and related bugs


================
Comment at: lib/Transforms/InstCombine/InstCombineCalls.cpp:208
@@ +207,3 @@
+
+  // Extract a subvector of the first NumElts lanes and sign extend.
+  SmallVector<int, 8> ShuffleMask;
----------------
Remove 'sign' from comment since this is a general extend now?

================
Comment at: lib/Transforms/InstCombine/InstCombineCalls.cpp:215-217
@@ +214,5 @@
+                                          UndefValue::get(SrcTy), ShuffleMask);
+  Value *EX = SignExtend ? Builder.CreateSExt(SV, DstTy)
+                         : Builder.CreateZExt(SV, DstTy);
+  return EX;
+}
----------------
Can fold these 2 lines together; no need for EX temp.


Repository:
  rL LLVM

http://reviews.llvm.org/D11503







More information about the llvm-commits mailing list