mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 02:52:53 +02:00
[InstSimplify] Add additional abs intrinsic icmp tests (NFC)
While abs >= 0 already folds, some variations thereon don't.
This commit is contained in:
parent
5901f3abc5
commit
fe50645fc5
@ -1,6 +1,7 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -instsimplify -S | FileCheck %s
|
||||
|
||||
declare i8 @llvm.abs.i8(i8, i1)
|
||||
declare i32 @llvm.abs.i32(i32, i1)
|
||||
declare <3 x i82> @llvm.abs.v3i82(<3 x i82>, i1)
|
||||
declare <4 x i32> @llvm.abs.v4i32(<4 x i32>, i1)
|
||||
@ -182,3 +183,25 @@ define <4 x i1> @abs_known_not_int_min_vec(<4 x i32> %x) {
|
||||
ret <4 x i1> %c2
|
||||
}
|
||||
|
||||
; If it's >= 0 it should be >= -1 as well.
|
||||
define i1 @abs_nsw_sge_neg(i32 %x) {
|
||||
; CHECK-LABEL: @abs_nsw_sge_neg(
|
||||
; CHECK-NEXT: [[ABS:%.*]] = call i32 @llvm.abs.i32(i32 [[X:%.*]], i1 true)
|
||||
; CHECK-NEXT: [[C:%.*]] = icmp sge i32 [[ABS]], -1
|
||||
; CHECK-NEXT: ret i1 [[C]]
|
||||
;
|
||||
%abs = call i32 @llvm.abs.i32(i32 %x, i1 true)
|
||||
%c = icmp sge i32 %abs, -1
|
||||
ret i1 %c
|
||||
}
|
||||
|
||||
define i1 @abs_ule_int_min(i8 %x) {
|
||||
; CHECK-LABEL: @abs_ule_int_min(
|
||||
; CHECK-NEXT: [[ABS:%.*]] = call i8 @llvm.abs.i8(i8 [[X:%.*]], i1 false)
|
||||
; CHECK-NEXT: [[C:%.*]] = icmp ule i8 [[ABS]], -128
|
||||
; CHECK-NEXT: ret i1 [[C]]
|
||||
;
|
||||
%abs = call i8 @llvm.abs.i8(i8 %x, i1 false)
|
||||
%c = icmp ule i8 %abs, 128
|
||||
ret i1 %c
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user