blob: 04fcf5fafc7466fb8b9e8d5e8d5f0a60afb39b49 [file] [log] [blame]
Fangrui Song9e9907f2024-01-16 21:54:58 -08001; RUN: llc -mtriple=r600 -mcpu=redwood %s -o - | FileCheck %s
Tom Stellard805890b2014-01-23 18:49:31 +00002
3; This tests for a bug where vertex fetch clauses right before an ENDIF
4; instruction where being emitted after the ENDIF. We were using ALU_POP_AFTER
5; for the ALU clause before the vetex fetch instead of emitting a POP instruction
6; after the fetch clause.
7
8
Tom Stellard79243d92014-10-01 17:15:17 +00009; CHECK-LABEL: {{^}}test:
Tom Stellard805890b2014-01-23 18:49:31 +000010; CHECK-NOT: ALU_POP_AFTER
11; CHECK: TEX
12; CHECK-NEXT: POP
Nikita Popovbdf2fbb2022-12-19 12:39:01 +010013define amdgpu_kernel void @test(ptr addrspace(1) %out, ptr addrspace(1) %in, i32 %cond) {
Tom Stellard805890b2014-01-23 18:49:31 +000014entry:
15 %0 = icmp eq i32 %cond, 0
16 br i1 %0, label %endif, label %if
17
18if:
Nikita Popovbdf2fbb2022-12-19 12:39:01 +010019 %1 = load i32, ptr addrspace(1) %in
Tom Stellard805890b2014-01-23 18:49:31 +000020 br label %endif
21
22endif:
23 %x = phi i32 [ %1, %if], [ 0, %entry]
Nikita Popovbdf2fbb2022-12-19 12:39:01 +010024 store i32 %x, ptr addrspace(1) %out
Tom Stellard805890b2014-01-23 18:49:31 +000025 br label %done
26
27done:
28 ret void
29}