1*42633cf2SVyacheslav Levytskyy; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s 20098f2aeSIlia Diachkov 34bd9d98bSAndrey Tretyakov;; NOTE: This does not check for structured control-flow operations. 40098f2aeSIlia Diachkov 50098f2aeSIlia Diachkov; CHECK-DAG: OpName [[FOO:%.+]] "foo" 60098f2aeSIlia Diachkov; CHECK-DAG: OpName [[BAR:%.+]] "bar" 70098f2aeSIlia Diachkov 853326ee0SNathan Gauër; CHECK-DAG: %[[#I32:]] = OpTypeInt 32 953326ee0SNathan Gauër; CHECK-DAG: %[[#BOOL:]] = OpTypeBool 100098f2aeSIlia Diachkov 110098f2aeSIlia Diachkovdeclare i32 @foo() 120098f2aeSIlia Diachkovdeclare i32 @bar() 130098f2aeSIlia Diachkov 140098f2aeSIlia Diachkovdefine i32 @test_if(i32 %a, i32 %b) { 150098f2aeSIlia Diachkoventry: 160098f2aeSIlia Diachkov %cond = icmp eq i32 %a, %b 170098f2aeSIlia Diachkov br i1 %cond, label %true_label, label %false_label 180098f2aeSIlia Diachkov 190098f2aeSIlia Diachkovtrue_label: 200098f2aeSIlia Diachkov %v1 = call i32 @foo() 210098f2aeSIlia Diachkov br label %merge_label 220098f2aeSIlia Diachkov 230098f2aeSIlia Diachkovfalse_label: 240098f2aeSIlia Diachkov %v2 = call i32 @bar() 250098f2aeSIlia Diachkov br label %merge_label 260098f2aeSIlia Diachkov 270098f2aeSIlia Diachkovmerge_label: 280098f2aeSIlia Diachkov %v = phi i32 [%v1, %true_label], [%v2, %false_label] 290098f2aeSIlia Diachkov ret i32 %v 300098f2aeSIlia Diachkov} 310098f2aeSIlia Diachkov 320098f2aeSIlia Diachkov; CHECK: OpFunction 3353326ee0SNathan Gauër; CHECK: %[[#A:]] = OpFunctionParameter %[[#I32]] 3453326ee0SNathan Gauër; CHECK: %[[#B:]] = OpFunctionParameter %[[#I32]] 350098f2aeSIlia Diachkov 3653326ee0SNathan Gauër; CHECK: %[[#ENTRY:]] = OpLabel 3753326ee0SNathan Gauër; CHECK: %[[#COND:]] = OpIEqual %[[#BOOL]] %[[#A]] %[[#B]] 3853326ee0SNathan Gauër; CHECK: OpBranchConditional %[[#COND]] %[[#TRUE_LABEL:]] %[[#FALSE_LABEL:]] 390098f2aeSIlia Diachkov 4053326ee0SNathan Gauër; CHECK: %[[#FALSE_LABEL]] = OpLabel 4153326ee0SNathan Gauër; CHECK: %[[#V2:]] = OpFunctionCall %[[#I32]] [[BAR]] 4253326ee0SNathan Gauër; CHECK: OpBranch %[[#MERGE_LABEL:]] 430098f2aeSIlia Diachkov 4453326ee0SNathan Gauër; CHECK: %[[#TRUE_LABEL]] = OpLabel 4553326ee0SNathan Gauër; CHECK: %[[#V1:]] = OpFunctionCall %[[#I32]] [[FOO]] 4653326ee0SNathan Gauër; CHECK: OpBranch %[[#MERGE_LABEL]] 470c07e7c2SNathan Gauër 4853326ee0SNathan Gauër 4953326ee0SNathan Gauër; CHECK: %[[#MERGE_LABEL]] = OpLabel 5053326ee0SNathan Gauër; CHECK-NEXT: [[V:%.+]] = OpPhi %[[#I32]] %[[#V1]] %[[#TRUE_LABEL]] %[[#V2]] %[[#FALSE_LABEL]] 511ed65febSNathan Gauër; CHECK: OpReturnValue [[V]] 521ed65febSNathan Gauër 530098f2aeSIlia Diachkov; CHECK-NEXT: OpFunctionEnd 54