📄 atomic_support.s
字号:
// Copyright 2005-2007 Intel Corporation. All Rights Reserved.//// This file is part of Threading Building Blocks.//// Threading Building Blocks is free software; you can redistribute it// and/or modify it under the terms of the GNU General Public License// version 2 as published by the Free Software Foundation.//// Threading Building Blocks is distributed in the hope that it will be// useful, but WITHOUT ANY WARRANTY; without even the implied warranty// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Threading Building Blocks; if not, write to the Free Software// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA//// As a special exception, you may use this file as part of a free software// library without restriction. Specifically, if other files instantiate// templates or use macros or inline functions from this file, or you compile// this file and link it with other files to produce an executable, this// file does not by itself cause the resulting executable to be covered by// the GNU General Public License. This exception does not however// invalidate any other reasons why the executable file might be covered by// the GNU General Public License.// DO NOT EDIT - AUTOMATICALLY GENERATED FROM tools/generate_atomic/ipf_generate.sh# 1 "<stdin>"# 1 "<built-in>"# 1 "<command line>"# 1 "<stdin>" .section .text .align 16 .proc __TBB_machine_fetchadd1__TBB_full_fence# .global __TBB_machine_fetchadd1__TBB_full_fence#__TBB_machine_fetchadd1__TBB_full_fence:{ mf br __TBB_machine_fetchadd1acquire} .endp __TBB_machine_fetchadd1__TBB_full_fence# .proc __TBB_machine_fetchadd1acquire# .global __TBB_machine_fetchadd1acquire#__TBB_machine_fetchadd1acquire: ld1 r9=[r32];;Retry_1acquire: mov ar.ccv=r9 mov r8=r9; add r10=r9,r33;; cmpxchg1.acq r9=[r32],r10,ar.ccv;; cmp.ne p7,p0=r8,r9 (p7) br.cond.dpnt Retry_1acquire br.ret.sptk.many b0# 49 "<stdin>" .endp __TBB_machine_fetchadd1acquire## 62 "<stdin>" .section .text .align 16 .proc __TBB_machine_fetchstore1__TBB_full_fence# .global __TBB_machine_fetchstore1__TBB_full_fence#__TBB_machine_fetchstore1__TBB_full_fence: mf;; xchg1 r8=[r32],r33 br.ret.sptk.many b0 .endp __TBB_machine_fetchstore1__TBB_full_fence# .proc __TBB_machine_fetchstore1acquire# .global __TBB_machine_fetchstore1acquire#__TBB_machine_fetchstore1acquire: xchg1 r8=[r32],r33 br.ret.sptk.many b0 .endp __TBB_machine_fetchstore1acquire## 88 "<stdin>" .section .text .align 16 .proc __TBB_machine_cmpswp1__TBB_full_fence# .global __TBB_machine_cmpswp1__TBB_full_fence#__TBB_machine_cmpswp1__TBB_full_fence:{ mf br __TBB_machine_cmpswp1acquire} .endp __TBB_machine_cmpswp1__TBB_full_fence# .proc __TBB_machine_cmpswp1acquire# .global __TBB_machine_cmpswp1acquire#__TBB_machine_cmpswp1acquire: zxt1 r34=r34;; mov ar.ccv=r34;; cmpxchg1.acq r8=[r32],r33,ar.ccv br.ret.sptk.many b0 .endp __TBB_machine_cmpswp1acquire#// DO NOT EDIT - AUTOMATICALLY GENERATED FROM tools/generate_atomic/ipf_generate.sh# 1 "<stdin>"# 1 "<built-in>"# 1 "<command line>"# 1 "<stdin>" .section .text .align 16 .proc __TBB_machine_fetchadd2__TBB_full_fence# .global __TBB_machine_fetchadd2__TBB_full_fence#__TBB_machine_fetchadd2__TBB_full_fence:{ mf br __TBB_machine_fetchadd2acquire} .endp __TBB_machine_fetchadd2__TBB_full_fence# .proc __TBB_machine_fetchadd2acquire# .global __TBB_machine_fetchadd2acquire#__TBB_machine_fetchadd2acquire: ld2 r9=[r32];;Retry_2acquire: mov ar.ccv=r9 mov r8=r9; add r10=r9,r33;; cmpxchg2.acq r9=[r32],r10,ar.ccv;; cmp.ne p7,p0=r8,r9 (p7) br.cond.dpnt Retry_2acquire br.ret.sptk.many b0# 49 "<stdin>" .endp __TBB_machine_fetchadd2acquire## 62 "<stdin>" .section .text .align 16 .proc __TBB_machine_fetchstore2__TBB_full_fence# .global __TBB_machine_fetchstore2__TBB_full_fence#__TBB_machine_fetchstore2__TBB_full_fence: mf;; xchg2 r8=[r32],r33 br.ret.sptk.many b0 .endp __TBB_machine_fetchstore2__TBB_full_fence# .proc __TBB_machine_fetchstore2acquire# .global __TBB_machine_fetchstore2acquire#__TBB_machine_fetchstore2acquire: xchg2 r8=[r32],r33 br.ret.sptk.many b0 .endp __TBB_machine_fetchstore2acquire## 88 "<stdin>" .section .text .align 16 .proc __TBB_machine_cmpswp2__TBB_full_fence# .global __TBB_machine_cmpswp2__TBB_full_fence#__TBB_machine_cmpswp2__TBB_full_fence:{ mf br __TBB_machine_cmpswp2acquire} .endp __TBB_machine_cmpswp2__TBB_full_fence# .proc __TBB_machine_cmpswp2acquire# .global __TBB_machine_cmpswp2acquire#__TBB_machine_cmpswp2acquire: zxt2 r34=r34;; mov ar.ccv=r34;; cmpxchg2.acq r8=[r32],r33,ar.ccv br.ret.sptk.many b0 .endp __TBB_machine_cmpswp2acquire#// DO NOT EDIT - AUTOMATICALLY GENERATED FROM tools/generate_atomic/ipf_generate.sh# 1 "<stdin>"# 1 "<built-in>"# 1 "<command line>"# 1 "<stdin>" .section .text .align 16 .proc __TBB_machine_fetchadd4__TBB_full_fence# .global __TBB_machine_fetchadd4__TBB_full_fence#__TBB_machine_fetchadd4__TBB_full_fence:{ mf br __TBB_machine_fetchadd4acquire} .endp __TBB_machine_fetchadd4__TBB_full_fence# .proc __TBB_machine_fetchadd4acquire# .global __TBB_machine_fetchadd4acquire#__TBB_machine_fetchadd4acquire: cmp.eq p6,p0=1,r33 cmp.eq p8,p0=-1,r33 (p6) br.cond.dptk Inc_4acquire (p8) br.cond.dpnt Dec_4acquire;; ld4 r9=[r32];;Retry_4acquire: mov ar.ccv=r9 mov r8=r9; add r10=r9,r33;; cmpxchg4.acq r9=[r32],r10,ar.ccv;; cmp.ne p7,p0=r8,r9 (p7) br.cond.dpnt Retry_4acquire br.ret.sptk.many b0Inc_4acquire: fetchadd4.acq r8=[r32],1 br.ret.sptk.many b0Dec_4acquire: fetchadd4.acq r8=[r32],-1 br.ret.sptk.many b0 .endp __TBB_machine_fetchadd4acquire## 62 "<stdin>" .section .text .align 16 .proc __TBB_machine_fetchstore4__TBB_full_fence# .global __TBB_machine_fetchstore4__TBB_full_fence#__TBB_machine_fetchstore4__TBB_full_fence: mf;; xchg4 r8=[r32],r33 br.ret.sptk.many b0 .endp __TBB_machine_fetchstore4__TBB_full_fence# .proc __TBB_machine_fetchstore4acquire# .global __TBB_machine_fetchstore4acquire#__TBB_machine_fetchstore4acquire: xchg4 r8=[r32],r33 br.ret.sptk.many b0 .endp __TBB_machine_fetchstore4acquire## 88 "<stdin>" .section .text .align 16 .proc __TBB_machine_cmpswp4__TBB_full_fence# .global __TBB_machine_cmpswp4__TBB_full_fence#__TBB_machine_cmpswp4__TBB_full_fence:{ mf br __TBB_machine_cmpswp4acquire} .endp __TBB_machine_cmpswp4__TBB_full_fence# .proc __TBB_machine_cmpswp4acquire# .global __TBB_machine_cmpswp4acquire#__TBB_machine_cmpswp4acquire: zxt4 r34=r34;; mov ar.ccv=r34;; cmpxchg4.acq r8=[r32],r33,ar.ccv br.ret.sptk.many b0 .endp __TBB_machine_cmpswp4acquire#// DO NOT EDIT - AUTOMATICALLY GENERATED FROM tools/generate_atomic/ipf_generate.sh# 1 "<stdin>"# 1 "<built-in>"# 1 "<command line>"# 1 "<stdin>" .section .text .align 16 .proc __TBB_machine_fetchadd8__TBB_full_fence# .global __TBB_machine_fetchadd8__TBB_full_fence#__TBB_machine_fetchadd8__TBB_full_fence:{ mf br __TBB_machine_fetchadd8acquire} .endp __TBB_machine_fetchadd8__TBB_full_fence# .proc __TBB_machine_fetchadd8acquire# .global __TBB_machine_fetchadd8acquire#__TBB_machine_fetchadd8acquire: cmp.eq p6,p0=1,r33 cmp.eq p8,p0=-1,r33 (p6) br.cond.dptk Inc_8acquire (p8) br.cond.dpnt Dec_8acquire
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -