; 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 }