482 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2; RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -stop-after=irtranslator < %s | FileCheck %s3 4define amdgpu_kernel void @system_one_as_acquire() {5 ; CHECK-LABEL: name: system_one_as_acquire6 ; CHECK: bb.1 (%ir-block.0):7 ; CHECK-NEXT: liveins: $sgpr8_sgpr98 ; CHECK-NEXT: {{ $}}9 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr910 ; CHECK-NEXT: G_FENCE 4, 211 ; CHECK-NEXT: S_ENDPGM 012 fence syncscope("one-as") acquire13 ret void14}15 16define amdgpu_kernel void @system_one_as_release() {17 ; CHECK-LABEL: name: system_one_as_release18 ; CHECK: bb.1 (%ir-block.0):19 ; CHECK-NEXT: liveins: $sgpr8_sgpr920 ; CHECK-NEXT: {{ $}}21 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr922 ; CHECK-NEXT: G_FENCE 5, 223 ; CHECK-NEXT: S_ENDPGM 024 fence syncscope("one-as") release25 ret void26}27 28define amdgpu_kernel void @system_one_as_acq_rel() {29 ; CHECK-LABEL: name: system_one_as_acq_rel30 ; CHECK: bb.1 (%ir-block.0):31 ; CHECK-NEXT: liveins: $sgpr8_sgpr932 ; CHECK-NEXT: {{ $}}33 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr934 ; CHECK-NEXT: G_FENCE 6, 235 ; CHECK-NEXT: S_ENDPGM 036 fence syncscope("one-as") acq_rel37 ret void38}39 40define amdgpu_kernel void @system_one_as_seq_cst() {41 ; CHECK-LABEL: name: system_one_as_seq_cst42 ; CHECK: bb.1 (%ir-block.0):43 ; CHECK-NEXT: liveins: $sgpr8_sgpr944 ; CHECK-NEXT: {{ $}}45 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr946 ; CHECK-NEXT: G_FENCE 7, 247 ; CHECK-NEXT: S_ENDPGM 048 fence syncscope("one-as") seq_cst49 ret void50}51 52define amdgpu_kernel void @singlethread_one_as_acquire() {53 ; CHECK-LABEL: name: singlethread_one_as_acquire54 ; CHECK: bb.1 (%ir-block.0):55 ; CHECK-NEXT: liveins: $sgpr8_sgpr956 ; CHECK-NEXT: {{ $}}57 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr958 ; CHECK-NEXT: G_FENCE 4, 359 ; CHECK-NEXT: S_ENDPGM 060 fence syncscope("singlethread-one-as") acquire61 ret void62}63 64define amdgpu_kernel void @singlethread_one_as_release() {65 ; CHECK-LABEL: name: singlethread_one_as_release66 ; CHECK: bb.1 (%ir-block.0):67 ; CHECK-NEXT: liveins: $sgpr8_sgpr968 ; CHECK-NEXT: {{ $}}69 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr970 ; CHECK-NEXT: G_FENCE 5, 371 ; CHECK-NEXT: S_ENDPGM 072 fence syncscope("singlethread-one-as") release73 ret void74}75 76define amdgpu_kernel void @singlethread_one_as_acq_rel() {77 ; CHECK-LABEL: name: singlethread_one_as_acq_rel78 ; CHECK: bb.1 (%ir-block.0):79 ; CHECK-NEXT: liveins: $sgpr8_sgpr980 ; CHECK-NEXT: {{ $}}81 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr982 ; CHECK-NEXT: G_FENCE 6, 383 ; CHECK-NEXT: S_ENDPGM 084 fence syncscope("singlethread-one-as") acq_rel85 ret void86}87 88define amdgpu_kernel void @singlethread_one_as_seq_cst() {89 ; CHECK-LABEL: name: singlethread_one_as_seq_cst90 ; CHECK: bb.1 (%ir-block.0):91 ; CHECK-NEXT: liveins: $sgpr8_sgpr992 ; CHECK-NEXT: {{ $}}93 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr994 ; CHECK-NEXT: G_FENCE 7, 395 ; CHECK-NEXT: S_ENDPGM 096 fence syncscope("singlethread-one-as") seq_cst97 ret void98}99 100define amdgpu_kernel void @agent_one_as_acquire() {101 ; CHECK-LABEL: name: agent_one_as_acquire102 ; CHECK: bb.1 (%ir-block.0):103 ; CHECK-NEXT: liveins: $sgpr8_sgpr9104 ; CHECK-NEXT: {{ $}}105 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9106 ; CHECK-NEXT: G_FENCE 4, 4107 ; CHECK-NEXT: S_ENDPGM 0108 fence syncscope("agent-one-as") acquire109 ret void110}111 112define amdgpu_kernel void @agent_one_as_release() {113 ; CHECK-LABEL: name: agent_one_as_release114 ; CHECK: bb.1 (%ir-block.0):115 ; CHECK-NEXT: liveins: $sgpr8_sgpr9116 ; CHECK-NEXT: {{ $}}117 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9118 ; CHECK-NEXT: G_FENCE 5, 4119 ; CHECK-NEXT: S_ENDPGM 0120 fence syncscope("agent-one-as") release121 ret void122}123 124define amdgpu_kernel void @agent_one_as_acq_rel() {125 ; CHECK-LABEL: name: agent_one_as_acq_rel126 ; CHECK: bb.1 (%ir-block.0):127 ; CHECK-NEXT: liveins: $sgpr8_sgpr9128 ; CHECK-NEXT: {{ $}}129 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9130 ; CHECK-NEXT: G_FENCE 6, 4131 ; CHECK-NEXT: S_ENDPGM 0132 fence syncscope("agent-one-as") acq_rel133 ret void134}135 136define amdgpu_kernel void @agent_one_as_seq_cst() {137 ; CHECK-LABEL: name: agent_one_as_seq_cst138 ; CHECK: bb.1 (%ir-block.0):139 ; CHECK-NEXT: liveins: $sgpr8_sgpr9140 ; CHECK-NEXT: {{ $}}141 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9142 ; CHECK-NEXT: G_FENCE 7, 4143 ; CHECK-NEXT: S_ENDPGM 0144 fence syncscope("agent-one-as") seq_cst145 ret void146}147 148define amdgpu_kernel void @workgroup_one_as_acquire() {149 ; CHECK-LABEL: name: workgroup_one_as_acquire150 ; CHECK: bb.1 (%ir-block.0):151 ; CHECK-NEXT: liveins: $sgpr8_sgpr9152 ; CHECK-NEXT: {{ $}}153 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9154 ; CHECK-NEXT: G_FENCE 4, 5155 ; CHECK-NEXT: S_ENDPGM 0156 fence syncscope("workgroup-one-as") acquire157 ret void158}159 160define amdgpu_kernel void @workgroup_one_as_release() {161 ; CHECK-LABEL: name: workgroup_one_as_release162 ; CHECK: bb.1 (%ir-block.0):163 ; CHECK-NEXT: liveins: $sgpr8_sgpr9164 ; CHECK-NEXT: {{ $}}165 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9166 ; CHECK-NEXT: G_FENCE 5, 5167 ; CHECK-NEXT: S_ENDPGM 0168 fence syncscope("workgroup-one-as") release169 ret void170}171 172define amdgpu_kernel void @workgroup_one_as_acq_rel() {173 ; CHECK-LABEL: name: workgroup_one_as_acq_rel174 ; CHECK: bb.1 (%ir-block.0):175 ; CHECK-NEXT: liveins: $sgpr8_sgpr9176 ; CHECK-NEXT: {{ $}}177 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9178 ; CHECK-NEXT: G_FENCE 6, 5179 ; CHECK-NEXT: S_ENDPGM 0180 fence syncscope("workgroup-one-as") acq_rel181 ret void182}183 184define amdgpu_kernel void @workgroup_one_as_seq_cst() {185 ; CHECK-LABEL: name: workgroup_one_as_seq_cst186 ; CHECK: bb.1 (%ir-block.0):187 ; CHECK-NEXT: liveins: $sgpr8_sgpr9188 ; CHECK-NEXT: {{ $}}189 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9190 ; CHECK-NEXT: G_FENCE 7, 5191 ; CHECK-NEXT: S_ENDPGM 0192 fence syncscope("workgroup-one-as") seq_cst193 ret void194}195 196define amdgpu_kernel void @wavefront_one_as_acquire() {197 ; CHECK-LABEL: name: wavefront_one_as_acquire198 ; CHECK: bb.1 (%ir-block.0):199 ; CHECK-NEXT: liveins: $sgpr8_sgpr9200 ; CHECK-NEXT: {{ $}}201 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9202 ; CHECK-NEXT: G_FENCE 4, 6203 ; CHECK-NEXT: S_ENDPGM 0204 fence syncscope("wavefront-one-as") acquire205 ret void206}207 208define amdgpu_kernel void @wavefront_one_as_release() {209 ; CHECK-LABEL: name: wavefront_one_as_release210 ; CHECK: bb.1 (%ir-block.0):211 ; CHECK-NEXT: liveins: $sgpr8_sgpr9212 ; CHECK-NEXT: {{ $}}213 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9214 ; CHECK-NEXT: G_FENCE 5, 6215 ; CHECK-NEXT: S_ENDPGM 0216 fence syncscope("wavefront-one-as") release217 ret void218}219 220define amdgpu_kernel void @wavefront_one_as_acq_rel() {221 ; CHECK-LABEL: name: wavefront_one_as_acq_rel222 ; CHECK: bb.1 (%ir-block.0):223 ; CHECK-NEXT: liveins: $sgpr8_sgpr9224 ; CHECK-NEXT: {{ $}}225 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9226 ; CHECK-NEXT: G_FENCE 6, 6227 ; CHECK-NEXT: S_ENDPGM 0228 fence syncscope("wavefront-one-as") acq_rel229 ret void230}231 232define amdgpu_kernel void @wavefront_one_as_seq_cst() {233 ; CHECK-LABEL: name: wavefront_one_as_seq_cst234 ; CHECK: bb.1 (%ir-block.0):235 ; CHECK-NEXT: liveins: $sgpr8_sgpr9236 ; CHECK-NEXT: {{ $}}237 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9238 ; CHECK-NEXT: G_FENCE 7, 6239 ; CHECK-NEXT: S_ENDPGM 0240 fence syncscope("wavefront-one-as") seq_cst241 ret void242}243 244define amdgpu_kernel void @system_acquire() {245 ; CHECK-LABEL: name: system_acquire246 ; CHECK: bb.1.entry:247 ; CHECK-NEXT: liveins: $sgpr8_sgpr9248 ; CHECK-NEXT: {{ $}}249 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9250 ; CHECK-NEXT: S_ENDPGM 0251entry:252 ret void253}254 255define amdgpu_kernel void @system_release() {256 ; CHECK-LABEL: name: system_release257 ; CHECK: bb.1 (%ir-block.0):258 ; CHECK-NEXT: liveins: $sgpr8_sgpr9259 ; CHECK-NEXT: {{ $}}260 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9261 ; CHECK-NEXT: G_FENCE 5, 1262 ; CHECK-NEXT: S_ENDPGM 0263 fence release264 ret void265}266 267define amdgpu_kernel void @system_acq_rel() {268 ; CHECK-LABEL: name: system_acq_rel269 ; CHECK: bb.1 (%ir-block.0):270 ; CHECK-NEXT: liveins: $sgpr8_sgpr9271 ; CHECK-NEXT: {{ $}}272 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9273 ; CHECK-NEXT: G_FENCE 6, 1274 ; CHECK-NEXT: S_ENDPGM 0275 fence acq_rel276 ret void277}278 279define amdgpu_kernel void @system_seq_cst() {280 ; CHECK-LABEL: name: system_seq_cst281 ; CHECK: bb.1 (%ir-block.0):282 ; CHECK-NEXT: liveins: $sgpr8_sgpr9283 ; CHECK-NEXT: {{ $}}284 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9285 ; CHECK-NEXT: G_FENCE 7, 1286 ; CHECK-NEXT: S_ENDPGM 0287 fence seq_cst288 ret void289}290 291define amdgpu_kernel void @singlethread_acquire() {292 ; CHECK-LABEL: name: singlethread_acquire293 ; CHECK: bb.1 (%ir-block.0):294 ; CHECK-NEXT: liveins: $sgpr8_sgpr9295 ; CHECK-NEXT: {{ $}}296 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9297 ; CHECK-NEXT: G_FENCE 4, 0298 ; CHECK-NEXT: S_ENDPGM 0299 fence syncscope("singlethread") acquire300 ret void301}302 303define amdgpu_kernel void @singlethread_release() {304 ; CHECK-LABEL: name: singlethread_release305 ; CHECK: bb.1 (%ir-block.0):306 ; CHECK-NEXT: liveins: $sgpr8_sgpr9307 ; CHECK-NEXT: {{ $}}308 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9309 ; CHECK-NEXT: G_FENCE 5, 0310 ; CHECK-NEXT: S_ENDPGM 0311 fence syncscope("singlethread") release312 ret void313}314 315define amdgpu_kernel void @singlethread_acq_rel() {316 ; CHECK-LABEL: name: singlethread_acq_rel317 ; CHECK: bb.1 (%ir-block.0):318 ; CHECK-NEXT: liveins: $sgpr8_sgpr9319 ; CHECK-NEXT: {{ $}}320 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9321 ; CHECK-NEXT: G_FENCE 6, 0322 ; CHECK-NEXT: S_ENDPGM 0323 fence syncscope("singlethread") acq_rel324 ret void325}326 327define amdgpu_kernel void @singlethread_seq_cst() {328 ; CHECK-LABEL: name: singlethread_seq_cst329 ; CHECK: bb.1 (%ir-block.0):330 ; CHECK-NEXT: liveins: $sgpr8_sgpr9331 ; CHECK-NEXT: {{ $}}332 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9333 ; CHECK-NEXT: G_FENCE 7, 0334 ; CHECK-NEXT: S_ENDPGM 0335 fence syncscope("singlethread") seq_cst336 ret void337}338 339define amdgpu_kernel void @agent_acquire() {340 ; CHECK-LABEL: name: agent_acquire341 ; CHECK: bb.1 (%ir-block.0):342 ; CHECK-NEXT: liveins: $sgpr8_sgpr9343 ; CHECK-NEXT: {{ $}}344 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9345 ; CHECK-NEXT: G_FENCE 4, 7346 ; CHECK-NEXT: S_ENDPGM 0347 fence syncscope("agent") acquire348 ret void349}350 351define amdgpu_kernel void @agent_release() {352 ; CHECK-LABEL: name: agent_release353 ; CHECK: bb.1 (%ir-block.0):354 ; CHECK-NEXT: liveins: $sgpr8_sgpr9355 ; CHECK-NEXT: {{ $}}356 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9357 ; CHECK-NEXT: G_FENCE 5, 7358 ; CHECK-NEXT: S_ENDPGM 0359 fence syncscope("agent") release360 ret void361}362 363define amdgpu_kernel void @agent_acq_rel() {364 ; CHECK-LABEL: name: agent_acq_rel365 ; CHECK: bb.1 (%ir-block.0):366 ; CHECK-NEXT: liveins: $sgpr8_sgpr9367 ; CHECK-NEXT: {{ $}}368 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9369 ; CHECK-NEXT: G_FENCE 6, 7370 ; CHECK-NEXT: S_ENDPGM 0371 fence syncscope("agent") acq_rel372 ret void373}374 375define amdgpu_kernel void @agent_seq_cst() {376 ; CHECK-LABEL: name: agent_seq_cst377 ; CHECK: bb.1 (%ir-block.0):378 ; CHECK-NEXT: liveins: $sgpr8_sgpr9379 ; CHECK-NEXT: {{ $}}380 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9381 ; CHECK-NEXT: G_FENCE 7, 7382 ; CHECK-NEXT: S_ENDPGM 0383 fence syncscope("agent") seq_cst384 ret void385}386 387define amdgpu_kernel void @workgroup_acquire() {388 ; CHECK-LABEL: name: workgroup_acquire389 ; CHECK: bb.1 (%ir-block.0):390 ; CHECK-NEXT: liveins: $sgpr8_sgpr9391 ; CHECK-NEXT: {{ $}}392 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9393 ; CHECK-NEXT: G_FENCE 4, 8394 ; CHECK-NEXT: S_ENDPGM 0395 fence syncscope("workgroup") acquire396 ret void397}398 399define amdgpu_kernel void @workgroup_release() {400 ; CHECK-LABEL: name: workgroup_release401 ; CHECK: bb.1 (%ir-block.0):402 ; CHECK-NEXT: liveins: $sgpr8_sgpr9403 ; CHECK-NEXT: {{ $}}404 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9405 ; CHECK-NEXT: G_FENCE 5, 8406 ; CHECK-NEXT: S_ENDPGM 0407 fence syncscope("workgroup") release408 ret void409}410 411define amdgpu_kernel void @workgroup_acq_rel() {412 ; CHECK-LABEL: name: workgroup_acq_rel413 ; CHECK: bb.1 (%ir-block.0):414 ; CHECK-NEXT: liveins: $sgpr8_sgpr9415 ; CHECK-NEXT: {{ $}}416 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9417 ; CHECK-NEXT: G_FENCE 6, 8418 ; CHECK-NEXT: S_ENDPGM 0419 fence syncscope("workgroup") acq_rel420 ret void421}422 423define amdgpu_kernel void @workgroup_seq_cst() {424 ; CHECK-LABEL: name: workgroup_seq_cst425 ; CHECK: bb.1 (%ir-block.0):426 ; CHECK-NEXT: liveins: $sgpr8_sgpr9427 ; CHECK-NEXT: {{ $}}428 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9429 ; CHECK-NEXT: G_FENCE 7, 8430 ; CHECK-NEXT: S_ENDPGM 0431 fence syncscope("workgroup") seq_cst432 ret void433}434 435define amdgpu_kernel void @wavefront_acquire() {436 ; CHECK-LABEL: name: wavefront_acquire437 ; CHECK: bb.1 (%ir-block.0):438 ; CHECK-NEXT: liveins: $sgpr8_sgpr9439 ; CHECK-NEXT: {{ $}}440 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9441 ; CHECK-NEXT: G_FENCE 4, 9442 ; CHECK-NEXT: S_ENDPGM 0443 fence syncscope("wavefront") acquire444 ret void445}446 447define amdgpu_kernel void @wavefront_release() {448 ; CHECK-LABEL: name: wavefront_release449 ; CHECK: bb.1 (%ir-block.0):450 ; CHECK-NEXT: liveins: $sgpr8_sgpr9451 ; CHECK-NEXT: {{ $}}452 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9453 ; CHECK-NEXT: G_FENCE 5, 9454 ; CHECK-NEXT: S_ENDPGM 0455 fence syncscope("wavefront") release456 ret void457}458 459define amdgpu_kernel void @wavefront_acq_rel() {460 ; CHECK-LABEL: name: wavefront_acq_rel461 ; CHECK: bb.1 (%ir-block.0):462 ; CHECK-NEXT: liveins: $sgpr8_sgpr9463 ; CHECK-NEXT: {{ $}}464 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9465 ; CHECK-NEXT: G_FENCE 6, 9466 ; CHECK-NEXT: S_ENDPGM 0467 fence syncscope("wavefront") acq_rel468 ret void469}470 471define amdgpu_kernel void @wavefront_seq_cst() {472 ; CHECK-LABEL: name: wavefront_seq_cst473 ; CHECK: bb.1 (%ir-block.0):474 ; CHECK-NEXT: liveins: $sgpr8_sgpr9475 ; CHECK-NEXT: {{ $}}476 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9477 ; CHECK-NEXT: G_FENCE 7, 9478 ; CHECK-NEXT: S_ENDPGM 0479 fence syncscope("wavefront") seq_cst480 ret void481}482