; NOTE: Assertions have been autogenerated by utils/update_test_checks.py | |
; RUN: opt -S -instcombine < %s | FileCheck %s | |
; TODO: The entire thing should be folded to and i16 %0, 255. | |
define i16 @foo(i16 %x) { | |
; CHECK-LABEL: @foo( | |
; CHECK-NEXT: [[T1:%.*]] = and i16 [[X:%.*]], 255 | |
; CHECK-NEXT: ret i16 [[T1]] | |
; | |
%t1 = and i16 %x, 255 | |
%t2 = zext i16 %t1 to i32 | |
%t3 = icmp ult i32 %t2, 255 | |
%t4 = select i1 %t3, i32 %t2, i32 255 | |
%t5 = trunc i32 %t4 to i16 | |
%t6 = and i16 %t5, 255 | |
ret i16 %t6 | |
} | |