1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 03:23:01 +02:00
llvm-mirror/lib/Transforms
Sanjay Patel e7f59bf4cc [InstCombine] sink sext after ashr
Narrow ops are better for bit-tracking, and in the case of vectors,
may enable better codegen.

As the trunc test shows, this can allow follow-on simplifications.

There's a block of code in visitTrunc that deals with shifted ops
with FIXME comments. It may be possible to remove some of that now,
but I want to make sure there are no problems with this step first.

http://rise4fun.com/Alive/Y3a

Name: hoist_ashr_ahead_of_sext_1
  %s = sext i8 %x to i32
  %r = ashr i32 %s, 3  ; shift value is < than source bit width
  =>
  %a = ashr i8 %x, 3
  %r = sext i8 %a to i32
  
Name: hoist_ashr_ahead_of_sext_2
  %s = sext i8 %x to i32
  %r = ashr i32 %s, 8  ; shift value is >= than source bit width
  =>
  %a = ashr i8 %x, 7   ; so clamp this shift value
  %r = sext i8 %a to i32
  
Name: junc_the_trunc  
  %a = sext i16 %v to i32
  %s = ashr i32 %a, 18
  %t = trunc i32 %s to i16
  =>
  %t = ashr i16 %v, 15
llvm-svn: 310942
2017-08-15 18:25:52 +00:00
..
Coroutines Remove inline keyword from inline classof methods 2017-06-29 19:35:17 +00:00
Hello
InstCombine [InstCombine] sink sext after ashr 2017-08-15 18:25:52 +00:00
Instrumentation Add missing dependency in ICP. (NFC) 2017-08-14 23:25:21 +00:00
IPO Add strictfp attribute to prevent unwanted optimizations of libm calls 2017-08-14 21:15:13 +00:00
ObjCARC Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
Scalar [Dominators] Include infinite loops in PostDominatorTree 2017-08-15 18:14:57 +00:00
Utils [LV] Minor savings to Sink casts to unravel first order recurrence 2017-08-15 08:32:59 +00:00
Vectorize Fix -Wunused-lambda-capture for Release build. 2017-08-15 17:39:35 +00:00
CMakeLists.txt
LLVMBuild.txt