brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · cd6ab0b Raw
54 lines · plain
1; RUN: llc -O3 -mtriple=amdgcn < %s | FileCheck --check-prefix=CHECK %s2 3; SIInsertWaitcnts should preserve waitcnt instructions coming from the user4 5; CHECK-LABEL: test_waitcnt_asm6; CHECK: s_waitcnt vmcnt(0)7; CHECK: s_waitcnt vmcnt(0)8; CHECK: s_waitcnt vmcnt(0)9; CHECK-NOT: s_waitcnt10; CHECK: s_endpgm11define amdgpu_kernel void @test_waitcnt_asm() {12  call void asm sideeffect "s_waitcnt vmcnt(0)", ""()13  call void asm sideeffect "s_waitcnt vmcnt(0)", ""()14  call void asm sideeffect "s_waitcnt vmcnt(0)", ""()15  ret void16}17 18; CHECK-LABEL: test_waitcnt_vscnt_asm19; CHECK: s_waitcnt_vscnt null, 0x020; CHECK: s_waitcnt_vscnt null, 0x021; CHECK: s_waitcnt_vscnt null, 0x022; CHECK-NOT: s_waitcnt23; CHECK: s_endpgm24define amdgpu_kernel void @test_waitcnt_vscnt_asm() {25  call void asm sideeffect "s_waitcnt_vscnt null, 0x0", ""()26  call void asm sideeffect "s_waitcnt_vscnt null, 0x0", ""()27  call void asm sideeffect "s_waitcnt_vscnt null, 0x0", ""()28  ret void29}30 31; CHECK-LABEL: test_waitcnt_builtin32; CHECK: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; CHECK-NOT: s_waitcnt34; CHECK: s_endpgm35define amdgpu_kernel void @test_waitcnt_builtin() {36  call void @llvm.amdgcn.s.waitcnt(i32 0)37  call void @llvm.amdgcn.s.waitcnt(i32 0)38  call void @llvm.amdgcn.s.waitcnt(i32 0)39  ret void40}41 42; CHECK-LABEL: test_waitcnt_builtin_non_kernel43; CHECK: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)44; CHECK-NOT: s_waitcnt45; CHECK: s_setpc46define void @test_waitcnt_builtin_non_kernel() {47  call void @llvm.amdgcn.s.waitcnt(i32 0)48  call void @llvm.amdgcn.s.waitcnt(i32 0)49  call void @llvm.amdgcn.s.waitcnt(i32 0)50  ret void51}52 53declare void @llvm.amdgcn.s.waitcnt(i32)54