| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py | |
| ; RUN: opt < %s -passes=instsimplify -S | FileCheck %s | |
| define i64 @vscale_i64_range_none() #0 { | |
| ; CHECK-LABEL: @vscale_i64_range_none( | |
| ; CHECK-NEXT: [[OUT:%.*]] = call i64 @llvm.vscale.i64() | |
| ; CHECK-NEXT: ret i64 [[OUT]] | |
| ; | |
| %out = call i64 @llvm.vscale.i64() | |
| ret i64 %out | |
| } | |
| define i64 @vscale_i64_range_1_1() #1 { | |
| ; CHECK-LABEL: @vscale_i64_range_1_1( | |
| ; CHECK-NEXT: ret i64 1 | |
| ; | |
| %out = call i64 @llvm.vscale.i64() | |
| ret i64 %out | |
| } | |
| define i32 @vscale_i32_range_2_2() #2 { | |
| ; CHECK-LABEL: @vscale_i32_range_2_2( | |
| ; CHECK-NEXT: ret i32 2 | |
| ; | |
| %out = call i32 @llvm.vscale.i32() | |
| ret i32 %out | |
| } | |
| define i64 @vscale_i64_range_2_4() #3 { | |
| ; CHECK-LABEL: @vscale_i64_range_2_4( | |
| ; CHECK-NEXT: [[OUT:%.*]] = call i64 @llvm.vscale.i64() | |
| ; CHECK-NEXT: ret i64 [[OUT]] | |
| ; | |
| %out = call i64 @llvm.vscale.i64() | |
| ret i64 %out | |
| } | |
| ; Function Attrs: nofree nosync nounwind readnone willreturn | |
| declare i64 @llvm.vscale.i64() #0 | |
| ; Function Attrs: nofree nosync nounwind readnone willreturn | |
| declare i32 @llvm.vscale.i32() #0 | |
| attributes #0 = { nofree nosync nounwind readnone willreturn } | |
| attributes #1 = { mustprogress nofree nosync nounwind uwtable vscale_range(1,1) } | |
| attributes #2 = { mustprogress nofree nosync nounwind uwtable vscale_range(2,2) } | |
| attributes #3 = { mustprogress nofree nosync nounwind uwtable vscale_range(2,4) } | |