CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
577 lines
11 KiB
LLVM
577 lines
11 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
|
|
; RUN: llc < %s -march=nvptx64 -mcpu=sm_30 -mattr=+ptx50 | FileCheck %s --check-prefix=SM30
|
|
; RUN: %if ptxas-sm_30 && ptxas-isa-5.0 %{ llc < %s -march=nvptx64 -mcpu=sm_30 -mattr=+ptx50 | %ptxas-verify -arch=sm_30 %}
|
|
; RUN: llc < %s -march=nvptx64 -mcpu=sm_70 -mattr=+ptx60 | FileCheck %s --check-prefix=SM70
|
|
; RUN: %if ptxas-sm_70 && ptxas-isa-6.0 %{ llc < %s -march=nvptx64 -mcpu=sm_70 -mattr=+ptx60 | %ptxas-verify -arch=sm_70 %}
|
|
; RUN: llc < %s -march=nvptx64 -mcpu=sm_90 -mattr=+ptx87 | FileCheck %s --check-prefix=SM90
|
|
; RUN: %if ptxas-sm_90 && ptxas-isa-8.7 %{ llc < %s -march=nvptx64 -mcpu=sm_90 -mattr=+ptx87 | %ptxas-verify -arch=sm_90 %}
|
|
; NOTE: Please do not modify this file manually- instead modify fence.py
|
|
|
|
define void @fence_acquire_thread() {
|
|
; SM30-LABEL: fence_acquire_thread(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_acquire_thread(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_acquire_thread(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("singlethread") acquire
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_acquire_sys() {
|
|
; SM30-LABEL: fence_acquire_sys(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: membar.sys;
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_acquire_sys(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: fence.acq_rel.sys;
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_acquire_sys(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: fence.acquire.sys;
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("") acquire
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_acquire_cta() {
|
|
; SM30-LABEL: fence_acquire_cta(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: membar.cta;
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_acquire_cta(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: fence.acq_rel.cta;
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_acquire_cta(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: fence.acquire.cta;
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("block") acquire
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_acquire_cluster() {
|
|
; SM30-LABEL: fence_acquire_cluster(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: membar.cta;
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_acquire_cluster(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: fence.acq_rel.cta;
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_acquire_cluster(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: fence.acquire.cluster;
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("cluster") acquire
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_acquire_gpu() {
|
|
; SM30-LABEL: fence_acquire_gpu(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: membar.gl;
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_acquire_gpu(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: fence.acq_rel.gpu;
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_acquire_gpu(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: fence.acquire.gpu;
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("device") acquire
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_release_thread() {
|
|
; SM30-LABEL: fence_release_thread(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_release_thread(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_release_thread(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("singlethread") release
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_release_sys() {
|
|
; SM30-LABEL: fence_release_sys(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: membar.sys;
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_release_sys(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: fence.acq_rel.sys;
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_release_sys(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: fence.release.sys;
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("") release
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_release_cta() {
|
|
; SM30-LABEL: fence_release_cta(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: membar.cta;
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_release_cta(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: fence.acq_rel.cta;
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_release_cta(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: fence.release.cta;
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("block") release
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_release_cluster() {
|
|
; SM30-LABEL: fence_release_cluster(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: membar.cta;
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_release_cluster(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: fence.acq_rel.cta;
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_release_cluster(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: fence.release.cluster;
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("cluster") release
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_release_gpu() {
|
|
; SM30-LABEL: fence_release_gpu(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: membar.gl;
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_release_gpu(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: fence.acq_rel.gpu;
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_release_gpu(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: fence.release.gpu;
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("device") release
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_acq_rel_thread() {
|
|
; SM30-LABEL: fence_acq_rel_thread(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_acq_rel_thread(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_acq_rel_thread(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("singlethread") acq_rel
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_acq_rel_sys() {
|
|
; SM30-LABEL: fence_acq_rel_sys(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: membar.sys;
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_acq_rel_sys(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: fence.acq_rel.sys;
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_acq_rel_sys(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: fence.acq_rel.sys;
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("") acq_rel
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_acq_rel_cta() {
|
|
; SM30-LABEL: fence_acq_rel_cta(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: membar.cta;
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_acq_rel_cta(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: fence.acq_rel.cta;
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_acq_rel_cta(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: fence.acq_rel.cta;
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("block") acq_rel
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_acq_rel_cluster() {
|
|
; SM30-LABEL: fence_acq_rel_cluster(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: membar.cta;
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_acq_rel_cluster(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: fence.acq_rel.cta;
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_acq_rel_cluster(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: fence.acq_rel.cluster;
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("cluster") acq_rel
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_acq_rel_gpu() {
|
|
; SM30-LABEL: fence_acq_rel_gpu(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: membar.gl;
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_acq_rel_gpu(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: fence.acq_rel.gpu;
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_acq_rel_gpu(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: fence.acq_rel.gpu;
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("device") acq_rel
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_seq_cst_thread() {
|
|
; SM30-LABEL: fence_seq_cst_thread(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_seq_cst_thread(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_seq_cst_thread(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("singlethread") seq_cst
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_seq_cst_sys() {
|
|
; SM30-LABEL: fence_seq_cst_sys(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: membar.sys;
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_seq_cst_sys(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: fence.sc.sys;
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_seq_cst_sys(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: fence.sc.sys;
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("") seq_cst
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_seq_cst_cta() {
|
|
; SM30-LABEL: fence_seq_cst_cta(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: membar.cta;
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_seq_cst_cta(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: fence.sc.cta;
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_seq_cst_cta(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: fence.sc.cta;
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("block") seq_cst
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_seq_cst_cluster() {
|
|
; SM30-LABEL: fence_seq_cst_cluster(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: membar.cta;
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_seq_cst_cluster(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: fence.sc.cta;
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_seq_cst_cluster(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: fence.sc.cluster;
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("cluster") seq_cst
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @fence_seq_cst_gpu() {
|
|
; SM30-LABEL: fence_seq_cst_gpu(
|
|
; SM30: {
|
|
; SM30-EMPTY:
|
|
; SM30-EMPTY:
|
|
; SM30-NEXT: // %bb.0:
|
|
; SM30-NEXT: membar.gl;
|
|
; SM30-NEXT: ret;
|
|
;
|
|
; SM70-LABEL: fence_seq_cst_gpu(
|
|
; SM70: {
|
|
; SM70-EMPTY:
|
|
; SM70-EMPTY:
|
|
; SM70-NEXT: // %bb.0:
|
|
; SM70-NEXT: fence.sc.gpu;
|
|
; SM70-NEXT: ret;
|
|
;
|
|
; SM90-LABEL: fence_seq_cst_gpu(
|
|
; SM90: {
|
|
; SM90-EMPTY:
|
|
; SM90-EMPTY:
|
|
; SM90-NEXT: // %bb.0:
|
|
; SM90-NEXT: fence.sc.gpu;
|
|
; SM90-NEXT: ret;
|
|
fence syncscope("device") seq_cst
|
|
ret void
|
|
}
|
|
|