You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.1 KiB
48 lines
1.1 KiB
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
|
; RUN: opt -S -instcombine < %s | FileCheck %s
|
|
|
|
declare i8 @llvm.umin.i8(i8, i8)
|
|
declare i8 @llvm.umax.i8(i8, i8)
|
|
declare i8 @llvm.smin.i8(i8, i8)
|
|
declare i8 @llvm.smax.i8(i8, i8)
|
|
|
|
define i8 @umin_known_bits(i8 %x, i8 %y) {
|
|
; CHECK-LABEL: @umin_known_bits(
|
|
; CHECK-NEXT: ret i8 0
|
|
;
|
|
%x2 = and i8 %x, 127
|
|
%m = call i8 @llvm.umin.i8(i8 %x2, i8 %y)
|
|
%r = and i8 %m, -128
|
|
ret i8 %r
|
|
}
|
|
|
|
define i8 @umax_known_bits(i8 %x, i8 %y) {
|
|
; CHECK-LABEL: @umax_known_bits(
|
|
; CHECK-NEXT: ret i8 -128
|
|
;
|
|
%x2 = or i8 %x, -128
|
|
%m = call i8 @llvm.umax.i8(i8 %x2, i8 %y)
|
|
%r = and i8 %m, -128
|
|
ret i8 %r
|
|
}
|
|
|
|
define i8 @smin_known_bits(i8 %x, i8 %y) {
|
|
; CHECK-LABEL: @smin_known_bits(
|
|
; CHECK-NEXT: ret i8 -128
|
|
;
|
|
%x2 = or i8 %x, -128
|
|
%m = call i8 @llvm.smin.i8(i8 %x2, i8 %y)
|
|
%r = and i8 %m, -128
|
|
ret i8 %r
|
|
}
|
|
|
|
define i8 @smax_known_bits(i8 %x, i8 %y) {
|
|
; CHECK-LABEL: @smax_known_bits(
|
|
; CHECK-NEXT: ret i8 0
|
|
;
|
|
%x2 = and i8 %x, 127
|
|
%m = call i8 @llvm.smax.i8(i8 %x2, i8 %y)
|
|
%r = and i8 %m, -128
|
|
ret i8 %r
|
|
}
|