25 lines
1.2 KiB
LLVM
25 lines
1.2 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
|
; RUN: opt -passes='instcombine' -S < %s | FileCheck %s
|
|
|
|
define target("aarch64.svcount") @test_alloca_store_reload(target("aarch64.svcount") %val) nounwind {
|
|
; CHECK-LABEL: @test_alloca_store_reload(
|
|
; CHECK-NEXT: ret target("aarch64.svcount") [[VAL:%.*]]
|
|
;
|
|
%ptr = alloca target("aarch64.svcount"), align 1
|
|
store target("aarch64.svcount") %val, ptr %ptr
|
|
%res = load target("aarch64.svcount"), ptr %ptr
|
|
ret target("aarch64.svcount") %res
|
|
}
|
|
|
|
; Test that instcombine doesn't try to query the (scalable) size of target("aarch64.svcount")
|
|
; in foldSelectInstWithICmp.
|
|
define target("aarch64.svcount") @test_combine_on_select(target("aarch64.svcount") %x, target("aarch64.svcount") %y, i32 %k) {
|
|
; CHECK-LABEL: @test_combine_on_select(
|
|
; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[K:%.*]], 42
|
|
; CHECK-NEXT: [[X_Y:%.*]] = select i1 [[CMP]], target("aarch64.svcount") [[X:%.*]], target("aarch64.svcount") [[Y:%.*]]
|
|
; CHECK-NEXT: ret target("aarch64.svcount") [[X_Y]]
|
|
;
|
|
%cmp = icmp sgt i32 %k, 42
|
|
%x.y = select i1 %cmp, target("aarch64.svcount") %x, target("aarch64.svcount") %y
|
|
ret target("aarch64.svcount") %x.y
|
|
}
|