; RUN: llc -mtriple=spirv32-unknown-unknown --spirv-extensions=SPV_KHR_expect_assume < %s | FileCheck --check-prefixes=CHECK,EXT %s ; RUN: llc -mtriple=spirv64-unknown-unknown --spirv-extensions=SPV_KHR_expect_assume < %s | FileCheck --check-prefixes=CHECK,EXT %s ; RUN: llc -mtriple=spirv32-unknown-unknown < %s | FileCheck --check-prefixes=CHECK,NOEXT %s ; RUN: llc -mtriple=spirv64-unknown-unknown < %s | FileCheck --check-prefixes=CHECK,NOEXT %s ; EXT: OpCapability ExpectAssumeKHR ; EXT-NEXT: OpExtension "SPV_KHR_expect_assume" ; NOEXT-NOT: OpCapability ExpectAssumeKHR ; NOEXT-NOT: OpExtension "SPV_KHR_expect_assume" declare i32 @llvm.expect.i32(i32, i32) declare i32 @getOne() ; CHECK-DAG: %2 = OpTypeInt 32 0 ; CHECK-DAG: %6 = OpFunctionParameter %2 ; CHECK-DAG: %9 = OpIMul %2 %6 %8 ; EXT-DAG: %10 = OpExpectKHR %2 %9 %6 ; NOEXT-NOT: %10 = OpExpectKHR %2 %9 %6 define i32 @test(i32 %x) { %one = call i32 @getOne() %val = mul i32 %x, %one %v = call i32 @llvm.expect.i32(i32 %val, i32 %x) ret i32 %v }