Lines Matching +full:- +full:- +full:token
1 ; RUN: llc -stop-after=amdgpu-isel -mtriple=amdgcn-- -mcpu=gfx900 -verify-machineinstrs -o - %s | F…
2 ; RUN: llc -stop-after=dead-mi-elimination -mtriple=amdgcn-- -mcpu=gfx900 -verify-machineinstrs -o …
3 ; RUN: llc -global-isel -stop-after=irtranslator -mtriple=amdgcn-- -mcpu=gfx900 -verify-machineinst…
5 ; CHECK-LABEL: name: basic_call
6 ; CHECK: [[TOKEN:%[0-9]+]]{{[^ ]*}} = CONVERGENCECTRL_ENTRY
7 ; ISEL: {{.*}} SI_CALL_ISEL {{.*}}, @foo, csr_amdgpu, {{.*}}, implicit [[TOKEN]]
8 ; DEADMI: {{.*}} SI_CALL {{.*}}, @foo, csr_amdgpu, {{.*}}, implicit [[TOKEN]]
9 ; GISEL: {{.*}} G_SI_CALL {{.*}}, @foo, csr_amdgpu, {{.*}}, implicit [[TOKEN]]
11 %t = call token @llvm.experimental.convergence.entry()
12 %r = call i32 @foo(i32 %src) [ "convergencectrl"(token %t) ]
16 ; CHECK-LABEL: name: basic_intrinsic
17 ; CHECK: [[TOKEN:%[0-9]+]]{{[^ ]*}} = CONVERGENCECTRL_ANCHOR
18 ; ISEL: CONVERGENCECTRL_GLUE [[TOKEN]]
19 ; DEADMI-NOT: CONVERGENCECTRL_GLUE
20 ; ISEL: {{.*}} = V_READFIRSTLANE_B32 {{.*}}, implicit [[TOKEN]]
21 … {{.*}} = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane){{.*}}, implicit [[TOKEN]]
23 %t = call token @llvm.experimental.convergence.anchor()
24 %r = call i32 @llvm.amdgcn.readfirstlane(i32 %src) [ "convergencectrl"(token %t) ]
29 ; when a convergent call has no token.
35 ; CHECK-LABEL: name: basic_branch
37 ; CHECK: [[TOKEN:%[0-9]+]]{{[^ ]*}} = CONVERGENCECTRL_ANCHOR
39 ; ISEL: CONVERGENCECTRL_GLUE [[TOKEN]]
40 ; DEADMI-NOT: CONVERGENCECTRL_GLUE
41 ; ISEL: {{.*}} = V_READFIRSTLANE_B32 {{.*}}, implicit [[TOKEN]]
42 … {{.*}} = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.readfirstlane){{.*}}, implicit [[TOKEN]]
45 %t = call token @llvm.experimental.convergence.anchor()
50 %r = call i32 @llvm.amdgcn.readfirstlane(i32 %x) [ "convergencectrl"(token %t) ]
58 ; CHECK-LABEL: name: basic_loop
59 ; CHECK: [[TOKEN:%[0-9]+]]{{[^ ]*}} = CONVERGENCECTRL_ANCHOR
61 ; CHECK: [[LOOP:%[0-9]+]]{{[^ ]*}} = CONVERGENCECTRL_LOOP [[TOKEN]]
63 ; DEADMI-NOT: CONVERGENCECTRL_GLUE
67 %t1 = call token @llvm.experimental.convergence.anchor()
71 %t2 = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %t1) ]
72 %r = call i32 @llvm.amdgcn.readfirstlane(i32 %src) [ "convergencectrl"(token %t2) ]
79 ; CHECK-LABEL: name: nested
80 ; CHECK: [[ENTRY:%[0-9]+]]{{[^ ]*}} = CONVERGENCECTRL_ENTRY
81 ; CHECK: [[ANCHOR:%[0-9]+]]{{[^ ]*}} = CONVERGENCECTRL_ANCHOR
87 %t1 = call token @llvm.experimental.convergence.entry()
88 %t2 = call token @llvm.experimental.convergence.anchor()
89 %r2 = call i32 @llvm.amdgcn.readfirstlane(i32 %src) [ "convergencectrl"(token %t2) ]
90 %r1 = call i32 @llvm.amdgcn.readfirstlane(i32 %src) [ "convergencectrl"(token %t1) ]
95 ; CHECK-LABEL: name: tail_call_void_func_void
96 ; CHECK: [[TOKEN:%[0-9]+]]{{[^ ]*}} = CONVERGENCECTRL_ENTRY
97 …CK: {{.*}} SI_TCRETURN {{.*}}, @external_void_func_void, 0, csr_amdgpu, {{.*}}implicit [[TOKEN]]
99 %t1 = call token @llvm.experimental.convergence.entry()
100 tail call void @external_void_func_void() [ "convergencectrl"(token %t1) ]
109 declare token @llvm.experimental.convergence.entry()
110 declare token @llvm.experimental.convergence.anchor()
111 declare token @llvm.experimental.convergence.loop()