blob: 4079577f6ca75a4d7f98d3b36793e348f3fafb36 [file] [log] [blame]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -instcombine -S < %s | FileCheck %s
define i1 @ugt_vscale64_x_32() vscale_range(0,16) {
; CHECK-LABEL: @ugt_vscale64_x_32(
; CHECK-NEXT: entry:
; CHECK-NEXT: ret i1 false
;
entry:
%vscale = call i64 @llvm.vscale.i64()
%num_els = shl i64 %vscale, 5
%res = icmp ugt i64 %num_els, 1024
ret i1 %res
}
define i1 @ugt_vscale64_x_31() vscale_range(0,16) {
; CHECK-LABEL: @ugt_vscale64_x_31(
; CHECK-NEXT: entry:
; CHECK-NEXT: ret i1 false
;
entry:
%vscale = call i64 @llvm.vscale.i64()
%num_els = mul i64 %vscale, 31
%res = icmp ugt i64 %num_els, 1024
ret i1 %res
}
define i1 @ugt_vscale16_x_32() vscale_range(0,16) {
; CHECK-LABEL: @ugt_vscale16_x_32(
; CHECK-NEXT: entry:
; CHECK-NEXT: ret i1 false
;
entry:
%vscale = call i16 @llvm.vscale.i16()
%num_els = shl i16 %vscale, 5
%res = icmp ugt i16 %num_els, 1024
ret i1 %res
}
define i1 @ult_vscale16() vscale_range(0,16) {
; CHECK-LABEL: @ult_vscale16(
; CHECK-NEXT: entry:
; CHECK-NEXT: ret i1 false
;
entry:
%vscale = call i16 @llvm.vscale.i16()
%res = icmp ult i16 1024, %vscale
ret i1 %res
}
define i1 @ule_vscale64() vscale_range(0,16) {
; CHECK-LABEL: @ule_vscale64(
; CHECK-NEXT: entry:
; CHECK-NEXT: ret i1 false
;
entry:
%vscale = call i64 @llvm.vscale.i64()
%res = icmp ule i64 1024, %vscale
ret i1 %res
}
define i1 @ueq_vscale64_range4_4() vscale_range(4,4) {
; CHECK-LABEL: @ueq_vscale64_range4_4(
; CHECK-NEXT: entry:
; CHECK-NEXT: ret i1 true
;
entry:
%vscale = call i64 @llvm.vscale.i64()
%res = icmp eq i64 %vscale, 4
ret i1 %res
}
define i1 @ne_vscale64_x_32() vscale_range(0,16) {
; CHECK-LABEL: @ne_vscale64_x_32(
; CHECK-NEXT: entry:
; CHECK-NEXT: ret i1 true
;
entry:
%vscale = call i64 @llvm.vscale.i64()
%num_els = mul i64 %vscale, 32
%res = icmp ne i64 %num_els, 39488
ret i1 %res
}
declare i8 @llvm.vscale.i8()
declare i16 @llvm.vscale.i16()
declare i32 @llvm.vscale.i32()
declare i64 @llvm.vscale.i64()