| ; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s |
| ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %} |
| |
| ; This test checks that basic blocks are reordered in SPIR-V so that dominators |
| ; are emitted ahead of their dominated blocks as required by the SPIR-V |
| ; specification. |
| |
| ; CHECK-DAG: OpName %[[#ENTRY:]] "entry" |
| ; CHECK-DAG: OpName %[[#FOR_BODY137_LR_PH:]] "for.body137.lr.ph" |
| ; CHECK-DAG: OpName %[[#FOR_BODY:]] "for.body" |
| |
| ; CHECK: %[[#ENTRY]] = OpLabel |
| ; CHECK: %[[#FOR_BODY]] = OpLabel |
| ; CHECK: %[[#FOR_BODY137_LR_PH]] = OpLabel |
| |
| define spir_kernel void @test(ptr addrspace(1) %arg, i1 %cond) { |
| entry: |
| br label %for.body |
| |
| for.body137.lr.ph: ; preds = %for.body |
| ret void |
| |
| for.body: ; preds = %for.body, %entry |
| br i1 %cond, label %for.body, label %for.body137.lr.ph |
| } |