[PATCH] InstCombine: Narrow switch instruction operands using known bits

Akira Hatanaka ahatanak at gmail.com
Wed Oct 8 18:35:43 PDT 2014


This patch adds an inst-combine optimization which narrows the operands of a switch instruction if the upper bits are known to be all 1 or 0.

For example, since the upper 32-bits are all zero in the following switch instruction,

%and = and i64 %a, 4294967295
switch i64 %and, label %sw.default [
  i64 10, label %return
  i64 100, label %sw.bb1
  i64 1001, label %sw.bb2
]

we can turn it into a 32-bit instruction:

switch i32 %and, label %sw.default [
  i32 10, label %return
  i32 100, label %sw.bb1
  i32 1001, label %sw.bb2
]

http://reviews.llvm.org/D5691

Files:
  lib/Transforms/InstCombine/InstructionCombining.cpp
  test/Transforms/InstCombine/narrow-switch.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D5691.14610.patch
Type: text/x-patch
Size: 3446 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141009/63e8ec29/attachment.bin>


More information about the llvm-commits mailing list