1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 4 2; RUN: llc -global-isel -stop-after=si-memory-legalizer -mtriple=amdgcn-amd- -mcpu=gfx600 < %s | FileCheck -check-prefix=GFX6 %s 3; RUN: llc -global-isel -stop-after=si-memory-legalizer -mtriple=amdgcn-amd- -mcpu=gfx803 < %s | FileCheck -check-prefix=GFX8 %s 4; RUN: llc -global-isel -stop-after=si-memory-legalizer -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 < %s | FileCheck -check-prefix=GFX8 %s 5; RUN: llc -global-isel -stop-after=si-memory-legalizer -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 < %s | FileCheck -check-prefix=GFX10WGP %s 6; RUN: llc -global-isel -stop-after=si-memory-legalizer -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -mattr=+cumode < %s | FileCheck -check-prefix=GFX10CU %s 7; RUN: llc -global-isel -stop-after=si-memory-legalizer -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 < %s | FileCheck -check-prefix=GFX11WGP %s 8; RUN: llc -global-isel -stop-after=si-memory-legalizer -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+cumode < %s | FileCheck -check-prefix=GFX11CU %s 9 10; Note: we use MIR test checks + stop after legalizer to prevent 11; tests from being optimized out. 12 13define amdgpu_kernel void @system_one_as_acquire() #0 { 14 ; GFX6-LABEL: name: system_one_as_acquire 15 ; GFX6: bb.0.entry: 16 ; GFX6-NEXT: S_WAITCNT_soft 3952 17 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec 18 ; GFX6-NEXT: S_ENDPGM 0 19 ; 20 ; GFX8-LABEL: name: system_one_as_acquire 21 ; GFX8: bb.0.entry: 22 ; GFX8-NEXT: S_WAITCNT_soft 3952 23 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec 24 ; GFX8-NEXT: S_ENDPGM 0 25 ; 26 ; GFX10WGP-LABEL: name: system_one_as_acquire 27 ; GFX10WGP: bb.0.entry: 28 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240 29 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 30 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec 31 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec 32 ; GFX10WGP-NEXT: S_ENDPGM 0 33 ; 34 ; GFX10CU-LABEL: name: system_one_as_acquire 35 ; GFX10CU: bb.0.entry: 36 ; GFX10CU-NEXT: S_WAITCNT_soft 16240 37 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 38 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec 39 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec 40 ; GFX10CU-NEXT: S_ENDPGM 0 41 ; 42 ; GFX11WGP-LABEL: name: system_one_as_acquire 43 ; GFX11WGP: bb.0.entry: 44 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015 45 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 46 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec 47 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec 48 ; GFX11WGP-NEXT: S_ENDPGM 0 49 ; 50 ; GFX11CU-LABEL: name: system_one_as_acquire 51 ; GFX11CU: bb.0.entry: 52 ; GFX11CU-NEXT: S_WAITCNT_soft 1015 53 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 54 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec 55 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec 56 ; GFX11CU-NEXT: S_ENDPGM 0 57entry: 58 fence syncscope("one-as") acquire 59 ret void 60} 61 62define amdgpu_kernel void @system_one_as_release() #0 { 63 ; GFX6-LABEL: name: system_one_as_release 64 ; GFX6: bb.0.entry: 65 ; GFX6-NEXT: S_WAITCNT_soft 3952 66 ; GFX6-NEXT: S_ENDPGM 0 67 ; 68 ; GFX8-LABEL: name: system_one_as_release 69 ; GFX8: bb.0.entry: 70 ; GFX8-NEXT: S_WAITCNT_soft 3952 71 ; GFX8-NEXT: S_ENDPGM 0 72 ; 73 ; GFX10WGP-LABEL: name: system_one_as_release 74 ; GFX10WGP: bb.0.entry: 75 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240 76 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 77 ; GFX10WGP-NEXT: S_ENDPGM 0 78 ; 79 ; GFX10CU-LABEL: name: system_one_as_release 80 ; GFX10CU: bb.0.entry: 81 ; GFX10CU-NEXT: S_WAITCNT_soft 16240 82 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 83 ; GFX10CU-NEXT: S_ENDPGM 0 84 ; 85 ; GFX11WGP-LABEL: name: system_one_as_release 86 ; GFX11WGP: bb.0.entry: 87 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015 88 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 89 ; GFX11WGP-NEXT: S_ENDPGM 0 90 ; 91 ; GFX11CU-LABEL: name: system_one_as_release 92 ; GFX11CU: bb.0.entry: 93 ; GFX11CU-NEXT: S_WAITCNT_soft 1015 94 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 95 ; GFX11CU-NEXT: S_ENDPGM 0 96entry: 97 fence syncscope("one-as") release 98 ret void 99} 100 101define amdgpu_kernel void @system_one_as_acq_rel() #0 { 102 ; GFX6-LABEL: name: system_one_as_acq_rel 103 ; GFX6: bb.0.entry: 104 ; GFX6-NEXT: S_WAITCNT_soft 3952 105 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec 106 ; GFX6-NEXT: S_ENDPGM 0 107 ; 108 ; GFX8-LABEL: name: system_one_as_acq_rel 109 ; GFX8: bb.0.entry: 110 ; GFX8-NEXT: S_WAITCNT_soft 3952 111 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec 112 ; GFX8-NEXT: S_ENDPGM 0 113 ; 114 ; GFX10WGP-LABEL: name: system_one_as_acq_rel 115 ; GFX10WGP: bb.0.entry: 116 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240 117 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 118 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec 119 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec 120 ; GFX10WGP-NEXT: S_ENDPGM 0 121 ; 122 ; GFX10CU-LABEL: name: system_one_as_acq_rel 123 ; GFX10CU: bb.0.entry: 124 ; GFX10CU-NEXT: S_WAITCNT_soft 16240 125 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 126 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec 127 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec 128 ; GFX10CU-NEXT: S_ENDPGM 0 129 ; 130 ; GFX11WGP-LABEL: name: system_one_as_acq_rel 131 ; GFX11WGP: bb.0.entry: 132 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015 133 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 134 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec 135 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec 136 ; GFX11WGP-NEXT: S_ENDPGM 0 137 ; 138 ; GFX11CU-LABEL: name: system_one_as_acq_rel 139 ; GFX11CU: bb.0.entry: 140 ; GFX11CU-NEXT: S_WAITCNT_soft 1015 141 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 142 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec 143 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec 144 ; GFX11CU-NEXT: S_ENDPGM 0 145entry: 146 fence syncscope("one-as") acq_rel 147 ret void 148} 149 150define amdgpu_kernel void @system_one_as_seq_cst() #0 { 151 ; GFX6-LABEL: name: system_one_as_seq_cst 152 ; GFX6: bb.0.entry: 153 ; GFX6-NEXT: S_WAITCNT_soft 3952 154 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec 155 ; GFX6-NEXT: S_ENDPGM 0 156 ; 157 ; GFX8-LABEL: name: system_one_as_seq_cst 158 ; GFX8: bb.0.entry: 159 ; GFX8-NEXT: S_WAITCNT_soft 3952 160 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec 161 ; GFX8-NEXT: S_ENDPGM 0 162 ; 163 ; GFX10WGP-LABEL: name: system_one_as_seq_cst 164 ; GFX10WGP: bb.0.entry: 165 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240 166 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 167 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec 168 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec 169 ; GFX10WGP-NEXT: S_ENDPGM 0 170 ; 171 ; GFX10CU-LABEL: name: system_one_as_seq_cst 172 ; GFX10CU: bb.0.entry: 173 ; GFX10CU-NEXT: S_WAITCNT_soft 16240 174 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 175 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec 176 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec 177 ; GFX10CU-NEXT: S_ENDPGM 0 178 ; 179 ; GFX11WGP-LABEL: name: system_one_as_seq_cst 180 ; GFX11WGP: bb.0.entry: 181 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015 182 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 183 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec 184 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec 185 ; GFX11WGP-NEXT: S_ENDPGM 0 186 ; 187 ; GFX11CU-LABEL: name: system_one_as_seq_cst 188 ; GFX11CU: bb.0.entry: 189 ; GFX11CU-NEXT: S_WAITCNT_soft 1015 190 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 191 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec 192 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec 193 ; GFX11CU-NEXT: S_ENDPGM 0 194entry: 195 fence syncscope("one-as") seq_cst 196 ret void 197} 198 199define amdgpu_kernel void @singlethread_one_as_acquire() #0 { 200 ; GFX6-LABEL: name: singlethread_one_as_acquire 201 ; GFX6: bb.0.entry: 202 ; GFX6-NEXT: S_ENDPGM 0 203 ; 204 ; GFX8-LABEL: name: singlethread_one_as_acquire 205 ; GFX8: bb.0.entry: 206 ; GFX8-NEXT: S_ENDPGM 0 207 ; 208 ; GFX10WGP-LABEL: name: singlethread_one_as_acquire 209 ; GFX10WGP: bb.0.entry: 210 ; GFX10WGP-NEXT: S_ENDPGM 0 211 ; 212 ; GFX10CU-LABEL: name: singlethread_one_as_acquire 213 ; GFX10CU: bb.0.entry: 214 ; GFX10CU-NEXT: S_ENDPGM 0 215 ; 216 ; GFX11WGP-LABEL: name: singlethread_one_as_acquire 217 ; GFX11WGP: bb.0.entry: 218 ; GFX11WGP-NEXT: S_ENDPGM 0 219 ; 220 ; GFX11CU-LABEL: name: singlethread_one_as_acquire 221 ; GFX11CU: bb.0.entry: 222 ; GFX11CU-NEXT: S_ENDPGM 0 223entry: 224 fence syncscope("singlethread-one-as") acquire 225 ret void 226} 227 228define amdgpu_kernel void @singlethread_one_as_release() #0 { 229 ; GFX6-LABEL: name: singlethread_one_as_release 230 ; GFX6: bb.0.entry: 231 ; GFX6-NEXT: S_ENDPGM 0 232 ; 233 ; GFX8-LABEL: name: singlethread_one_as_release 234 ; GFX8: bb.0.entry: 235 ; GFX8-NEXT: S_ENDPGM 0 236 ; 237 ; GFX10WGP-LABEL: name: singlethread_one_as_release 238 ; GFX10WGP: bb.0.entry: 239 ; GFX10WGP-NEXT: S_ENDPGM 0 240 ; 241 ; GFX10CU-LABEL: name: singlethread_one_as_release 242 ; GFX10CU: bb.0.entry: 243 ; GFX10CU-NEXT: S_ENDPGM 0 244 ; 245 ; GFX11WGP-LABEL: name: singlethread_one_as_release 246 ; GFX11WGP: bb.0.entry: 247 ; GFX11WGP-NEXT: S_ENDPGM 0 248 ; 249 ; GFX11CU-LABEL: name: singlethread_one_as_release 250 ; GFX11CU: bb.0.entry: 251 ; GFX11CU-NEXT: S_ENDPGM 0 252entry: 253 fence syncscope("singlethread-one-as") release 254 ret void 255} 256 257define amdgpu_kernel void @singlethread_one_as_acq_rel() #0 { 258 ; GFX6-LABEL: name: singlethread_one_as_acq_rel 259 ; GFX6: bb.0.entry: 260 ; GFX6-NEXT: S_ENDPGM 0 261 ; 262 ; GFX8-LABEL: name: singlethread_one_as_acq_rel 263 ; GFX8: bb.0.entry: 264 ; GFX8-NEXT: S_ENDPGM 0 265 ; 266 ; GFX10WGP-LABEL: name: singlethread_one_as_acq_rel 267 ; GFX10WGP: bb.0.entry: 268 ; GFX10WGP-NEXT: S_ENDPGM 0 269 ; 270 ; GFX10CU-LABEL: name: singlethread_one_as_acq_rel 271 ; GFX10CU: bb.0.entry: 272 ; GFX10CU-NEXT: S_ENDPGM 0 273 ; 274 ; GFX11WGP-LABEL: name: singlethread_one_as_acq_rel 275 ; GFX11WGP: bb.0.entry: 276 ; GFX11WGP-NEXT: S_ENDPGM 0 277 ; 278 ; GFX11CU-LABEL: name: singlethread_one_as_acq_rel 279 ; GFX11CU: bb.0.entry: 280 ; GFX11CU-NEXT: S_ENDPGM 0 281entry: 282 fence syncscope("singlethread-one-as") acq_rel 283 ret void 284} 285 286define amdgpu_kernel void @singlethread_one_as_seq_cst() #0 { 287 ; GFX6-LABEL: name: singlethread_one_as_seq_cst 288 ; GFX6: bb.0.entry: 289 ; GFX6-NEXT: S_ENDPGM 0 290 ; 291 ; GFX8-LABEL: name: singlethread_one_as_seq_cst 292 ; GFX8: bb.0.entry: 293 ; GFX8-NEXT: S_ENDPGM 0 294 ; 295 ; GFX10WGP-LABEL: name: singlethread_one_as_seq_cst 296 ; GFX10WGP: bb.0.entry: 297 ; GFX10WGP-NEXT: S_ENDPGM 0 298 ; 299 ; GFX10CU-LABEL: name: singlethread_one_as_seq_cst 300 ; GFX10CU: bb.0.entry: 301 ; GFX10CU-NEXT: S_ENDPGM 0 302 ; 303 ; GFX11WGP-LABEL: name: singlethread_one_as_seq_cst 304 ; GFX11WGP: bb.0.entry: 305 ; GFX11WGP-NEXT: S_ENDPGM 0 306 ; 307 ; GFX11CU-LABEL: name: singlethread_one_as_seq_cst 308 ; GFX11CU: bb.0.entry: 309 ; GFX11CU-NEXT: S_ENDPGM 0 310entry: 311 fence syncscope("singlethread-one-as") seq_cst 312 ret void 313} 314 315define amdgpu_kernel void @agent_one_as_acquire() #0 { 316 ; GFX6-LABEL: name: agent_one_as_acquire 317 ; GFX6: bb.0.entry: 318 ; GFX6-NEXT: S_WAITCNT_soft 3952 319 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec 320 ; GFX6-NEXT: S_ENDPGM 0 321 ; 322 ; GFX8-LABEL: name: agent_one_as_acquire 323 ; GFX8: bb.0.entry: 324 ; GFX8-NEXT: S_WAITCNT_soft 3952 325 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec 326 ; GFX8-NEXT: S_ENDPGM 0 327 ; 328 ; GFX10WGP-LABEL: name: agent_one_as_acquire 329 ; GFX10WGP: bb.0.entry: 330 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240 331 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 332 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec 333 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec 334 ; GFX10WGP-NEXT: S_ENDPGM 0 335 ; 336 ; GFX10CU-LABEL: name: agent_one_as_acquire 337 ; GFX10CU: bb.0.entry: 338 ; GFX10CU-NEXT: S_WAITCNT_soft 16240 339 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 340 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec 341 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec 342 ; GFX10CU-NEXT: S_ENDPGM 0 343 ; 344 ; GFX11WGP-LABEL: name: agent_one_as_acquire 345 ; GFX11WGP: bb.0.entry: 346 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015 347 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 348 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec 349 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec 350 ; GFX11WGP-NEXT: S_ENDPGM 0 351 ; 352 ; GFX11CU-LABEL: name: agent_one_as_acquire 353 ; GFX11CU: bb.0.entry: 354 ; GFX11CU-NEXT: S_WAITCNT_soft 1015 355 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 356 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec 357 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec 358 ; GFX11CU-NEXT: S_ENDPGM 0 359entry: 360 fence syncscope("agent-one-as") acquire 361 ret void 362} 363 364define amdgpu_kernel void @agent_one_as_release() #0 { 365 ; GFX6-LABEL: name: agent_one_as_release 366 ; GFX6: bb.0.entry: 367 ; GFX6-NEXT: S_WAITCNT_soft 3952 368 ; GFX6-NEXT: S_ENDPGM 0 369 ; 370 ; GFX8-LABEL: name: agent_one_as_release 371 ; GFX8: bb.0.entry: 372 ; GFX8-NEXT: S_WAITCNT_soft 3952 373 ; GFX8-NEXT: S_ENDPGM 0 374 ; 375 ; GFX10WGP-LABEL: name: agent_one_as_release 376 ; GFX10WGP: bb.0.entry: 377 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240 378 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 379 ; GFX10WGP-NEXT: S_ENDPGM 0 380 ; 381 ; GFX10CU-LABEL: name: agent_one_as_release 382 ; GFX10CU: bb.0.entry: 383 ; GFX10CU-NEXT: S_WAITCNT_soft 16240 384 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 385 ; GFX10CU-NEXT: S_ENDPGM 0 386 ; 387 ; GFX11WGP-LABEL: name: agent_one_as_release 388 ; GFX11WGP: bb.0.entry: 389 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015 390 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 391 ; GFX11WGP-NEXT: S_ENDPGM 0 392 ; 393 ; GFX11CU-LABEL: name: agent_one_as_release 394 ; GFX11CU: bb.0.entry: 395 ; GFX11CU-NEXT: S_WAITCNT_soft 1015 396 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 397 ; GFX11CU-NEXT: S_ENDPGM 0 398entry: 399 fence syncscope("agent-one-as") release 400 ret void 401} 402 403define amdgpu_kernel void @agent_one_as_acq_rel() #0 { 404 ; GFX6-LABEL: name: agent_one_as_acq_rel 405 ; GFX6: bb.0.entry: 406 ; GFX6-NEXT: S_WAITCNT_soft 3952 407 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec 408 ; GFX6-NEXT: S_ENDPGM 0 409 ; 410 ; GFX8-LABEL: name: agent_one_as_acq_rel 411 ; GFX8: bb.0.entry: 412 ; GFX8-NEXT: S_WAITCNT_soft 3952 413 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec 414 ; GFX8-NEXT: S_ENDPGM 0 415 ; 416 ; GFX10WGP-LABEL: name: agent_one_as_acq_rel 417 ; GFX10WGP: bb.0.entry: 418 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240 419 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 420 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec 421 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec 422 ; GFX10WGP-NEXT: S_ENDPGM 0 423 ; 424 ; GFX10CU-LABEL: name: agent_one_as_acq_rel 425 ; GFX10CU: bb.0.entry: 426 ; GFX10CU-NEXT: S_WAITCNT_soft 16240 427 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 428 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec 429 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec 430 ; GFX10CU-NEXT: S_ENDPGM 0 431 ; 432 ; GFX11WGP-LABEL: name: agent_one_as_acq_rel 433 ; GFX11WGP: bb.0.entry: 434 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015 435 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 436 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec 437 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec 438 ; GFX11WGP-NEXT: S_ENDPGM 0 439 ; 440 ; GFX11CU-LABEL: name: agent_one_as_acq_rel 441 ; GFX11CU: bb.0.entry: 442 ; GFX11CU-NEXT: S_WAITCNT_soft 1015 443 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 444 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec 445 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec 446 ; GFX11CU-NEXT: S_ENDPGM 0 447entry: 448 fence syncscope("agent-one-as") acq_rel 449 ret void 450} 451 452define amdgpu_kernel void @agent_one_as_seq_cst() #0 { 453 ; GFX6-LABEL: name: agent_one_as_seq_cst 454 ; GFX6: bb.0.entry: 455 ; GFX6-NEXT: S_WAITCNT_soft 3952 456 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec 457 ; GFX6-NEXT: S_ENDPGM 0 458 ; 459 ; GFX8-LABEL: name: agent_one_as_seq_cst 460 ; GFX8: bb.0.entry: 461 ; GFX8-NEXT: S_WAITCNT_soft 3952 462 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec 463 ; GFX8-NEXT: S_ENDPGM 0 464 ; 465 ; GFX10WGP-LABEL: name: agent_one_as_seq_cst 466 ; GFX10WGP: bb.0.entry: 467 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240 468 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 469 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec 470 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec 471 ; GFX10WGP-NEXT: S_ENDPGM 0 472 ; 473 ; GFX10CU-LABEL: name: agent_one_as_seq_cst 474 ; GFX10CU: bb.0.entry: 475 ; GFX10CU-NEXT: S_WAITCNT_soft 16240 476 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 477 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec 478 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec 479 ; GFX10CU-NEXT: S_ENDPGM 0 480 ; 481 ; GFX11WGP-LABEL: name: agent_one_as_seq_cst 482 ; GFX11WGP: bb.0.entry: 483 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015 484 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 485 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec 486 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec 487 ; GFX11WGP-NEXT: S_ENDPGM 0 488 ; 489 ; GFX11CU-LABEL: name: agent_one_as_seq_cst 490 ; GFX11CU: bb.0.entry: 491 ; GFX11CU-NEXT: S_WAITCNT_soft 1015 492 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 493 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec 494 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec 495 ; GFX11CU-NEXT: S_ENDPGM 0 496entry: 497 fence syncscope("agent-one-as") seq_cst 498 ret void 499} 500 501define amdgpu_kernel void @workgroup_one_as_acquire() #0 { 502 ; GFX6-LABEL: name: workgroup_one_as_acquire 503 ; GFX6: bb.0.entry: 504 ; GFX6-NEXT: S_ENDPGM 0 505 ; 506 ; GFX8-LABEL: name: workgroup_one_as_acquire 507 ; GFX8: bb.0.entry: 508 ; GFX8-NEXT: S_ENDPGM 0 509 ; 510 ; GFX10WGP-LABEL: name: workgroup_one_as_acquire 511 ; GFX10WGP: bb.0.entry: 512 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240 513 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 514 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec 515 ; GFX10WGP-NEXT: S_ENDPGM 0 516 ; 517 ; GFX10CU-LABEL: name: workgroup_one_as_acquire 518 ; GFX10CU: bb.0.entry: 519 ; GFX10CU-NEXT: S_ENDPGM 0 520 ; 521 ; GFX11WGP-LABEL: name: workgroup_one_as_acquire 522 ; GFX11WGP: bb.0.entry: 523 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015 524 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 525 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec 526 ; GFX11WGP-NEXT: S_ENDPGM 0 527 ; 528 ; GFX11CU-LABEL: name: workgroup_one_as_acquire 529 ; GFX11CU: bb.0.entry: 530 ; GFX11CU-NEXT: S_ENDPGM 0 531entry: 532 fence syncscope("workgroup-one-as") acquire 533 ret void 534} 535 536define amdgpu_kernel void @workgroup_one_as_release() #0 { 537 ; GFX6-LABEL: name: workgroup_one_as_release 538 ; GFX6: bb.0.entry: 539 ; GFX6-NEXT: S_ENDPGM 0 540 ; 541 ; GFX8-LABEL: name: workgroup_one_as_release 542 ; GFX8: bb.0.entry: 543 ; GFX8-NEXT: S_ENDPGM 0 544 ; 545 ; GFX10WGP-LABEL: name: workgroup_one_as_release 546 ; GFX10WGP: bb.0.entry: 547 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240 548 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 549 ; GFX10WGP-NEXT: S_ENDPGM 0 550 ; 551 ; GFX10CU-LABEL: name: workgroup_one_as_release 552 ; GFX10CU: bb.0.entry: 553 ; GFX10CU-NEXT: S_ENDPGM 0 554 ; 555 ; GFX11WGP-LABEL: name: workgroup_one_as_release 556 ; GFX11WGP: bb.0.entry: 557 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015 558 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 559 ; GFX11WGP-NEXT: S_ENDPGM 0 560 ; 561 ; GFX11CU-LABEL: name: workgroup_one_as_release 562 ; GFX11CU: bb.0.entry: 563 ; GFX11CU-NEXT: S_ENDPGM 0 564entry: 565 fence syncscope("workgroup-one-as") release 566 ret void 567} 568 569define amdgpu_kernel void @workgroup_one_as_acq_rel() #0 { 570 ; GFX6-LABEL: name: workgroup_one_as_acq_rel 571 ; GFX6: bb.0.entry: 572 ; GFX6-NEXT: S_ENDPGM 0 573 ; 574 ; GFX8-LABEL: name: workgroup_one_as_acq_rel 575 ; GFX8: bb.0.entry: 576 ; GFX8-NEXT: S_ENDPGM 0 577 ; 578 ; GFX10WGP-LABEL: name: workgroup_one_as_acq_rel 579 ; GFX10WGP: bb.0.entry: 580 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240 581 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 582 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec 583 ; GFX10WGP-NEXT: S_ENDPGM 0 584 ; 585 ; GFX10CU-LABEL: name: workgroup_one_as_acq_rel 586 ; GFX10CU: bb.0.entry: 587 ; GFX10CU-NEXT: S_ENDPGM 0 588 ; 589 ; GFX11WGP-LABEL: name: workgroup_one_as_acq_rel 590 ; GFX11WGP: bb.0.entry: 591 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015 592 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 593 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec 594 ; GFX11WGP-NEXT: S_ENDPGM 0 595 ; 596 ; GFX11CU-LABEL: name: workgroup_one_as_acq_rel 597 ; GFX11CU: bb.0.entry: 598 ; GFX11CU-NEXT: S_ENDPGM 0 599entry: 600 fence syncscope("workgroup-one-as") acq_rel 601 ret void 602} 603 604define amdgpu_kernel void @workgroup_one_as_seq_cst() #0 { 605 ; GFX6-LABEL: name: workgroup_one_as_seq_cst 606 ; GFX6: bb.0.entry: 607 ; GFX6-NEXT: S_ENDPGM 0 608 ; 609 ; GFX8-LABEL: name: workgroup_one_as_seq_cst 610 ; GFX8: bb.0.entry: 611 ; GFX8-NEXT: S_ENDPGM 0 612 ; 613 ; GFX10WGP-LABEL: name: workgroup_one_as_seq_cst 614 ; GFX10WGP: bb.0.entry: 615 ; GFX10WGP-NEXT: S_WAITCNT_soft 16240 616 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 617 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec 618 ; GFX10WGP-NEXT: S_ENDPGM 0 619 ; 620 ; GFX10CU-LABEL: name: workgroup_one_as_seq_cst 621 ; GFX10CU: bb.0.entry: 622 ; GFX10CU-NEXT: S_ENDPGM 0 623 ; 624 ; GFX11WGP-LABEL: name: workgroup_one_as_seq_cst 625 ; GFX11WGP: bb.0.entry: 626 ; GFX11WGP-NEXT: S_WAITCNT_soft 1015 627 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 628 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec 629 ; GFX11WGP-NEXT: S_ENDPGM 0 630 ; 631 ; GFX11CU-LABEL: name: workgroup_one_as_seq_cst 632 ; GFX11CU: bb.0.entry: 633 ; GFX11CU-NEXT: S_ENDPGM 0 634entry: 635 fence syncscope("workgroup-one-as") seq_cst 636 ret void 637} 638 639define amdgpu_kernel void @wavefront_one_as_acquire() #0 { 640 ; GFX6-LABEL: name: wavefront_one_as_acquire 641 ; GFX6: bb.0.entry: 642 ; GFX6-NEXT: S_ENDPGM 0 643 ; 644 ; GFX8-LABEL: name: wavefront_one_as_acquire 645 ; GFX8: bb.0.entry: 646 ; GFX8-NEXT: S_ENDPGM 0 647 ; 648 ; GFX10WGP-LABEL: name: wavefront_one_as_acquire 649 ; GFX10WGP: bb.0.entry: 650 ; GFX10WGP-NEXT: S_ENDPGM 0 651 ; 652 ; GFX10CU-LABEL: name: wavefront_one_as_acquire 653 ; GFX10CU: bb.0.entry: 654 ; GFX10CU-NEXT: S_ENDPGM 0 655 ; 656 ; GFX11WGP-LABEL: name: wavefront_one_as_acquire 657 ; GFX11WGP: bb.0.entry: 658 ; GFX11WGP-NEXT: S_ENDPGM 0 659 ; 660 ; GFX11CU-LABEL: name: wavefront_one_as_acquire 661 ; GFX11CU: bb.0.entry: 662 ; GFX11CU-NEXT: S_ENDPGM 0 663entry: 664 fence syncscope("wavefront-one-as") acquire 665 ret void 666} 667 668define amdgpu_kernel void @wavefront_one_as_release() #0 { 669 ; GFX6-LABEL: name: wavefront_one_as_release 670 ; GFX6: bb.0.entry: 671 ; GFX6-NEXT: S_ENDPGM 0 672 ; 673 ; GFX8-LABEL: name: wavefront_one_as_release 674 ; GFX8: bb.0.entry: 675 ; GFX8-NEXT: S_ENDPGM 0 676 ; 677 ; GFX10WGP-LABEL: name: wavefront_one_as_release 678 ; GFX10WGP: bb.0.entry: 679 ; GFX10WGP-NEXT: S_ENDPGM 0 680 ; 681 ; GFX10CU-LABEL: name: wavefront_one_as_release 682 ; GFX10CU: bb.0.entry: 683 ; GFX10CU-NEXT: S_ENDPGM 0 684 ; 685 ; GFX11WGP-LABEL: name: wavefront_one_as_release 686 ; GFX11WGP: bb.0.entry: 687 ; GFX11WGP-NEXT: S_ENDPGM 0 688 ; 689 ; GFX11CU-LABEL: name: wavefront_one_as_release 690 ; GFX11CU: bb.0.entry: 691 ; GFX11CU-NEXT: S_ENDPGM 0 692entry: 693 fence syncscope("wavefront-one-as") release 694 ret void 695} 696 697define amdgpu_kernel void @wavefront_one_as_acq_rel() #0 { 698 ; GFX6-LABEL: name: wavefront_one_as_acq_rel 699 ; GFX6: bb.0.entry: 700 ; GFX6-NEXT: S_ENDPGM 0 701 ; 702 ; GFX8-LABEL: name: wavefront_one_as_acq_rel 703 ; GFX8: bb.0.entry: 704 ; GFX8-NEXT: S_ENDPGM 0 705 ; 706 ; GFX10WGP-LABEL: name: wavefront_one_as_acq_rel 707 ; GFX10WGP: bb.0.entry: 708 ; GFX10WGP-NEXT: S_ENDPGM 0 709 ; 710 ; GFX10CU-LABEL: name: wavefront_one_as_acq_rel 711 ; GFX10CU: bb.0.entry: 712 ; GFX10CU-NEXT: S_ENDPGM 0 713 ; 714 ; GFX11WGP-LABEL: name: wavefront_one_as_acq_rel 715 ; GFX11WGP: bb.0.entry: 716 ; GFX11WGP-NEXT: S_ENDPGM 0 717 ; 718 ; GFX11CU-LABEL: name: wavefront_one_as_acq_rel 719 ; GFX11CU: bb.0.entry: 720 ; GFX11CU-NEXT: S_ENDPGM 0 721entry: 722 fence syncscope("wavefront-one-as") acq_rel 723 ret void 724} 725 726define amdgpu_kernel void @wavefront_one_as_seq_cst() #0 { 727 ; GFX6-LABEL: name: wavefront_one_as_seq_cst 728 ; GFX6: bb.0.entry: 729 ; GFX6-NEXT: S_ENDPGM 0 730 ; 731 ; GFX8-LABEL: name: wavefront_one_as_seq_cst 732 ; GFX8: bb.0.entry: 733 ; GFX8-NEXT: S_ENDPGM 0 734 ; 735 ; GFX10WGP-LABEL: name: wavefront_one_as_seq_cst 736 ; GFX10WGP: bb.0.entry: 737 ; GFX10WGP-NEXT: S_ENDPGM 0 738 ; 739 ; GFX10CU-LABEL: name: wavefront_one_as_seq_cst 740 ; GFX10CU: bb.0.entry: 741 ; GFX10CU-NEXT: S_ENDPGM 0 742 ; 743 ; GFX11WGP-LABEL: name: wavefront_one_as_seq_cst 744 ; GFX11WGP: bb.0.entry: 745 ; GFX11WGP-NEXT: S_ENDPGM 0 746 ; 747 ; GFX11CU-LABEL: name: wavefront_one_as_seq_cst 748 ; GFX11CU: bb.0.entry: 749 ; GFX11CU-NEXT: S_ENDPGM 0 750entry: 751 fence syncscope("wavefront-one-as") seq_cst 752 ret void 753} 754 755define amdgpu_kernel void @system_acquire() #0 { 756 ; GFX6-LABEL: name: system_acquire 757 ; GFX6: bb.0.entry: 758 ; GFX6-NEXT: S_WAITCNT_soft 112 759 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec 760 ; GFX6-NEXT: S_ENDPGM 0 761 ; 762 ; GFX8-LABEL: name: system_acquire 763 ; GFX8: bb.0.entry: 764 ; GFX8-NEXT: S_WAITCNT_soft 112 765 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec 766 ; GFX8-NEXT: S_ENDPGM 0 767 ; 768 ; GFX10WGP-LABEL: name: system_acquire 769 ; GFX10WGP: bb.0.entry: 770 ; GFX10WGP-NEXT: S_WAITCNT_soft 112 771 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 772 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec 773 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec 774 ; GFX10WGP-NEXT: S_ENDPGM 0 775 ; 776 ; GFX10CU-LABEL: name: system_acquire 777 ; GFX10CU: bb.0.entry: 778 ; GFX10CU-NEXT: S_WAITCNT_soft 112 779 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 780 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec 781 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec 782 ; GFX10CU-NEXT: S_ENDPGM 0 783 ; 784 ; GFX11WGP-LABEL: name: system_acquire 785 ; GFX11WGP: bb.0.entry: 786 ; GFX11WGP-NEXT: S_WAITCNT_soft 7 787 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 788 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec 789 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec 790 ; GFX11WGP-NEXT: S_ENDPGM 0 791 ; 792 ; GFX11CU-LABEL: name: system_acquire 793 ; GFX11CU: bb.0.entry: 794 ; GFX11CU-NEXT: S_WAITCNT_soft 7 795 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 796 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec 797 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec 798 ; GFX11CU-NEXT: S_ENDPGM 0 799entry: 800 fence acquire 801 ret void 802} 803 804define amdgpu_kernel void @system_release() #0 { 805 ; GFX6-LABEL: name: system_release 806 ; GFX6: bb.0.entry: 807 ; GFX6-NEXT: S_WAITCNT_soft 112 808 ; GFX6-NEXT: S_ENDPGM 0 809 ; 810 ; GFX8-LABEL: name: system_release 811 ; GFX8: bb.0.entry: 812 ; GFX8-NEXT: S_WAITCNT_soft 112 813 ; GFX8-NEXT: S_ENDPGM 0 814 ; 815 ; GFX10WGP-LABEL: name: system_release 816 ; GFX10WGP: bb.0.entry: 817 ; GFX10WGP-NEXT: S_WAITCNT_soft 112 818 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 819 ; GFX10WGP-NEXT: S_ENDPGM 0 820 ; 821 ; GFX10CU-LABEL: name: system_release 822 ; GFX10CU: bb.0.entry: 823 ; GFX10CU-NEXT: S_WAITCNT_soft 112 824 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 825 ; GFX10CU-NEXT: S_ENDPGM 0 826 ; 827 ; GFX11WGP-LABEL: name: system_release 828 ; GFX11WGP: bb.0.entry: 829 ; GFX11WGP-NEXT: S_WAITCNT_soft 7 830 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 831 ; GFX11WGP-NEXT: S_ENDPGM 0 832 ; 833 ; GFX11CU-LABEL: name: system_release 834 ; GFX11CU: bb.0.entry: 835 ; GFX11CU-NEXT: S_WAITCNT_soft 7 836 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 837 ; GFX11CU-NEXT: S_ENDPGM 0 838entry: 839 fence release 840 ret void 841} 842 843define amdgpu_kernel void @system_acq_rel() #0 { 844 ; GFX6-LABEL: name: system_acq_rel 845 ; GFX6: bb.0.entry: 846 ; GFX6-NEXT: S_WAITCNT_soft 112 847 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec 848 ; GFX6-NEXT: S_ENDPGM 0 849 ; 850 ; GFX8-LABEL: name: system_acq_rel 851 ; GFX8: bb.0.entry: 852 ; GFX8-NEXT: S_WAITCNT_soft 112 853 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec 854 ; GFX8-NEXT: S_ENDPGM 0 855 ; 856 ; GFX10WGP-LABEL: name: system_acq_rel 857 ; GFX10WGP: bb.0.entry: 858 ; GFX10WGP-NEXT: S_WAITCNT_soft 112 859 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 860 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec 861 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec 862 ; GFX10WGP-NEXT: S_ENDPGM 0 863 ; 864 ; GFX10CU-LABEL: name: system_acq_rel 865 ; GFX10CU: bb.0.entry: 866 ; GFX10CU-NEXT: S_WAITCNT_soft 112 867 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 868 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec 869 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec 870 ; GFX10CU-NEXT: S_ENDPGM 0 871 ; 872 ; GFX11WGP-LABEL: name: system_acq_rel 873 ; GFX11WGP: bb.0.entry: 874 ; GFX11WGP-NEXT: S_WAITCNT_soft 7 875 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 876 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec 877 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec 878 ; GFX11WGP-NEXT: S_ENDPGM 0 879 ; 880 ; GFX11CU-LABEL: name: system_acq_rel 881 ; GFX11CU: bb.0.entry: 882 ; GFX11CU-NEXT: S_WAITCNT_soft 7 883 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 884 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec 885 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec 886 ; GFX11CU-NEXT: S_ENDPGM 0 887entry: 888 fence acq_rel 889 ret void 890} 891 892define amdgpu_kernel void @system_seq_cst() #0 { 893 ; GFX6-LABEL: name: system_seq_cst 894 ; GFX6: bb.0.entry: 895 ; GFX6-NEXT: S_WAITCNT_soft 112 896 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec 897 ; GFX6-NEXT: S_ENDPGM 0 898 ; 899 ; GFX8-LABEL: name: system_seq_cst 900 ; GFX8: bb.0.entry: 901 ; GFX8-NEXT: S_WAITCNT_soft 112 902 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec 903 ; GFX8-NEXT: S_ENDPGM 0 904 ; 905 ; GFX10WGP-LABEL: name: system_seq_cst 906 ; GFX10WGP: bb.0.entry: 907 ; GFX10WGP-NEXT: S_WAITCNT_soft 112 908 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 909 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec 910 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec 911 ; GFX10WGP-NEXT: S_ENDPGM 0 912 ; 913 ; GFX10CU-LABEL: name: system_seq_cst 914 ; GFX10CU: bb.0.entry: 915 ; GFX10CU-NEXT: S_WAITCNT_soft 112 916 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 917 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec 918 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec 919 ; GFX10CU-NEXT: S_ENDPGM 0 920 ; 921 ; GFX11WGP-LABEL: name: system_seq_cst 922 ; GFX11WGP: bb.0.entry: 923 ; GFX11WGP-NEXT: S_WAITCNT_soft 7 924 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 925 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec 926 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec 927 ; GFX11WGP-NEXT: S_ENDPGM 0 928 ; 929 ; GFX11CU-LABEL: name: system_seq_cst 930 ; GFX11CU: bb.0.entry: 931 ; GFX11CU-NEXT: S_WAITCNT_soft 7 932 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 933 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec 934 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec 935 ; GFX11CU-NEXT: S_ENDPGM 0 936entry: 937 fence seq_cst 938 ret void 939} 940 941define amdgpu_kernel void @singlethread_acquire() #0 { 942 ; GFX6-LABEL: name: singlethread_acquire 943 ; GFX6: bb.0.entry: 944 ; GFX6-NEXT: S_ENDPGM 0 945 ; 946 ; GFX8-LABEL: name: singlethread_acquire 947 ; GFX8: bb.0.entry: 948 ; GFX8-NEXT: S_ENDPGM 0 949 ; 950 ; GFX10WGP-LABEL: name: singlethread_acquire 951 ; GFX10WGP: bb.0.entry: 952 ; GFX10WGP-NEXT: S_ENDPGM 0 953 ; 954 ; GFX10CU-LABEL: name: singlethread_acquire 955 ; GFX10CU: bb.0.entry: 956 ; GFX10CU-NEXT: S_ENDPGM 0 957 ; 958 ; GFX11WGP-LABEL: name: singlethread_acquire 959 ; GFX11WGP: bb.0.entry: 960 ; GFX11WGP-NEXT: S_ENDPGM 0 961 ; 962 ; GFX11CU-LABEL: name: singlethread_acquire 963 ; GFX11CU: bb.0.entry: 964 ; GFX11CU-NEXT: S_ENDPGM 0 965entry: 966 fence syncscope("singlethread") acquire 967 ret void 968} 969 970define amdgpu_kernel void @singlethread_release() #0 { 971 ; GFX6-LABEL: name: singlethread_release 972 ; GFX6: bb.0.entry: 973 ; GFX6-NEXT: S_ENDPGM 0 974 ; 975 ; GFX8-LABEL: name: singlethread_release 976 ; GFX8: bb.0.entry: 977 ; GFX8-NEXT: S_ENDPGM 0 978 ; 979 ; GFX10WGP-LABEL: name: singlethread_release 980 ; GFX10WGP: bb.0.entry: 981 ; GFX10WGP-NEXT: S_ENDPGM 0 982 ; 983 ; GFX10CU-LABEL: name: singlethread_release 984 ; GFX10CU: bb.0.entry: 985 ; GFX10CU-NEXT: S_ENDPGM 0 986 ; 987 ; GFX11WGP-LABEL: name: singlethread_release 988 ; GFX11WGP: bb.0.entry: 989 ; GFX11WGP-NEXT: S_ENDPGM 0 990 ; 991 ; GFX11CU-LABEL: name: singlethread_release 992 ; GFX11CU: bb.0.entry: 993 ; GFX11CU-NEXT: S_ENDPGM 0 994entry: 995 fence syncscope("singlethread") release 996 ret void 997} 998 999define amdgpu_kernel void @singlethread_acq_rel() #0 { 1000 ; GFX6-LABEL: name: singlethread_acq_rel 1001 ; GFX6: bb.0.entry: 1002 ; GFX6-NEXT: S_ENDPGM 0 1003 ; 1004 ; GFX8-LABEL: name: singlethread_acq_rel 1005 ; GFX8: bb.0.entry: 1006 ; GFX8-NEXT: S_ENDPGM 0 1007 ; 1008 ; GFX10WGP-LABEL: name: singlethread_acq_rel 1009 ; GFX10WGP: bb.0.entry: 1010 ; GFX10WGP-NEXT: S_ENDPGM 0 1011 ; 1012 ; GFX10CU-LABEL: name: singlethread_acq_rel 1013 ; GFX10CU: bb.0.entry: 1014 ; GFX10CU-NEXT: S_ENDPGM 0 1015 ; 1016 ; GFX11WGP-LABEL: name: singlethread_acq_rel 1017 ; GFX11WGP: bb.0.entry: 1018 ; GFX11WGP-NEXT: S_ENDPGM 0 1019 ; 1020 ; GFX11CU-LABEL: name: singlethread_acq_rel 1021 ; GFX11CU: bb.0.entry: 1022 ; GFX11CU-NEXT: S_ENDPGM 0 1023entry: 1024 fence syncscope("singlethread") acq_rel 1025 ret void 1026} 1027 1028define amdgpu_kernel void @singlethread_seq_cst() #0 { 1029 ; GFX6-LABEL: name: singlethread_seq_cst 1030 ; GFX6: bb.0.entry: 1031 ; GFX6-NEXT: S_ENDPGM 0 1032 ; 1033 ; GFX8-LABEL: name: singlethread_seq_cst 1034 ; GFX8: bb.0.entry: 1035 ; GFX8-NEXT: S_ENDPGM 0 1036 ; 1037 ; GFX10WGP-LABEL: name: singlethread_seq_cst 1038 ; GFX10WGP: bb.0.entry: 1039 ; GFX10WGP-NEXT: S_ENDPGM 0 1040 ; 1041 ; GFX10CU-LABEL: name: singlethread_seq_cst 1042 ; GFX10CU: bb.0.entry: 1043 ; GFX10CU-NEXT: S_ENDPGM 0 1044 ; 1045 ; GFX11WGP-LABEL: name: singlethread_seq_cst 1046 ; GFX11WGP: bb.0.entry: 1047 ; GFX11WGP-NEXT: S_ENDPGM 0 1048 ; 1049 ; GFX11CU-LABEL: name: singlethread_seq_cst 1050 ; GFX11CU: bb.0.entry: 1051 ; GFX11CU-NEXT: S_ENDPGM 0 1052entry: 1053 fence syncscope("singlethread") seq_cst 1054 ret void 1055} 1056 1057define amdgpu_kernel void @agent_acquire() #0 { 1058 ; GFX6-LABEL: name: agent_acquire 1059 ; GFX6: bb.0.entry: 1060 ; GFX6-NEXT: S_WAITCNT_soft 112 1061 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec 1062 ; GFX6-NEXT: S_ENDPGM 0 1063 ; 1064 ; GFX8-LABEL: name: agent_acquire 1065 ; GFX8: bb.0.entry: 1066 ; GFX8-NEXT: S_WAITCNT_soft 112 1067 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec 1068 ; GFX8-NEXT: S_ENDPGM 0 1069 ; 1070 ; GFX10WGP-LABEL: name: agent_acquire 1071 ; GFX10WGP: bb.0.entry: 1072 ; GFX10WGP-NEXT: S_WAITCNT_soft 112 1073 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1074 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec 1075 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec 1076 ; GFX10WGP-NEXT: S_ENDPGM 0 1077 ; 1078 ; GFX10CU-LABEL: name: agent_acquire 1079 ; GFX10CU: bb.0.entry: 1080 ; GFX10CU-NEXT: S_WAITCNT_soft 112 1081 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1082 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec 1083 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec 1084 ; GFX10CU-NEXT: S_ENDPGM 0 1085 ; 1086 ; GFX11WGP-LABEL: name: agent_acquire 1087 ; GFX11WGP: bb.0.entry: 1088 ; GFX11WGP-NEXT: S_WAITCNT_soft 7 1089 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1090 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec 1091 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec 1092 ; GFX11WGP-NEXT: S_ENDPGM 0 1093 ; 1094 ; GFX11CU-LABEL: name: agent_acquire 1095 ; GFX11CU: bb.0.entry: 1096 ; GFX11CU-NEXT: S_WAITCNT_soft 7 1097 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1098 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec 1099 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec 1100 ; GFX11CU-NEXT: S_ENDPGM 0 1101entry: 1102 fence syncscope("agent") acquire 1103 ret void 1104} 1105 1106define amdgpu_kernel void @agent_release() #0 { 1107 ; GFX6-LABEL: name: agent_release 1108 ; GFX6: bb.0.entry: 1109 ; GFX6-NEXT: S_WAITCNT_soft 112 1110 ; GFX6-NEXT: S_ENDPGM 0 1111 ; 1112 ; GFX8-LABEL: name: agent_release 1113 ; GFX8: bb.0.entry: 1114 ; GFX8-NEXT: S_WAITCNT_soft 112 1115 ; GFX8-NEXT: S_ENDPGM 0 1116 ; 1117 ; GFX10WGP-LABEL: name: agent_release 1118 ; GFX10WGP: bb.0.entry: 1119 ; GFX10WGP-NEXT: S_WAITCNT_soft 112 1120 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1121 ; GFX10WGP-NEXT: S_ENDPGM 0 1122 ; 1123 ; GFX10CU-LABEL: name: agent_release 1124 ; GFX10CU: bb.0.entry: 1125 ; GFX10CU-NEXT: S_WAITCNT_soft 112 1126 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1127 ; GFX10CU-NEXT: S_ENDPGM 0 1128 ; 1129 ; GFX11WGP-LABEL: name: agent_release 1130 ; GFX11WGP: bb.0.entry: 1131 ; GFX11WGP-NEXT: S_WAITCNT_soft 7 1132 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1133 ; GFX11WGP-NEXT: S_ENDPGM 0 1134 ; 1135 ; GFX11CU-LABEL: name: agent_release 1136 ; GFX11CU: bb.0.entry: 1137 ; GFX11CU-NEXT: S_WAITCNT_soft 7 1138 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1139 ; GFX11CU-NEXT: S_ENDPGM 0 1140entry: 1141 fence syncscope("agent") release 1142 ret void 1143} 1144 1145define amdgpu_kernel void @agent_acq_rel() #0 { 1146 ; GFX6-LABEL: name: agent_acq_rel 1147 ; GFX6: bb.0.entry: 1148 ; GFX6-NEXT: S_WAITCNT_soft 112 1149 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec 1150 ; GFX6-NEXT: S_ENDPGM 0 1151 ; 1152 ; GFX8-LABEL: name: agent_acq_rel 1153 ; GFX8: bb.0.entry: 1154 ; GFX8-NEXT: S_WAITCNT_soft 112 1155 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec 1156 ; GFX8-NEXT: S_ENDPGM 0 1157 ; 1158 ; GFX10WGP-LABEL: name: agent_acq_rel 1159 ; GFX10WGP: bb.0.entry: 1160 ; GFX10WGP-NEXT: S_WAITCNT_soft 112 1161 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1162 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec 1163 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec 1164 ; GFX10WGP-NEXT: S_ENDPGM 0 1165 ; 1166 ; GFX10CU-LABEL: name: agent_acq_rel 1167 ; GFX10CU: bb.0.entry: 1168 ; GFX10CU-NEXT: S_WAITCNT_soft 112 1169 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1170 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec 1171 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec 1172 ; GFX10CU-NEXT: S_ENDPGM 0 1173 ; 1174 ; GFX11WGP-LABEL: name: agent_acq_rel 1175 ; GFX11WGP: bb.0.entry: 1176 ; GFX11WGP-NEXT: S_WAITCNT_soft 7 1177 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1178 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec 1179 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec 1180 ; GFX11WGP-NEXT: S_ENDPGM 0 1181 ; 1182 ; GFX11CU-LABEL: name: agent_acq_rel 1183 ; GFX11CU: bb.0.entry: 1184 ; GFX11CU-NEXT: S_WAITCNT_soft 7 1185 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1186 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec 1187 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec 1188 ; GFX11CU-NEXT: S_ENDPGM 0 1189entry: 1190 fence syncscope("agent") acq_rel 1191 ret void 1192} 1193 1194define amdgpu_kernel void @agent_seq_cst() #0 { 1195 ; GFX6-LABEL: name: agent_seq_cst 1196 ; GFX6: bb.0.entry: 1197 ; GFX6-NEXT: S_WAITCNT_soft 112 1198 ; GFX6-NEXT: BUFFER_WBINVL1 implicit $exec 1199 ; GFX6-NEXT: S_ENDPGM 0 1200 ; 1201 ; GFX8-LABEL: name: agent_seq_cst 1202 ; GFX8: bb.0.entry: 1203 ; GFX8-NEXT: S_WAITCNT_soft 112 1204 ; GFX8-NEXT: BUFFER_WBINVL1_VOL implicit $exec 1205 ; GFX8-NEXT: S_ENDPGM 0 1206 ; 1207 ; GFX10WGP-LABEL: name: agent_seq_cst 1208 ; GFX10WGP: bb.0.entry: 1209 ; GFX10WGP-NEXT: S_WAITCNT_soft 112 1210 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1211 ; GFX10WGP-NEXT: BUFFER_GL1_INV implicit $exec 1212 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec 1213 ; GFX10WGP-NEXT: S_ENDPGM 0 1214 ; 1215 ; GFX10CU-LABEL: name: agent_seq_cst 1216 ; GFX10CU: bb.0.entry: 1217 ; GFX10CU-NEXT: S_WAITCNT_soft 112 1218 ; GFX10CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1219 ; GFX10CU-NEXT: BUFFER_GL1_INV implicit $exec 1220 ; GFX10CU-NEXT: BUFFER_GL0_INV implicit $exec 1221 ; GFX10CU-NEXT: S_ENDPGM 0 1222 ; 1223 ; GFX11WGP-LABEL: name: agent_seq_cst 1224 ; GFX11WGP: bb.0.entry: 1225 ; GFX11WGP-NEXT: S_WAITCNT_soft 7 1226 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1227 ; GFX11WGP-NEXT: BUFFER_GL1_INV implicit $exec 1228 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec 1229 ; GFX11WGP-NEXT: S_ENDPGM 0 1230 ; 1231 ; GFX11CU-LABEL: name: agent_seq_cst 1232 ; GFX11CU: bb.0.entry: 1233 ; GFX11CU-NEXT: S_WAITCNT_soft 7 1234 ; GFX11CU-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1235 ; GFX11CU-NEXT: BUFFER_GL1_INV implicit $exec 1236 ; GFX11CU-NEXT: BUFFER_GL0_INV implicit $exec 1237 ; GFX11CU-NEXT: S_ENDPGM 0 1238entry: 1239 fence syncscope("agent") seq_cst 1240 ret void 1241} 1242 1243define amdgpu_kernel void @workgroup_acquire() #0 { 1244 ; GFX6-LABEL: name: workgroup_acquire 1245 ; GFX6: bb.0.entry: 1246 ; GFX6-NEXT: S_WAITCNT_soft 127 1247 ; GFX6-NEXT: S_ENDPGM 0 1248 ; 1249 ; GFX8-LABEL: name: workgroup_acquire 1250 ; GFX8: bb.0.entry: 1251 ; GFX8-NEXT: S_WAITCNT_soft 127 1252 ; GFX8-NEXT: S_ENDPGM 0 1253 ; 1254 ; GFX10WGP-LABEL: name: workgroup_acquire 1255 ; GFX10WGP: bb.0.entry: 1256 ; GFX10WGP-NEXT: S_WAITCNT_soft 112 1257 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1258 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec 1259 ; GFX10WGP-NEXT: S_ENDPGM 0 1260 ; 1261 ; GFX10CU-LABEL: name: workgroup_acquire 1262 ; GFX10CU: bb.0.entry: 1263 ; GFX10CU-NEXT: S_WAITCNT_soft 49279 1264 ; GFX10CU-NEXT: S_ENDPGM 0 1265 ; 1266 ; GFX11WGP-LABEL: name: workgroup_acquire 1267 ; GFX11WGP: bb.0.entry: 1268 ; GFX11WGP-NEXT: S_WAITCNT_soft 7 1269 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1270 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec 1271 ; GFX11WGP-NEXT: S_ENDPGM 0 1272 ; 1273 ; GFX11CU-LABEL: name: workgroup_acquire 1274 ; GFX11CU: bb.0.entry: 1275 ; GFX11CU-NEXT: S_WAITCNT_soft 64519 1276 ; GFX11CU-NEXT: S_ENDPGM 0 1277entry: 1278 fence syncscope("workgroup") acquire 1279 ret void 1280} 1281 1282define amdgpu_kernel void @workgroup_release() #0 { 1283 ; GFX6-LABEL: name: workgroup_release 1284 ; GFX6: bb.0.entry: 1285 ; GFX6-NEXT: S_WAITCNT_soft 127 1286 ; GFX6-NEXT: S_ENDPGM 0 1287 ; 1288 ; GFX8-LABEL: name: workgroup_release 1289 ; GFX8: bb.0.entry: 1290 ; GFX8-NEXT: S_WAITCNT_soft 127 1291 ; GFX8-NEXT: S_ENDPGM 0 1292 ; 1293 ; GFX10WGP-LABEL: name: workgroup_release 1294 ; GFX10WGP: bb.0.entry: 1295 ; GFX10WGP-NEXT: S_WAITCNT_soft 112 1296 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1297 ; GFX10WGP-NEXT: S_ENDPGM 0 1298 ; 1299 ; GFX10CU-LABEL: name: workgroup_release 1300 ; GFX10CU: bb.0.entry: 1301 ; GFX10CU-NEXT: S_WAITCNT_soft 49279 1302 ; GFX10CU-NEXT: S_ENDPGM 0 1303 ; 1304 ; GFX11WGP-LABEL: name: workgroup_release 1305 ; GFX11WGP: bb.0.entry: 1306 ; GFX11WGP-NEXT: S_WAITCNT_soft 7 1307 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1308 ; GFX11WGP-NEXT: S_ENDPGM 0 1309 ; 1310 ; GFX11CU-LABEL: name: workgroup_release 1311 ; GFX11CU: bb.0.entry: 1312 ; GFX11CU-NEXT: S_WAITCNT_soft 64519 1313 ; GFX11CU-NEXT: S_ENDPGM 0 1314entry: 1315 fence syncscope("workgroup") release 1316 ret void 1317} 1318 1319define amdgpu_kernel void @workgroup_acq_rel() #0 { 1320 ; GFX6-LABEL: name: workgroup_acq_rel 1321 ; GFX6: bb.0.entry: 1322 ; GFX6-NEXT: S_WAITCNT_soft 127 1323 ; GFX6-NEXT: S_ENDPGM 0 1324 ; 1325 ; GFX8-LABEL: name: workgroup_acq_rel 1326 ; GFX8: bb.0.entry: 1327 ; GFX8-NEXT: S_WAITCNT_soft 127 1328 ; GFX8-NEXT: S_ENDPGM 0 1329 ; 1330 ; GFX10WGP-LABEL: name: workgroup_acq_rel 1331 ; GFX10WGP: bb.0.entry: 1332 ; GFX10WGP-NEXT: S_WAITCNT_soft 112 1333 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1334 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec 1335 ; GFX10WGP-NEXT: S_ENDPGM 0 1336 ; 1337 ; GFX10CU-LABEL: name: workgroup_acq_rel 1338 ; GFX10CU: bb.0.entry: 1339 ; GFX10CU-NEXT: S_WAITCNT_soft 49279 1340 ; GFX10CU-NEXT: S_ENDPGM 0 1341 ; 1342 ; GFX11WGP-LABEL: name: workgroup_acq_rel 1343 ; GFX11WGP: bb.0.entry: 1344 ; GFX11WGP-NEXT: S_WAITCNT_soft 7 1345 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1346 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec 1347 ; GFX11WGP-NEXT: S_ENDPGM 0 1348 ; 1349 ; GFX11CU-LABEL: name: workgroup_acq_rel 1350 ; GFX11CU: bb.0.entry: 1351 ; GFX11CU-NEXT: S_WAITCNT_soft 64519 1352 ; GFX11CU-NEXT: S_ENDPGM 0 1353entry: 1354 fence syncscope("workgroup") acq_rel 1355 ret void 1356} 1357 1358define amdgpu_kernel void @workgroup_seq_cst() #0 { 1359 ; GFX6-LABEL: name: workgroup_seq_cst 1360 ; GFX6: bb.0.entry: 1361 ; GFX6-NEXT: S_WAITCNT_soft 127 1362 ; GFX6-NEXT: S_ENDPGM 0 1363 ; 1364 ; GFX8-LABEL: name: workgroup_seq_cst 1365 ; GFX8: bb.0.entry: 1366 ; GFX8-NEXT: S_WAITCNT_soft 127 1367 ; GFX8-NEXT: S_ENDPGM 0 1368 ; 1369 ; GFX10WGP-LABEL: name: workgroup_seq_cst 1370 ; GFX10WGP: bb.0.entry: 1371 ; GFX10WGP-NEXT: S_WAITCNT_soft 112 1372 ; GFX10WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1373 ; GFX10WGP-NEXT: BUFFER_GL0_INV implicit $exec 1374 ; GFX10WGP-NEXT: S_ENDPGM 0 1375 ; 1376 ; GFX10CU-LABEL: name: workgroup_seq_cst 1377 ; GFX10CU: bb.0.entry: 1378 ; GFX10CU-NEXT: S_WAITCNT_soft 49279 1379 ; GFX10CU-NEXT: S_ENDPGM 0 1380 ; 1381 ; GFX11WGP-LABEL: name: workgroup_seq_cst 1382 ; GFX11WGP: bb.0.entry: 1383 ; GFX11WGP-NEXT: S_WAITCNT_soft 7 1384 ; GFX11WGP-NEXT: S_WAITCNT_VSCNT_soft undef $sgpr_null, 0 1385 ; GFX11WGP-NEXT: BUFFER_GL0_INV implicit $exec 1386 ; GFX11WGP-NEXT: S_ENDPGM 0 1387 ; 1388 ; GFX11CU-LABEL: name: workgroup_seq_cst 1389 ; GFX11CU: bb.0.entry: 1390 ; GFX11CU-NEXT: S_WAITCNT_soft 64519 1391 ; GFX11CU-NEXT: S_ENDPGM 0 1392entry: 1393 fence syncscope("workgroup") seq_cst 1394 ret void 1395} 1396 1397define amdgpu_kernel void @wavefront_acquire() #0 { 1398 ; GFX6-LABEL: name: wavefront_acquire 1399 ; GFX6: bb.0.entry: 1400 ; GFX6-NEXT: S_ENDPGM 0 1401 ; 1402 ; GFX8-LABEL: name: wavefront_acquire 1403 ; GFX8: bb.0.entry: 1404 ; GFX8-NEXT: S_ENDPGM 0 1405 ; 1406 ; GFX10WGP-LABEL: name: wavefront_acquire 1407 ; GFX10WGP: bb.0.entry: 1408 ; GFX10WGP-NEXT: S_ENDPGM 0 1409 ; 1410 ; GFX10CU-LABEL: name: wavefront_acquire 1411 ; GFX10CU: bb.0.entry: 1412 ; GFX10CU-NEXT: S_ENDPGM 0 1413 ; 1414 ; GFX11WGP-LABEL: name: wavefront_acquire 1415 ; GFX11WGP: bb.0.entry: 1416 ; GFX11WGP-NEXT: S_ENDPGM 0 1417 ; 1418 ; GFX11CU-LABEL: name: wavefront_acquire 1419 ; GFX11CU: bb.0.entry: 1420 ; GFX11CU-NEXT: S_ENDPGM 0 1421entry: 1422 fence syncscope("wavefront") acquire 1423 ret void 1424} 1425 1426define amdgpu_kernel void @wavefront_release() #0 { 1427 ; GFX6-LABEL: name: wavefront_release 1428 ; GFX6: bb.0.entry: 1429 ; GFX6-NEXT: S_ENDPGM 0 1430 ; 1431 ; GFX8-LABEL: name: wavefront_release 1432 ; GFX8: bb.0.entry: 1433 ; GFX8-NEXT: S_ENDPGM 0 1434 ; 1435 ; GFX10WGP-LABEL: name: wavefront_release 1436 ; GFX10WGP: bb.0.entry: 1437 ; GFX10WGP-NEXT: S_ENDPGM 0 1438 ; 1439 ; GFX10CU-LABEL: name: wavefront_release 1440 ; GFX10CU: bb.0.entry: 1441 ; GFX10CU-NEXT: S_ENDPGM 0 1442 ; 1443 ; GFX11WGP-LABEL: name: wavefront_release 1444 ; GFX11WGP: bb.0.entry: 1445 ; GFX11WGP-NEXT: S_ENDPGM 0 1446 ; 1447 ; GFX11CU-LABEL: name: wavefront_release 1448 ; GFX11CU: bb.0.entry: 1449 ; GFX11CU-NEXT: S_ENDPGM 0 1450entry: 1451 fence syncscope("wavefront") release 1452 ret void 1453} 1454 1455define amdgpu_kernel void @wavefront_acq_rel() #0 { 1456 ; GFX6-LABEL: name: wavefront_acq_rel 1457 ; GFX6: bb.0.entry: 1458 ; GFX6-NEXT: S_ENDPGM 0 1459 ; 1460 ; GFX8-LABEL: name: wavefront_acq_rel 1461 ; GFX8: bb.0.entry: 1462 ; GFX8-NEXT: S_ENDPGM 0 1463 ; 1464 ; GFX10WGP-LABEL: name: wavefront_acq_rel 1465 ; GFX10WGP: bb.0.entry: 1466 ; GFX10WGP-NEXT: S_ENDPGM 0 1467 ; 1468 ; GFX10CU-LABEL: name: wavefront_acq_rel 1469 ; GFX10CU: bb.0.entry: 1470 ; GFX10CU-NEXT: S_ENDPGM 0 1471 ; 1472 ; GFX11WGP-LABEL: name: wavefront_acq_rel 1473 ; GFX11WGP: bb.0.entry: 1474 ; GFX11WGP-NEXT: S_ENDPGM 0 1475 ; 1476 ; GFX11CU-LABEL: name: wavefront_acq_rel 1477 ; GFX11CU: bb.0.entry: 1478 ; GFX11CU-NEXT: S_ENDPGM 0 1479entry: 1480 fence syncscope("wavefront") acq_rel 1481 ret void 1482} 1483 1484define amdgpu_kernel void @wavefront_seq_cst() #0 { 1485 ; GFX6-LABEL: name: wavefront_seq_cst 1486 ; GFX6: bb.0.entry: 1487 ; GFX6-NEXT: S_ENDPGM 0 1488 ; 1489 ; GFX8-LABEL: name: wavefront_seq_cst 1490 ; GFX8: bb.0.entry: 1491 ; GFX8-NEXT: S_ENDPGM 0 1492 ; 1493 ; GFX10WGP-LABEL: name: wavefront_seq_cst 1494 ; GFX10WGP: bb.0.entry: 1495 ; GFX10WGP-NEXT: S_ENDPGM 0 1496 ; 1497 ; GFX10CU-LABEL: name: wavefront_seq_cst 1498 ; GFX10CU: bb.0.entry: 1499 ; GFX10CU-NEXT: S_ENDPGM 0 1500 ; 1501 ; GFX11WGP-LABEL: name: wavefront_seq_cst 1502 ; GFX11WGP: bb.0.entry: 1503 ; GFX11WGP-NEXT: S_ENDPGM 0 1504 ; 1505 ; GFX11CU-LABEL: name: wavefront_seq_cst 1506 ; GFX11CU: bb.0.entry: 1507 ; GFX11CU-NEXT: S_ENDPGM 0 1508entry: 1509 fence syncscope("wavefront") seq_cst 1510 ret void 1511} 1512 1513attributes #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" } 1514