| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
| ; RUN: opt < %s -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) } |
| |
| |