1544 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 42; RUN: llc -global-isel -new-reg-bank-select -stop-after=si-memory-legalizer -mtriple=amdgcn-amd- -mcpu=gfx600 < %s | FileCheck -check-prefix=GFX6 %s3; RUN: llc -global-isel -new-reg-bank-select -stop-after=si-memory-legalizer -mtriple=amdgcn-amd- -mcpu=gfx803 < %s | FileCheck -check-prefix=GFX8 %s4; RUN: llc -global-isel -new-reg-bank-select -stop-after=si-memory-legalizer -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 < %s | FileCheck -check-prefix=GFX8 %s5; RUN: llc -global-isel -new-reg-bank-select -stop-after=si-memory-legalizer -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 < %s | FileCheck -check-prefix=GFX10WGP %s6; RUN: llc -global-isel -new-reg-bank-select -stop-after=si-memory-legalizer -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -mattr=+cumode < %s | FileCheck -check-prefix=GFX10CU %s7; RUN: llc -global-isel -new-reg-bank-select -stop-after=si-memory-legalizer -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 < %s | FileCheck -check-prefix=GFX11WGP %s8; RUN: llc -global-isel -new-reg-bank-select -stop-after=si-memory-legalizer -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+cumode < %s | FileCheck -check-prefix=GFX11CU %s9 10; Note: we use MIR test checks + stop after legalizer to prevent11; tests from being optimized out.12 13define amdgpu_kernel void @system_one_as_acquire() #0 {14 ; GFX6-LABEL: name: system_one_as_acquire15 ; GFX6: bb.0.entry:16 ; GFX6-NEXT: S_WAITCNT_soft 395217 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec18 ; GFX6-NEXT: S_ENDPGM 019 ;20 ; GFX8-LABEL: name: system_one_as_acquire21 ; GFX8: bb.0.entry:22 ; GFX8-NEXT: S_WAITCNT_soft 395223 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec24 ; GFX8-NEXT: S_ENDPGM 025 ;26 ; GFX10WGP-LABEL: name: system_one_as_acquire27 ; GFX10WGP: bb.0.entry:28 ; GFX10WGP-NEXT: S_WAITCNT_soft 1624029 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 030 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec31 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec32 ; GFX10WGP-NEXT: S_ENDPGM 033 ;34 ; GFX10CU-LABEL: name: system_one_as_acquire35 ; GFX10CU: bb.0.entry:36 ; GFX10CU-NEXT: S_WAITCNT_soft 1624037 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 038 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec39 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec40 ; GFX10CU-NEXT: S_ENDPGM 041 ;42 ; GFX11WGP-LABEL: name: system_one_as_acquire43 ; GFX11WGP: bb.0.entry:44 ; GFX11WGP-NEXT: S_WAITCNT_soft 101545 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 046 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec47 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec48 ; GFX11WGP-NEXT: S_ENDPGM 049 ;50 ; GFX11CU-LABEL: name: system_one_as_acquire51 ; GFX11CU: bb.0.entry:52 ; GFX11CU-NEXT: S_WAITCNT_soft 101553 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 054 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec55 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec56 ; GFX11CU-NEXT: S_ENDPGM 057entry:58 fence syncscope("one-as") acquire59 ret void60}61 62define amdgpu_kernel void @system_one_as_release() #0 {63 ; GFX6-LABEL: name: system_one_as_release64 ; GFX6: bb.0.entry:65 ; GFX6-NEXT: S_WAITCNT_soft 395266 ; GFX6-NEXT: S_ENDPGM 067 ;68 ; GFX8-LABEL: name: system_one_as_release69 ; GFX8: bb.0.entry:70 ; GFX8-NEXT: S_WAITCNT_soft 395271 ; GFX8-NEXT: S_ENDPGM 072 ;73 ; GFX10WGP-LABEL: name: system_one_as_release74 ; GFX10WGP: bb.0.entry:75 ; GFX10WGP-NEXT: S_WAITCNT_soft 1624076 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 077 ; GFX10WGP-NEXT: S_ENDPGM 078 ;79 ; GFX10CU-LABEL: name: system_one_as_release80 ; GFX10CU: bb.0.entry:81 ; GFX10CU-NEXT: S_WAITCNT_soft 1624082 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 083 ; GFX10CU-NEXT: S_ENDPGM 084 ;85 ; GFX11WGP-LABEL: name: system_one_as_release86 ; GFX11WGP: bb.0.entry:87 ; GFX11WGP-NEXT: S_WAITCNT_soft 101588 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 089 ; GFX11WGP-NEXT: S_ENDPGM 090 ;91 ; GFX11CU-LABEL: name: system_one_as_release92 ; GFX11CU: bb.0.entry:93 ; GFX11CU-NEXT: S_WAITCNT_soft 101594 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 095 ; GFX11CU-NEXT: S_ENDPGM 096entry:97 fence syncscope("one-as") release98 ret void99}100 101define amdgpu_kernel void @system_one_as_acq_rel() #0 {102 ; GFX6-LABEL: name: system_one_as_acq_rel103 ; GFX6: bb.0.entry:104 ; GFX6-NEXT: S_WAITCNT_soft 3952105 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec106 ; GFX6-NEXT: S_ENDPGM 0107 ;108 ; GFX8-LABEL: name: system_one_as_acq_rel109 ; GFX8: bb.0.entry:110 ; GFX8-NEXT: S_WAITCNT_soft 3952111 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec112 ; GFX8-NEXT: S_ENDPGM 0113 ;114 ; GFX10WGP-LABEL: name: system_one_as_acq_rel115 ; GFX10WGP: bb.0.entry:116 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240117 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0118 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec119 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec120 ; GFX10WGP-NEXT: S_ENDPGM 0121 ;122 ; GFX10CU-LABEL: name: system_one_as_acq_rel123 ; GFX10CU: bb.0.entry:124 ; GFX10CU-NEXT: S_WAITCNT_soft 16240125 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0126 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec127 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec128 ; GFX10CU-NEXT: S_ENDPGM 0129 ;130 ; GFX11WGP-LABEL: name: system_one_as_acq_rel131 ; GFX11WGP: bb.0.entry:132 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015133 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0134 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec135 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec136 ; GFX11WGP-NEXT: S_ENDPGM 0137 ;138 ; GFX11CU-LABEL: name: system_one_as_acq_rel139 ; GFX11CU: bb.0.entry:140 ; GFX11CU-NEXT: S_WAITCNT_soft 1015141 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0142 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec143 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec144 ; GFX11CU-NEXT: S_ENDPGM 0145entry:146 fence syncscope("one-as") acq_rel147 ret void148}149 150define amdgpu_kernel void @system_one_as_seq_cst() #0 {151 ; GFX6-LABEL: name: system_one_as_seq_cst152 ; GFX6: bb.0.entry:153 ; GFX6-NEXT: S_WAITCNT_soft 3952154 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec155 ; GFX6-NEXT: S_ENDPGM 0156 ;157 ; GFX8-LABEL: name: system_one_as_seq_cst158 ; GFX8: bb.0.entry:159 ; GFX8-NEXT: S_WAITCNT_soft 3952160 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec161 ; GFX8-NEXT: S_ENDPGM 0162 ;163 ; GFX10WGP-LABEL: name: system_one_as_seq_cst164 ; GFX10WGP: bb.0.entry:165 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240166 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0167 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec168 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec169 ; GFX10WGP-NEXT: S_ENDPGM 0170 ;171 ; GFX10CU-LABEL: name: system_one_as_seq_cst172 ; GFX10CU: bb.0.entry:173 ; GFX10CU-NEXT: S_WAITCNT_soft 16240174 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0175 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec176 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec177 ; GFX10CU-NEXT: S_ENDPGM 0178 ;179 ; GFX11WGP-LABEL: name: system_one_as_seq_cst180 ; GFX11WGP: bb.0.entry:181 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015182 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0183 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec184 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec185 ; GFX11WGP-NEXT: S_ENDPGM 0186 ;187 ; GFX11CU-LABEL: name: system_one_as_seq_cst188 ; GFX11CU: bb.0.entry:189 ; GFX11CU-NEXT: S_WAITCNT_soft 1015190 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0191 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec192 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec193 ; GFX11CU-NEXT: S_ENDPGM 0194entry:195 fence syncscope("one-as") seq_cst196 ret void197}198 199define amdgpu_kernel void @singlethread_one_as_acquire() #0 {200 ; GFX6-LABEL: name: singlethread_one_as_acquire201 ; GFX6: bb.0.entry:202 ; GFX6-NEXT: S_ENDPGM 0203 ;204 ; GFX8-LABEL: name: singlethread_one_as_acquire205 ; GFX8: bb.0.entry:206 ; GFX8-NEXT: S_ENDPGM 0207 ;208 ; GFX10WGP-LABEL: name: singlethread_one_as_acquire209 ; GFX10WGP: bb.0.entry:210 ; GFX10WGP-NEXT: S_ENDPGM 0211 ;212 ; GFX10CU-LABEL: name: singlethread_one_as_acquire213 ; GFX10CU: bb.0.entry:214 ; GFX10CU-NEXT: S_ENDPGM 0215 ;216 ; GFX11WGP-LABEL: name: singlethread_one_as_acquire217 ; GFX11WGP: bb.0.entry:218 ; GFX11WGP-NEXT: S_ENDPGM 0219 ;220 ; GFX11CU-LABEL: name: singlethread_one_as_acquire221 ; GFX11CU: bb.0.entry:222 ; GFX11CU-NEXT: S_ENDPGM 0223entry:224 fence syncscope("singlethread-one-as") acquire225 ret void226}227 228define amdgpu_kernel void @singlethread_one_as_release() #0 {229 ; GFX6-LABEL: name: singlethread_one_as_release230 ; GFX6: bb.0.entry:231 ; GFX6-NEXT: S_ENDPGM 0232 ;233 ; GFX8-LABEL: name: singlethread_one_as_release234 ; GFX8: bb.0.entry:235 ; GFX8-NEXT: S_ENDPGM 0236 ;237 ; GFX10WGP-LABEL: name: singlethread_one_as_release238 ; GFX10WGP: bb.0.entry:239 ; GFX10WGP-NEXT: S_ENDPGM 0240 ;241 ; GFX10CU-LABEL: name: singlethread_one_as_release242 ; GFX10CU: bb.0.entry:243 ; GFX10CU-NEXT: S_ENDPGM 0244 ;245 ; GFX11WGP-LABEL: name: singlethread_one_as_release246 ; GFX11WGP: bb.0.entry:247 ; GFX11WGP-NEXT: S_ENDPGM 0248 ;249 ; GFX11CU-LABEL: name: singlethread_one_as_release250 ; GFX11CU: bb.0.entry:251 ; GFX11CU-NEXT: S_ENDPGM 0252entry:253 fence syncscope("singlethread-one-as") release254 ret void255}256 257define amdgpu_kernel void @singlethread_one_as_acq_rel() #0 {258 ; GFX6-LABEL: name: singlethread_one_as_acq_rel259 ; GFX6: bb.0.entry:260 ; GFX6-NEXT: S_ENDPGM 0261 ;262 ; GFX8-LABEL: name: singlethread_one_as_acq_rel263 ; GFX8: bb.0.entry:264 ; GFX8-NEXT: S_ENDPGM 0265 ;266 ; GFX10WGP-LABEL: name: singlethread_one_as_acq_rel267 ; GFX10WGP: bb.0.entry:268 ; GFX10WGP-NEXT: S_ENDPGM 0269 ;270 ; GFX10CU-LABEL: name: singlethread_one_as_acq_rel271 ; GFX10CU: bb.0.entry:272 ; GFX10CU-NEXT: S_ENDPGM 0273 ;274 ; GFX11WGP-LABEL: name: singlethread_one_as_acq_rel275 ; GFX11WGP: bb.0.entry:276 ; GFX11WGP-NEXT: S_ENDPGM 0277 ;278 ; GFX11CU-LABEL: name: singlethread_one_as_acq_rel279 ; GFX11CU: bb.0.entry:280 ; GFX11CU-NEXT: S_ENDPGM 0281entry:282 fence syncscope("singlethread-one-as") acq_rel283 ret void284}285 286define amdgpu_kernel void @singlethread_one_as_seq_cst() #0 {287 ; GFX6-LABEL: name: singlethread_one_as_seq_cst288 ; GFX6: bb.0.entry:289 ; GFX6-NEXT: S_ENDPGM 0290 ;291 ; GFX8-LABEL: name: singlethread_one_as_seq_cst292 ; GFX8: bb.0.entry:293 ; GFX8-NEXT: S_ENDPGM 0294 ;295 ; GFX10WGP-LABEL: name: singlethread_one_as_seq_cst296 ; GFX10WGP: bb.0.entry:297 ; GFX10WGP-NEXT: S_ENDPGM 0298 ;299 ; GFX10CU-LABEL: name: singlethread_one_as_seq_cst300 ; GFX10CU: bb.0.entry:301 ; GFX10CU-NEXT: S_ENDPGM 0302 ;303 ; GFX11WGP-LABEL: name: singlethread_one_as_seq_cst304 ; GFX11WGP: bb.0.entry:305 ; GFX11WGP-NEXT: S_ENDPGM 0306 ;307 ; GFX11CU-LABEL: name: singlethread_one_as_seq_cst308 ; GFX11CU: bb.0.entry:309 ; GFX11CU-NEXT: S_ENDPGM 0310entry:311 fence syncscope("singlethread-one-as") seq_cst312 ret void313}314 315define amdgpu_kernel void @agent_one_as_acquire() #0 {316 ; GFX6-LABEL: name: agent_one_as_acquire317 ; GFX6: bb.0.entry:318 ; GFX6-NEXT: S_WAITCNT_soft 3952319 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec320 ; GFX6-NEXT: S_ENDPGM 0321 ;322 ; GFX8-LABEL: name: agent_one_as_acquire323 ; GFX8: bb.0.entry:324 ; GFX8-NEXT: S_WAITCNT_soft 3952325 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec326 ; GFX8-NEXT: S_ENDPGM 0327 ;328 ; GFX10WGP-LABEL: name: agent_one_as_acquire329 ; GFX10WGP: bb.0.entry:330 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240331 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0332 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec333 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec334 ; GFX10WGP-NEXT: S_ENDPGM 0335 ;336 ; GFX10CU-LABEL: name: agent_one_as_acquire337 ; GFX10CU: bb.0.entry:338 ; GFX10CU-NEXT: S_WAITCNT_soft 16240339 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0340 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec341 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec342 ; GFX10CU-NEXT: S_ENDPGM 0343 ;344 ; GFX11WGP-LABEL: name: agent_one_as_acquire345 ; GFX11WGP: bb.0.entry:346 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015347 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0348 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec349 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec350 ; GFX11WGP-NEXT: S_ENDPGM 0351 ;352 ; GFX11CU-LABEL: name: agent_one_as_acquire353 ; GFX11CU: bb.0.entry:354 ; GFX11CU-NEXT: S_WAITCNT_soft 1015355 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0356 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec357 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec358 ; GFX11CU-NEXT: S_ENDPGM 0359entry:360 fence syncscope("agent-one-as") acquire361 ret void362}363 364define amdgpu_kernel void @agent_one_as_release() #0 {365 ; GFX6-LABEL: name: agent_one_as_release366 ; GFX6: bb.0.entry:367 ; GFX6-NEXT: S_WAITCNT_soft 3952368 ; GFX6-NEXT: S_ENDPGM 0369 ;370 ; GFX8-LABEL: name: agent_one_as_release371 ; GFX8: bb.0.entry:372 ; GFX8-NEXT: S_WAITCNT_soft 3952373 ; GFX8-NEXT: S_ENDPGM 0374 ;375 ; GFX10WGP-LABEL: name: agent_one_as_release376 ; GFX10WGP: bb.0.entry:377 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240378 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0379 ; GFX10WGP-NEXT: S_ENDPGM 0380 ;381 ; GFX10CU-LABEL: name: agent_one_as_release382 ; GFX10CU: bb.0.entry:383 ; GFX10CU-NEXT: S_WAITCNT_soft 16240384 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0385 ; GFX10CU-NEXT: S_ENDPGM 0386 ;387 ; GFX11WGP-LABEL: name: agent_one_as_release388 ; GFX11WGP: bb.0.entry:389 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015390 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0391 ; GFX11WGP-NEXT: S_ENDPGM 0392 ;393 ; GFX11CU-LABEL: name: agent_one_as_release394 ; GFX11CU: bb.0.entry:395 ; GFX11CU-NEXT: S_WAITCNT_soft 1015396 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0397 ; GFX11CU-NEXT: S_ENDPGM 0398entry:399 fence syncscope("agent-one-as") release400 ret void401}402 403define amdgpu_kernel void @agent_one_as_acq_rel() #0 {404 ; GFX6-LABEL: name: agent_one_as_acq_rel405 ; GFX6: bb.0.entry:406 ; GFX6-NEXT: S_WAITCNT_soft 3952407 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec408 ; GFX6-NEXT: S_ENDPGM 0409 ;410 ; GFX8-LABEL: name: agent_one_as_acq_rel411 ; GFX8: bb.0.entry:412 ; GFX8-NEXT: S_WAITCNT_soft 3952413 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec414 ; GFX8-NEXT: S_ENDPGM 0415 ;416 ; GFX10WGP-LABEL: name: agent_one_as_acq_rel417 ; GFX10WGP: bb.0.entry:418 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240419 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0420 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec421 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec422 ; GFX10WGP-NEXT: S_ENDPGM 0423 ;424 ; GFX10CU-LABEL: name: agent_one_as_acq_rel425 ; GFX10CU: bb.0.entry:426 ; GFX10CU-NEXT: S_WAITCNT_soft 16240427 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0428 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec429 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec430 ; GFX10CU-NEXT: S_ENDPGM 0431 ;432 ; GFX11WGP-LABEL: name: agent_one_as_acq_rel433 ; GFX11WGP: bb.0.entry:434 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015435 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0436 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec437 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec438 ; GFX11WGP-NEXT: S_ENDPGM 0439 ;440 ; GFX11CU-LABEL: name: agent_one_as_acq_rel441 ; GFX11CU: bb.0.entry:442 ; GFX11CU-NEXT: S_WAITCNT_soft 1015443 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0444 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec445 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec446 ; GFX11CU-NEXT: S_ENDPGM 0447entry:448 fence syncscope("agent-one-as") acq_rel449 ret void450}451 452define amdgpu_kernel void @agent_one_as_seq_cst() #0 {453 ; GFX6-LABEL: name: agent_one_as_seq_cst454 ; GFX6: bb.0.entry:455 ; GFX6-NEXT: S_WAITCNT_soft 3952456 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec457 ; GFX6-NEXT: S_ENDPGM 0458 ;459 ; GFX8-LABEL: name: agent_one_as_seq_cst460 ; GFX8: bb.0.entry:461 ; GFX8-NEXT: S_WAITCNT_soft 3952462 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec463 ; GFX8-NEXT: S_ENDPGM 0464 ;465 ; GFX10WGP-LABEL: name: agent_one_as_seq_cst466 ; GFX10WGP: bb.0.entry:467 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240468 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0469 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec470 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec471 ; GFX10WGP-NEXT: S_ENDPGM 0472 ;473 ; GFX10CU-LABEL: name: agent_one_as_seq_cst474 ; GFX10CU: bb.0.entry:475 ; GFX10CU-NEXT: S_WAITCNT_soft 16240476 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0477 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec478 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec479 ; GFX10CU-NEXT: S_ENDPGM 0480 ;481 ; GFX11WGP-LABEL: name: agent_one_as_seq_cst482 ; GFX11WGP: bb.0.entry:483 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015484 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0485 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec486 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec487 ; GFX11WGP-NEXT: S_ENDPGM 0488 ;489 ; GFX11CU-LABEL: name: agent_one_as_seq_cst490 ; GFX11CU: bb.0.entry:491 ; GFX11CU-NEXT: S_WAITCNT_soft 1015492 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0493 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec494 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec495 ; GFX11CU-NEXT: S_ENDPGM 0496entry:497 fence syncscope("agent-one-as") seq_cst498 ret void499}500 501define amdgpu_kernel void @workgroup_one_as_acquire() #0 {502 ; GFX6-LABEL: name: workgroup_one_as_acquire503 ; GFX6: bb.0.entry:504 ; GFX6-NEXT: S_ENDPGM 0505 ;506 ; GFX8-LABEL: name: workgroup_one_as_acquire507 ; GFX8: bb.0.entry:508 ; GFX8-NEXT: S_ENDPGM 0509 ;510 ; GFX10WGP-LABEL: name: workgroup_one_as_acquire511 ; GFX10WGP: bb.0.entry:512 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240513 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0514 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec515 ; GFX10WGP-NEXT: S_ENDPGM 0516 ;517 ; GFX10CU-LABEL: name: workgroup_one_as_acquire518 ; GFX10CU: bb.0.entry:519 ; GFX10CU-NEXT: S_ENDPGM 0520 ;521 ; GFX11WGP-LABEL: name: workgroup_one_as_acquire522 ; GFX11WGP: bb.0.entry:523 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015524 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0525 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec526 ; GFX11WGP-NEXT: S_ENDPGM 0527 ;528 ; GFX11CU-LABEL: name: workgroup_one_as_acquire529 ; GFX11CU: bb.0.entry:530 ; GFX11CU-NEXT: S_ENDPGM 0531entry:532 fence syncscope("workgroup-one-as") acquire533 ret void534}535 536define amdgpu_kernel void @workgroup_one_as_release() #0 {537 ; GFX6-LABEL: name: workgroup_one_as_release538 ; GFX6: bb.0.entry:539 ; GFX6-NEXT: S_ENDPGM 0540 ;541 ; GFX8-LABEL: name: workgroup_one_as_release542 ; GFX8: bb.0.entry:543 ; GFX8-NEXT: S_ENDPGM 0544 ;545 ; GFX10WGP-LABEL: name: workgroup_one_as_release546 ; GFX10WGP: bb.0.entry:547 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240548 ; GFX10WGP-NEXT: S_WAITCNT_lds_direct549 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0550 ; GFX10WGP-NEXT: S_ENDPGM 0551 ;552 ; GFX10CU-LABEL: name: workgroup_one_as_release553 ; GFX10CU: bb.0.entry:554 ; GFX10CU-NEXT: S_WAITCNT_soft 16240555 ; GFX10CU-NEXT: S_WAITCNT_lds_direct556 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0557 ; GFX10CU-NEXT: S_ENDPGM 0558 ;559 ; GFX11WGP-LABEL: name: workgroup_one_as_release560 ; GFX11WGP: bb.0.entry:561 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015562 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0563 ; GFX11WGP-NEXT: S_ENDPGM 0564 ;565 ; GFX11CU-LABEL: name: workgroup_one_as_release566 ; GFX11CU: bb.0.entry:567 ; GFX11CU-NEXT: S_WAITCNT_soft 1015568 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0569 ; GFX11CU-NEXT: S_ENDPGM 0570entry:571 fence syncscope("workgroup-one-as") release572 ret void573}574 575define amdgpu_kernel void @workgroup_one_as_acq_rel() #0 {576 ; GFX6-LABEL: name: workgroup_one_as_acq_rel577 ; GFX6: bb.0.entry:578 ; GFX6-NEXT: S_ENDPGM 0579 ;580 ; GFX8-LABEL: name: workgroup_one_as_acq_rel581 ; GFX8: bb.0.entry:582 ; GFX8-NEXT: S_ENDPGM 0583 ;584 ; GFX10WGP-LABEL: name: workgroup_one_as_acq_rel585 ; GFX10WGP: bb.0.entry:586 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240587 ; GFX10WGP-NEXT: S_WAITCNT_lds_direct588 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0589 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec590 ; GFX10WGP-NEXT: S_ENDPGM 0591 ;592 ; GFX10CU-LABEL: name: workgroup_one_as_acq_rel593 ; GFX10CU: bb.0.entry:594 ; GFX10CU-NEXT: S_WAITCNT_soft 16240595 ; GFX10CU-NEXT: S_WAITCNT_lds_direct596 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0597 ; GFX10CU-NEXT: S_ENDPGM 0598 ;599 ; GFX11WGP-LABEL: name: workgroup_one_as_acq_rel600 ; GFX11WGP: bb.0.entry:601 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015602 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0603 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec604 ; GFX11WGP-NEXT: S_ENDPGM 0605 ;606 ; GFX11CU-LABEL: name: workgroup_one_as_acq_rel607 ; GFX11CU: bb.0.entry:608 ; GFX11CU-NEXT: S_WAITCNT_soft 1015609 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0610 ; GFX11CU-NEXT: S_ENDPGM 0611entry:612 fence syncscope("workgroup-one-as") acq_rel613 ret void614}615 616define amdgpu_kernel void @workgroup_one_as_seq_cst() #0 {617 ; GFX6-LABEL: name: workgroup_one_as_seq_cst618 ; GFX6: bb.0.entry:619 ; GFX6-NEXT: S_ENDPGM 0620 ;621 ; GFX8-LABEL: name: workgroup_one_as_seq_cst622 ; GFX8: bb.0.entry:623 ; GFX8-NEXT: S_ENDPGM 0624 ;625 ; GFX10WGP-LABEL: name: workgroup_one_as_seq_cst626 ; GFX10WGP: bb.0.entry:627 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240628 ; GFX10WGP-NEXT: S_WAITCNT_lds_direct629 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0630 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec631 ; GFX10WGP-NEXT: S_ENDPGM 0632 ;633 ; GFX10CU-LABEL: name: workgroup_one_as_seq_cst634 ; GFX10CU: bb.0.entry:635 ; GFX10CU-NEXT: S_WAITCNT_soft 16240636 ; GFX10CU-NEXT: S_WAITCNT_lds_direct637 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0638 ; GFX10CU-NEXT: S_ENDPGM 0639 ;640 ; GFX11WGP-LABEL: name: workgroup_one_as_seq_cst641 ; GFX11WGP: bb.0.entry:642 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015643 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0644 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec645 ; GFX11WGP-NEXT: S_ENDPGM 0646 ;647 ; GFX11CU-LABEL: name: workgroup_one_as_seq_cst648 ; GFX11CU: bb.0.entry:649 ; GFX11CU-NEXT: S_WAITCNT_soft 1015650 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0651 ; GFX11CU-NEXT: S_ENDPGM 0652entry:653 fence syncscope("workgroup-one-as") seq_cst654 ret void655}656 657define amdgpu_kernel void @wavefront_one_as_acquire() #0 {658 ; GFX6-LABEL: name: wavefront_one_as_acquire659 ; GFX6: bb.0.entry:660 ; GFX6-NEXT: S_ENDPGM 0661 ;662 ; GFX8-LABEL: name: wavefront_one_as_acquire663 ; GFX8: bb.0.entry:664 ; GFX8-NEXT: S_ENDPGM 0665 ;666 ; GFX10WGP-LABEL: name: wavefront_one_as_acquire667 ; GFX10WGP: bb.0.entry:668 ; GFX10WGP-NEXT: S_ENDPGM 0669 ;670 ; GFX10CU-LABEL: name: wavefront_one_as_acquire671 ; GFX10CU: bb.0.entry:672 ; GFX10CU-NEXT: S_ENDPGM 0673 ;674 ; GFX11WGP-LABEL: name: wavefront_one_as_acquire675 ; GFX11WGP: bb.0.entry:676 ; GFX11WGP-NEXT: S_ENDPGM 0677 ;678 ; GFX11CU-LABEL: name: wavefront_one_as_acquire679 ; GFX11CU: bb.0.entry:680 ; GFX11CU-NEXT: S_ENDPGM 0681entry:682 fence syncscope("wavefront-one-as") acquire683 ret void684}685 686define amdgpu_kernel void @wavefront_one_as_release() #0 {687 ; GFX6-LABEL: name: wavefront_one_as_release688 ; GFX6: bb.0.entry:689 ; GFX6-NEXT: S_ENDPGM 0690 ;691 ; GFX8-LABEL: name: wavefront_one_as_release692 ; GFX8: bb.0.entry:693 ; GFX8-NEXT: S_ENDPGM 0694 ;695 ; GFX10WGP-LABEL: name: wavefront_one_as_release696 ; GFX10WGP: bb.0.entry:697 ; GFX10WGP-NEXT: S_ENDPGM 0698 ;699 ; GFX10CU-LABEL: name: wavefront_one_as_release700 ; GFX10CU: bb.0.entry:701 ; GFX10CU-NEXT: S_ENDPGM 0702 ;703 ; GFX11WGP-LABEL: name: wavefront_one_as_release704 ; GFX11WGP: bb.0.entry:705 ; GFX11WGP-NEXT: S_ENDPGM 0706 ;707 ; GFX11CU-LABEL: name: wavefront_one_as_release708 ; GFX11CU: bb.0.entry:709 ; GFX11CU-NEXT: S_ENDPGM 0710entry:711 fence syncscope("wavefront-one-as") release712 ret void713}714 715define amdgpu_kernel void @wavefront_one_as_acq_rel() #0 {716 ; GFX6-LABEL: name: wavefront_one_as_acq_rel717 ; GFX6: bb.0.entry:718 ; GFX6-NEXT: S_ENDPGM 0719 ;720 ; GFX8-LABEL: name: wavefront_one_as_acq_rel721 ; GFX8: bb.0.entry:722 ; GFX8-NEXT: S_ENDPGM 0723 ;724 ; GFX10WGP-LABEL: name: wavefront_one_as_acq_rel725 ; GFX10WGP: bb.0.entry:726 ; GFX10WGP-NEXT: S_ENDPGM 0727 ;728 ; GFX10CU-LABEL: name: wavefront_one_as_acq_rel729 ; GFX10CU: bb.0.entry:730 ; GFX10CU-NEXT: S_ENDPGM 0731 ;732 ; GFX11WGP-LABEL: name: wavefront_one_as_acq_rel733 ; GFX11WGP: bb.0.entry:734 ; GFX11WGP-NEXT: S_ENDPGM 0735 ;736 ; GFX11CU-LABEL: name: wavefront_one_as_acq_rel737 ; GFX11CU: bb.0.entry:738 ; GFX11CU-NEXT: S_ENDPGM 0739entry:740 fence syncscope("wavefront-one-as") acq_rel741 ret void742}743 744define amdgpu_kernel void @wavefront_one_as_seq_cst() #0 {745 ; GFX6-LABEL: name: wavefront_one_as_seq_cst746 ; GFX6: bb.0.entry:747 ; GFX6-NEXT: S_ENDPGM 0748 ;749 ; GFX8-LABEL: name: wavefront_one_as_seq_cst750 ; GFX8: bb.0.entry:751 ; GFX8-NEXT: S_ENDPGM 0752 ;753 ; GFX10WGP-LABEL: name: wavefront_one_as_seq_cst754 ; GFX10WGP: bb.0.entry:755 ; GFX10WGP-NEXT: S_ENDPGM 0756 ;757 ; GFX10CU-LABEL: name: wavefront_one_as_seq_cst758 ; GFX10CU: bb.0.entry:759 ; GFX10CU-NEXT: S_ENDPGM 0760 ;761 ; GFX11WGP-LABEL: name: wavefront_one_as_seq_cst762 ; GFX11WGP: bb.0.entry:763 ; GFX11WGP-NEXT: S_ENDPGM 0764 ;765 ; GFX11CU-LABEL: name: wavefront_one_as_seq_cst766 ; GFX11CU: bb.0.entry:767 ; GFX11CU-NEXT: S_ENDPGM 0768entry:769 fence syncscope("wavefront-one-as") seq_cst770 ret void771}772 773define amdgpu_kernel void @system_acquire() #0 {774 ; GFX6-LABEL: name: system_acquire775 ; GFX6: bb.0.entry:776 ; GFX6-NEXT: S_WAITCNT_soft 112777 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec778 ; GFX6-NEXT: S_ENDPGM 0779 ;780 ; GFX8-LABEL: name: system_acquire781 ; GFX8: bb.0.entry:782 ; GFX8-NEXT: S_WAITCNT_soft 112783 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec784 ; GFX8-NEXT: S_ENDPGM 0785 ;786 ; GFX10WGP-LABEL: name: system_acquire787 ; GFX10WGP: bb.0.entry:788 ; GFX10WGP-NEXT: S_WAITCNT_soft 112789 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0790 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec791 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec792 ; GFX10WGP-NEXT: S_ENDPGM 0793 ;794 ; GFX10CU-LABEL: name: system_acquire795 ; GFX10CU: bb.0.entry:796 ; GFX10CU-NEXT: S_WAITCNT_soft 112797 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0798 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec799 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec800 ; GFX10CU-NEXT: S_ENDPGM 0801 ;802 ; GFX11WGP-LABEL: name: system_acquire803 ; GFX11WGP: bb.0.entry:804 ; GFX11WGP-NEXT: S_WAITCNT_soft 7805 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0806 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec807 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec808 ; GFX11WGP-NEXT: S_ENDPGM 0809 ;810 ; GFX11CU-LABEL: name: system_acquire811 ; GFX11CU: bb.0.entry:812 ; GFX11CU-NEXT: S_WAITCNT_soft 7813 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0814 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec815 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec816 ; GFX11CU-NEXT: S_ENDPGM 0817entry:818 fence acquire819 ret void820}821 822define amdgpu_kernel void @system_release() #0 {823 ; GFX6-LABEL: name: system_release824 ; GFX6: bb.0.entry:825 ; GFX6-NEXT: S_WAITCNT_soft 112826 ; GFX6-NEXT: S_ENDPGM 0827 ;828 ; GFX8-LABEL: name: system_release829 ; GFX8: bb.0.entry:830 ; GFX8-NEXT: S_WAITCNT_soft 112831 ; GFX8-NEXT: S_ENDPGM 0832 ;833 ; GFX10WGP-LABEL: name: system_release834 ; GFX10WGP: bb.0.entry:835 ; GFX10WGP-NEXT: S_WAITCNT_soft 112836 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0837 ; GFX10WGP-NEXT: S_ENDPGM 0838 ;839 ; GFX10CU-LABEL: name: system_release840 ; GFX10CU: bb.0.entry:841 ; GFX10CU-NEXT: S_WAITCNT_soft 112842 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0843 ; GFX10CU-NEXT: S_ENDPGM 0844 ;845 ; GFX11WGP-LABEL: name: system_release846 ; GFX11WGP: bb.0.entry:847 ; GFX11WGP-NEXT: S_WAITCNT_soft 7848 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0849 ; GFX11WGP-NEXT: S_ENDPGM 0850 ;851 ; GFX11CU-LABEL: name: system_release852 ; GFX11CU: bb.0.entry:853 ; GFX11CU-NEXT: S_WAITCNT_soft 7854 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0855 ; GFX11CU-NEXT: S_ENDPGM 0856entry:857 fence release858 ret void859}860 861define amdgpu_kernel void @system_acq_rel() #0 {862 ; GFX6-LABEL: name: system_acq_rel863 ; GFX6: bb.0.entry:864 ; GFX6-NEXT: S_WAITCNT_soft 112865 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec866 ; GFX6-NEXT: S_ENDPGM 0867 ;868 ; GFX8-LABEL: name: system_acq_rel869 ; GFX8: bb.0.entry:870 ; GFX8-NEXT: S_WAITCNT_soft 112871 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec872 ; GFX8-NEXT: S_ENDPGM 0873 ;874 ; GFX10WGP-LABEL: name: system_acq_rel875 ; GFX10WGP: bb.0.entry:876 ; GFX10WGP-NEXT: S_WAITCNT_soft 112877 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0878 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec879 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec880 ; GFX10WGP-NEXT: S_ENDPGM 0881 ;882 ; GFX10CU-LABEL: name: system_acq_rel883 ; GFX10CU: bb.0.entry:884 ; GFX10CU-NEXT: S_WAITCNT_soft 112885 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0886 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec887 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec888 ; GFX10CU-NEXT: S_ENDPGM 0889 ;890 ; GFX11WGP-LABEL: name: system_acq_rel891 ; GFX11WGP: bb.0.entry:892 ; GFX11WGP-NEXT: S_WAITCNT_soft 7893 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0894 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec895 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec896 ; GFX11WGP-NEXT: S_ENDPGM 0897 ;898 ; GFX11CU-LABEL: name: system_acq_rel899 ; GFX11CU: bb.0.entry:900 ; GFX11CU-NEXT: S_WAITCNT_soft 7901 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0902 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec903 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec904 ; GFX11CU-NEXT: S_ENDPGM 0905entry:906 fence acq_rel907 ret void908}909 910define amdgpu_kernel void @system_seq_cst() #0 {911 ; GFX6-LABEL: name: system_seq_cst912 ; GFX6: bb.0.entry:913 ; GFX6-NEXT: S_WAITCNT_soft 112914 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec915 ; GFX6-NEXT: S_ENDPGM 0916 ;917 ; GFX8-LABEL: name: system_seq_cst918 ; GFX8: bb.0.entry:919 ; GFX8-NEXT: S_WAITCNT_soft 112920 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec921 ; GFX8-NEXT: S_ENDPGM 0922 ;923 ; GFX10WGP-LABEL: name: system_seq_cst924 ; GFX10WGP: bb.0.entry:925 ; GFX10WGP-NEXT: S_WAITCNT_soft 112926 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0927 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec928 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec929 ; GFX10WGP-NEXT: S_ENDPGM 0930 ;931 ; GFX10CU-LABEL: name: system_seq_cst932 ; GFX10CU: bb.0.entry:933 ; GFX10CU-NEXT: S_WAITCNT_soft 112934 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0935 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec936 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec937 ; GFX10CU-NEXT: S_ENDPGM 0938 ;939 ; GFX11WGP-LABEL: name: system_seq_cst940 ; GFX11WGP: bb.0.entry:941 ; GFX11WGP-NEXT: S_WAITCNT_soft 7942 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0943 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec944 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec945 ; GFX11WGP-NEXT: S_ENDPGM 0946 ;947 ; GFX11CU-LABEL: name: system_seq_cst948 ; GFX11CU: bb.0.entry:949 ; GFX11CU-NEXT: S_WAITCNT_soft 7950 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0951 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec952 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec953 ; GFX11CU-NEXT: S_ENDPGM 0954entry:955 fence seq_cst956 ret void957}958 959define amdgpu_kernel void @singlethread_acquire() #0 {960 ; GFX6-LABEL: name: singlethread_acquire961 ; GFX6: bb.0.entry:962 ; GFX6-NEXT: S_ENDPGM 0963 ;964 ; GFX8-LABEL: name: singlethread_acquire965 ; GFX8: bb.0.entry:966 ; GFX8-NEXT: S_ENDPGM 0967 ;968 ; GFX10WGP-LABEL: name: singlethread_acquire969 ; GFX10WGP: bb.0.entry:970 ; GFX10WGP-NEXT: S_ENDPGM 0971 ;972 ; GFX10CU-LABEL: name: singlethread_acquire973 ; GFX10CU: bb.0.entry:974 ; GFX10CU-NEXT: S_ENDPGM 0975 ;976 ; GFX11WGP-LABEL: name: singlethread_acquire977 ; GFX11WGP: bb.0.entry:978 ; GFX11WGP-NEXT: S_ENDPGM 0979 ;980 ; GFX11CU-LABEL: name: singlethread_acquire981 ; GFX11CU: bb.0.entry:982 ; GFX11CU-NEXT: S_ENDPGM 0983entry:984 fence syncscope("singlethread") acquire985 ret void986}987 988define amdgpu_kernel void @singlethread_release() #0 {989 ; GFX6-LABEL: name: singlethread_release990 ; GFX6: bb.0.entry:991 ; GFX6-NEXT: S_ENDPGM 0992 ;993 ; GFX8-LABEL: name: singlethread_release994 ; GFX8: bb.0.entry:995 ; GFX8-NEXT: S_ENDPGM 0996 ;997 ; GFX10WGP-LABEL: name: singlethread_release998 ; GFX10WGP: bb.0.entry:999 ; GFX10WGP-NEXT: S_ENDPGM 01000 ;1001 ; GFX10CU-LABEL: name: singlethread_release1002 ; GFX10CU: bb.0.entry:1003 ; GFX10CU-NEXT: S_ENDPGM 01004 ;1005 ; GFX11WGP-LABEL: name: singlethread_release1006 ; GFX11WGP: bb.0.entry:1007 ; GFX11WGP-NEXT: S_ENDPGM 01008 ;1009 ; GFX11CU-LABEL: name: singlethread_release1010 ; GFX11CU: bb.0.entry:1011 ; GFX11CU-NEXT: S_ENDPGM 01012entry:1013 fence syncscope("singlethread") release1014 ret void1015}1016 1017define amdgpu_kernel void @singlethread_acq_rel() #0 {1018 ; GFX6-LABEL: name: singlethread_acq_rel1019 ; GFX6: bb.0.entry:1020 ; GFX6-NEXT: S_ENDPGM 01021 ;1022 ; GFX8-LABEL: name: singlethread_acq_rel1023 ; GFX8: bb.0.entry:1024 ; GFX8-NEXT: S_ENDPGM 01025 ;1026 ; GFX10WGP-LABEL: name: singlethread_acq_rel1027 ; GFX10WGP: bb.0.entry:1028 ; GFX10WGP-NEXT: S_ENDPGM 01029 ;1030 ; GFX10CU-LABEL: name: singlethread_acq_rel1031 ; GFX10CU: bb.0.entry:1032 ; GFX10CU-NEXT: S_ENDPGM 01033 ;1034 ; GFX11WGP-LABEL: name: singlethread_acq_rel1035 ; GFX11WGP: bb.0.entry:1036 ; GFX11WGP-NEXT: S_ENDPGM 01037 ;1038 ; GFX11CU-LABEL: name: singlethread_acq_rel1039 ; GFX11CU: bb.0.entry:1040 ; GFX11CU-NEXT: S_ENDPGM 01041entry:1042 fence syncscope("singlethread") acq_rel1043 ret void1044}1045 1046define amdgpu_kernel void @singlethread_seq_cst() #0 {1047 ; GFX6-LABEL: name: singlethread_seq_cst1048 ; GFX6: bb.0.entry:1049 ; GFX6-NEXT: S_ENDPGM 01050 ;1051 ; GFX8-LABEL: name: singlethread_seq_cst1052 ; GFX8: bb.0.entry:1053 ; GFX8-NEXT: S_ENDPGM 01054 ;1055 ; GFX10WGP-LABEL: name: singlethread_seq_cst1056 ; GFX10WGP: bb.0.entry:1057 ; GFX10WGP-NEXT: S_ENDPGM 01058 ;1059 ; GFX10CU-LABEL: name: singlethread_seq_cst1060 ; GFX10CU: bb.0.entry:1061 ; GFX10CU-NEXT: S_ENDPGM 01062 ;1063 ; GFX11WGP-LABEL: name: singlethread_seq_cst1064 ; GFX11WGP: bb.0.entry:1065 ; GFX11WGP-NEXT: S_ENDPGM 01066 ;1067 ; GFX11CU-LABEL: name: singlethread_seq_cst1068 ; GFX11CU: bb.0.entry:1069 ; GFX11CU-NEXT: S_ENDPGM 01070entry:1071 fence syncscope("singlethread") seq_cst1072 ret void1073}1074 1075define amdgpu_kernel void @agent_acquire() #0 {1076 ; GFX6-LABEL: name: agent_acquire1077 ; GFX6: bb.0.entry:1078 ; GFX6-NEXT: S_WAITCNT_soft 1121079 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec1080 ; GFX6-NEXT: S_ENDPGM 01081 ;1082 ; GFX8-LABEL: name: agent_acquire1083 ; GFX8: bb.0.entry:1084 ; GFX8-NEXT: S_WAITCNT_soft 1121085 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec1086 ; GFX8-NEXT: S_ENDPGM 01087 ;1088 ; GFX10WGP-LABEL: name: agent_acquire1089 ; GFX10WGP: bb.0.entry:1090 ; GFX10WGP-NEXT: S_WAITCNT_soft 1121091 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01092 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec1093 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec1094 ; GFX10WGP-NEXT: S_ENDPGM 01095 ;1096 ; GFX10CU-LABEL: name: agent_acquire1097 ; GFX10CU: bb.0.entry:1098 ; GFX10CU-NEXT: S_WAITCNT_soft 1121099 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01100 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec1101 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec1102 ; GFX10CU-NEXT: S_ENDPGM 01103 ;1104 ; GFX11WGP-LABEL: name: agent_acquire1105 ; GFX11WGP: bb.0.entry:1106 ; GFX11WGP-NEXT: S_WAITCNT_soft 71107 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01108 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec1109 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec1110 ; GFX11WGP-NEXT: S_ENDPGM 01111 ;1112 ; GFX11CU-LABEL: name: agent_acquire1113 ; GFX11CU: bb.0.entry:1114 ; GFX11CU-NEXT: S_WAITCNT_soft 71115 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01116 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec1117 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec1118 ; GFX11CU-NEXT: S_ENDPGM 01119entry:1120 fence syncscope("agent") acquire1121 ret void1122}1123 1124define amdgpu_kernel void @agent_release() #0 {1125 ; GFX6-LABEL: name: agent_release1126 ; GFX6: bb.0.entry:1127 ; GFX6-NEXT: S_WAITCNT_soft 1121128 ; GFX6-NEXT: S_ENDPGM 01129 ;1130 ; GFX8-LABEL: name: agent_release1131 ; GFX8: bb.0.entry:1132 ; GFX8-NEXT: S_WAITCNT_soft 1121133 ; GFX8-NEXT: S_ENDPGM 01134 ;1135 ; GFX10WGP-LABEL: name: agent_release1136 ; GFX10WGP: bb.0.entry:1137 ; GFX10WGP-NEXT: S_WAITCNT_soft 1121138 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01139 ; GFX10WGP-NEXT: S_ENDPGM 01140 ;1141 ; GFX10CU-LABEL: name: agent_release1142 ; GFX10CU: bb.0.entry:1143 ; GFX10CU-NEXT: S_WAITCNT_soft 1121144 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01145 ; GFX10CU-NEXT: S_ENDPGM 01146 ;1147 ; GFX11WGP-LABEL: name: agent_release1148 ; GFX11WGP: bb.0.entry:1149 ; GFX11WGP-NEXT: S_WAITCNT_soft 71150 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01151 ; GFX11WGP-NEXT: S_ENDPGM 01152 ;1153 ; GFX11CU-LABEL: name: agent_release1154 ; GFX11CU: bb.0.entry:1155 ; GFX11CU-NEXT: S_WAITCNT_soft 71156 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01157 ; GFX11CU-NEXT: S_ENDPGM 01158entry:1159 fence syncscope("agent") release1160 ret void1161}1162 1163define amdgpu_kernel void @agent_acq_rel() #0 {1164 ; GFX6-LABEL: name: agent_acq_rel1165 ; GFX6: bb.0.entry:1166 ; GFX6-NEXT: S_WAITCNT_soft 1121167 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec1168 ; GFX6-NEXT: S_ENDPGM 01169 ;1170 ; GFX8-LABEL: name: agent_acq_rel1171 ; GFX8: bb.0.entry:1172 ; GFX8-NEXT: S_WAITCNT_soft 1121173 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec1174 ; GFX8-NEXT: S_ENDPGM 01175 ;1176 ; GFX10WGP-LABEL: name: agent_acq_rel1177 ; GFX10WGP: bb.0.entry:1178 ; GFX10WGP-NEXT: S_WAITCNT_soft 1121179 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01180 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec1181 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec1182 ; GFX10WGP-NEXT: S_ENDPGM 01183 ;1184 ; GFX10CU-LABEL: name: agent_acq_rel1185 ; GFX10CU: bb.0.entry:1186 ; GFX10CU-NEXT: S_WAITCNT_soft 1121187 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01188 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec1189 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec1190 ; GFX10CU-NEXT: S_ENDPGM 01191 ;1192 ; GFX11WGP-LABEL: name: agent_acq_rel1193 ; GFX11WGP: bb.0.entry:1194 ; GFX11WGP-NEXT: S_WAITCNT_soft 71195 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01196 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec1197 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec1198 ; GFX11WGP-NEXT: S_ENDPGM 01199 ;1200 ; GFX11CU-LABEL: name: agent_acq_rel1201 ; GFX11CU: bb.0.entry:1202 ; GFX11CU-NEXT: S_WAITCNT_soft 71203 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01204 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec1205 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec1206 ; GFX11CU-NEXT: S_ENDPGM 01207entry:1208 fence syncscope("agent") acq_rel1209 ret void1210}1211 1212define amdgpu_kernel void @agent_seq_cst() #0 {1213 ; GFX6-LABEL: name: agent_seq_cst1214 ; GFX6: bb.0.entry:1215 ; GFX6-NEXT: S_WAITCNT_soft 1121216 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec1217 ; GFX6-NEXT: S_ENDPGM 01218 ;1219 ; GFX8-LABEL: name: agent_seq_cst1220 ; GFX8: bb.0.entry:1221 ; GFX8-NEXT: S_WAITCNT_soft 1121222 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec1223 ; GFX8-NEXT: S_ENDPGM 01224 ;1225 ; GFX10WGP-LABEL: name: agent_seq_cst1226 ; GFX10WGP: bb.0.entry:1227 ; GFX10WGP-NEXT: S_WAITCNT_soft 1121228 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01229 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec1230 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec1231 ; GFX10WGP-NEXT: S_ENDPGM 01232 ;1233 ; GFX10CU-LABEL: name: agent_seq_cst1234 ; GFX10CU: bb.0.entry:1235 ; GFX10CU-NEXT: S_WAITCNT_soft 1121236 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01237 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec1238 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec1239 ; GFX10CU-NEXT: S_ENDPGM 01240 ;1241 ; GFX11WGP-LABEL: name: agent_seq_cst1242 ; GFX11WGP: bb.0.entry:1243 ; GFX11WGP-NEXT: S_WAITCNT_soft 71244 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01245 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec1246 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec1247 ; GFX11WGP-NEXT: S_ENDPGM 01248 ;1249 ; GFX11CU-LABEL: name: agent_seq_cst1250 ; GFX11CU: bb.0.entry:1251 ; GFX11CU-NEXT: S_WAITCNT_soft 71252 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01253 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec1254 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec1255 ; GFX11CU-NEXT: S_ENDPGM 01256entry:1257 fence syncscope("agent") seq_cst1258 ret void1259}1260 1261define amdgpu_kernel void @workgroup_acquire() #0 {1262 ; GFX6-LABEL: name: workgroup_acquire1263 ; GFX6: bb.0.entry:1264 ; GFX6-NEXT: S_WAITCNT_soft 1271265 ; GFX6-NEXT: S_ENDPGM 01266 ;1267 ; GFX8-LABEL: name: workgroup_acquire1268 ; GFX8: bb.0.entry:1269 ; GFX8-NEXT: S_WAITCNT_soft 1271270 ; GFX8-NEXT: S_ENDPGM 01271 ;1272 ; GFX10WGP-LABEL: name: workgroup_acquire1273 ; GFX10WGP: bb.0.entry:1274 ; GFX10WGP-NEXT: S_WAITCNT_soft 1121275 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01276 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec1277 ; GFX10WGP-NEXT: S_ENDPGM 01278 ;1279 ; GFX10CU-LABEL: name: workgroup_acquire1280 ; GFX10CU: bb.0.entry:1281 ; GFX10CU-NEXT: S_WAITCNT_soft 492791282 ; GFX10CU-NEXT: S_ENDPGM 01283 ;1284 ; GFX11WGP-LABEL: name: workgroup_acquire1285 ; GFX11WGP: bb.0.entry:1286 ; GFX11WGP-NEXT: S_WAITCNT_soft 71287 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01288 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec1289 ; GFX11WGP-NEXT: S_ENDPGM 01290 ;1291 ; GFX11CU-LABEL: name: workgroup_acquire1292 ; GFX11CU: bb.0.entry:1293 ; GFX11CU-NEXT: S_WAITCNT_soft 645191294 ; GFX11CU-NEXT: S_ENDPGM 01295entry:1296 fence syncscope("workgroup") acquire1297 ret void1298}1299 1300define amdgpu_kernel void @workgroup_release() #0 {1301 ; GFX6-LABEL: name: workgroup_release1302 ; GFX6: bb.0.entry:1303 ; GFX6-NEXT: S_WAITCNT_soft 1271304 ; GFX6-NEXT: S_ENDPGM 01305 ;1306 ; GFX8-LABEL: name: workgroup_release1307 ; GFX8: bb.0.entry:1308 ; GFX8-NEXT: S_WAITCNT_soft 1271309 ; GFX8-NEXT: S_ENDPGM 01310 ;1311 ; GFX10WGP-LABEL: name: workgroup_release1312 ; GFX10WGP: bb.0.entry:1313 ; GFX10WGP-NEXT: S_WAITCNT_soft 1121314 ; GFX10WGP-NEXT: S_WAITCNT_lds_direct1315 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01316 ; GFX10WGP-NEXT: S_ENDPGM 01317 ;1318 ; GFX10CU-LABEL: name: workgroup_release1319 ; GFX10CU: bb.0.entry:1320 ; GFX10CU-NEXT: S_WAITCNT_soft 1121321 ; GFX10CU-NEXT: S_WAITCNT_lds_direct1322 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01323 ; GFX10CU-NEXT: S_ENDPGM 01324 ;1325 ; GFX11WGP-LABEL: name: workgroup_release1326 ; GFX11WGP: bb.0.entry:1327 ; GFX11WGP-NEXT: S_WAITCNT_soft 71328 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01329 ; GFX11WGP-NEXT: S_ENDPGM 01330 ;1331 ; GFX11CU-LABEL: name: workgroup_release1332 ; GFX11CU: bb.0.entry:1333 ; GFX11CU-NEXT: S_WAITCNT_soft 71334 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01335 ; GFX11CU-NEXT: S_ENDPGM 01336entry:1337 fence syncscope("workgroup") release1338 ret void1339}1340 1341define amdgpu_kernel void @workgroup_acq_rel() #0 {1342 ; GFX6-LABEL: name: workgroup_acq_rel1343 ; GFX6: bb.0.entry:1344 ; GFX6-NEXT: S_WAITCNT_soft 1271345 ; GFX6-NEXT: S_ENDPGM 01346 ;1347 ; GFX8-LABEL: name: workgroup_acq_rel1348 ; GFX8: bb.0.entry:1349 ; GFX8-NEXT: S_WAITCNT_soft 1271350 ; GFX8-NEXT: S_ENDPGM 01351 ;1352 ; GFX10WGP-LABEL: name: workgroup_acq_rel1353 ; GFX10WGP: bb.0.entry:1354 ; GFX10WGP-NEXT: S_WAITCNT_soft 1121355 ; GFX10WGP-NEXT: S_WAITCNT_lds_direct1356 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01357 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec1358 ; GFX10WGP-NEXT: S_ENDPGM 01359 ;1360 ; GFX10CU-LABEL: name: workgroup_acq_rel1361 ; GFX10CU: bb.0.entry:1362 ; GFX10CU-NEXT: S_WAITCNT_soft 1121363 ; GFX10CU-NEXT: S_WAITCNT_lds_direct1364 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01365 ; GFX10CU-NEXT: S_ENDPGM 01366 ;1367 ; GFX11WGP-LABEL: name: workgroup_acq_rel1368 ; GFX11WGP: bb.0.entry:1369 ; GFX11WGP-NEXT: S_WAITCNT_soft 71370 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01371 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec1372 ; GFX11WGP-NEXT: S_ENDPGM 01373 ;1374 ; GFX11CU-LABEL: name: workgroup_acq_rel1375 ; GFX11CU: bb.0.entry:1376 ; GFX11CU-NEXT: S_WAITCNT_soft 71377 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01378 ; GFX11CU-NEXT: S_ENDPGM 01379entry:1380 fence syncscope("workgroup") acq_rel1381 ret void1382}1383 1384define amdgpu_kernel void @workgroup_seq_cst() #0 {1385 ; GFX6-LABEL: name: workgroup_seq_cst1386 ; GFX6: bb.0.entry:1387 ; GFX6-NEXT: S_WAITCNT_soft 1271388 ; GFX6-NEXT: S_ENDPGM 01389 ;1390 ; GFX8-LABEL: name: workgroup_seq_cst1391 ; GFX8: bb.0.entry:1392 ; GFX8-NEXT: S_WAITCNT_soft 1271393 ; GFX8-NEXT: S_ENDPGM 01394 ;1395 ; GFX10WGP-LABEL: name: workgroup_seq_cst1396 ; GFX10WGP: bb.0.entry:1397 ; GFX10WGP-NEXT: S_WAITCNT_soft 1121398 ; GFX10WGP-NEXT: S_WAITCNT_lds_direct1399 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01400 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec1401 ; GFX10WGP-NEXT: S_ENDPGM 01402 ;1403 ; GFX10CU-LABEL: name: workgroup_seq_cst1404 ; GFX10CU: bb.0.entry:1405 ; GFX10CU-NEXT: S_WAITCNT_soft 1121406 ; GFX10CU-NEXT: S_WAITCNT_lds_direct1407 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01408 ; GFX10CU-NEXT: S_ENDPGM 01409 ;1410 ; GFX11WGP-LABEL: name: workgroup_seq_cst1411 ; GFX11WGP: bb.0.entry:1412 ; GFX11WGP-NEXT: S_WAITCNT_soft 71413 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01414 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec1415 ; GFX11WGP-NEXT: S_ENDPGM 01416 ;1417 ; GFX11CU-LABEL: name: workgroup_seq_cst1418 ; GFX11CU: bb.0.entry:1419 ; GFX11CU-NEXT: S_WAITCNT_soft 71420 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 01421 ; GFX11CU-NEXT: S_ENDPGM 01422entry:1423 fence syncscope("workgroup") seq_cst1424 ret void1425}1426 1427define amdgpu_kernel void @wavefront_acquire() #0 {1428 ; GFX6-LABEL: name: wavefront_acquire1429 ; GFX6: bb.0.entry:1430 ; GFX6-NEXT: S_ENDPGM 01431 ;1432 ; GFX8-LABEL: name: wavefront_acquire1433 ; GFX8: bb.0.entry:1434 ; GFX8-NEXT: S_ENDPGM 01435 ;1436 ; GFX10WGP-LABEL: name: wavefront_acquire1437 ; GFX10WGP: bb.0.entry:1438 ; GFX10WGP-NEXT: S_ENDPGM 01439 ;1440 ; GFX10CU-LABEL: name: wavefront_acquire1441 ; GFX10CU: bb.0.entry:1442 ; GFX10CU-NEXT: S_ENDPGM 01443 ;1444 ; GFX11WGP-LABEL: name: wavefront_acquire1445 ; GFX11WGP: bb.0.entry:1446 ; GFX11WGP-NEXT: S_ENDPGM 01447 ;1448 ; GFX11CU-LABEL: name: wavefront_acquire1449 ; GFX11CU: bb.0.entry:1450 ; GFX11CU-NEXT: S_ENDPGM 01451entry:1452 fence syncscope("wavefront") acquire1453 ret void1454}1455 1456define amdgpu_kernel void @wavefront_release() #0 {1457 ; GFX6-LABEL: name: wavefront_release1458 ; GFX6: bb.0.entry:1459 ; GFX6-NEXT: S_ENDPGM 01460 ;1461 ; GFX8-LABEL: name: wavefront_release1462 ; GFX8: bb.0.entry:1463 ; GFX8-NEXT: S_ENDPGM 01464 ;1465 ; GFX10WGP-LABEL: name: wavefront_release1466 ; GFX10WGP: bb.0.entry:1467 ; GFX10WGP-NEXT: S_ENDPGM 01468 ;1469 ; GFX10CU-LABEL: name: wavefront_release1470 ; GFX10CU: bb.0.entry:1471 ; GFX10CU-NEXT: S_ENDPGM 01472 ;1473 ; GFX11WGP-LABEL: name: wavefront_release1474 ; GFX11WGP: bb.0.entry:1475 ; GFX11WGP-NEXT: S_ENDPGM 01476 ;1477 ; GFX11CU-LABEL: name: wavefront_release1478 ; GFX11CU: bb.0.entry:1479 ; GFX11CU-NEXT: S_ENDPGM 01480entry:1481 fence syncscope("wavefront") release1482 ret void1483}1484 1485define amdgpu_kernel void @wavefront_acq_rel() #0 {1486 ; GFX6-LABEL: name: wavefront_acq_rel1487 ; GFX6: bb.0.entry:1488 ; GFX6-NEXT: S_ENDPGM 01489 ;1490 ; GFX8-LABEL: name: wavefront_acq_rel1491 ; GFX8: bb.0.entry:1492 ; GFX8-NEXT: S_ENDPGM 01493 ;1494 ; GFX10WGP-LABEL: name: wavefront_acq_rel1495 ; GFX10WGP: bb.0.entry:1496 ; GFX10WGP-NEXT: S_ENDPGM 01497 ;1498 ; GFX10CU-LABEL: name: wavefront_acq_rel1499 ; GFX10CU: bb.0.entry:1500 ; GFX10CU-NEXT: S_ENDPGM 01501 ;1502 ; GFX11WGP-LABEL: name: wavefront_acq_rel1503 ; GFX11WGP: bb.0.entry:1504 ; GFX11WGP-NEXT: S_ENDPGM 01505 ;1506 ; GFX11CU-LABEL: name: wavefront_acq_rel1507 ; GFX11CU: bb.0.entry:1508 ; GFX11CU-NEXT: S_ENDPGM 01509entry:1510 fence syncscope("wavefront") acq_rel1511 ret void1512}1513 1514define amdgpu_kernel void @wavefront_seq_cst() #0 {1515 ; GFX6-LABEL: name: wavefront_seq_cst1516 ; GFX6: bb.0.entry:1517 ; GFX6-NEXT: S_ENDPGM 01518 ;1519 ; GFX8-LABEL: name: wavefront_seq_cst1520 ; GFX8: bb.0.entry:1521 ; GFX8-NEXT: S_ENDPGM 01522 ;1523 ; GFX10WGP-LABEL: name: wavefront_seq_cst1524 ; GFX10WGP: bb.0.entry:1525 ; GFX10WGP-NEXT: S_ENDPGM 01526 ;1527 ; GFX10CU-LABEL: name: wavefront_seq_cst1528 ; GFX10CU: bb.0.entry:1529 ; GFX10CU-NEXT: S_ENDPGM 01530 ;1531 ; GFX11WGP-LABEL: name: wavefront_seq_cst1532 ; GFX11WGP: bb.0.entry:1533 ; GFX11WGP-NEXT: S_ENDPGM 01534 ;1535 ; GFX11CU-LABEL: name: wavefront_seq_cst1536 ; GFX11CU: bb.0.entry:1537 ; GFX11CU-NEXT: S_ENDPGM 01538entry:1539 fence syncscope("wavefront") seq_cst1540 ret void1541}1542 1543attributes #0 = { "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" }1544