| ; RUN: llc < %s -mtriple=xcore | FileCheck %s | |
| ; CHECK-LABEL: atomic_fence | |
| ; CHECK: #MEMBARRIER | |
| ; CHECK: #MEMBARRIER | |
| ; CHECK: #MEMBARRIER | |
| ; CHECK: #MEMBARRIER | |
| ; CHECK: retsp 0 | |
| define void @atomic_fence() nounwind { | |
| entry: | |
| fence acquire | |
| fence release | |
| fence acq_rel | |
| fence seq_cst | |
| ret void | |
| } | |
| @pool = external global i64 | |
| define void @atomicloadstore() nounwind { | |
| entry: | |
| ; CHECK-LABEL: atomicloadstore | |
| ; CHECK: __atomic_load_4 | |
| %0 = load atomic i32, ptr @pool seq_cst, align 4 | |
| ; CHECK: __atomic_load_2 | |
| %1 = load atomic i16, ptr @pool seq_cst, align 2 | |
| ; CHECK: __atomic_load_1 | |
| %2 = load atomic i8, ptr @pool seq_cst, align 1 | |
| ; CHECK: __atomic_store_4 | |
| store atomic i32 %0, ptr @pool seq_cst, align 4 | |
| ; CHECK: __atomic_store_2 | |
| store atomic i16 %1, ptr @pool seq_cst, align 2 | |
| ; CHECK: __atomic_store_1 | |
| store atomic i8 %2, ptr @pool seq_cst, align 1 | |
| ret void | |
| } |