xref: /aosp_15_r20/external/llvm/test/CodeGen/Mips/llvm-ir/load-atomic.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mips -mcpu=mips32r2 < %s | FileCheck %s -check-prefix=ALL
2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mips -mcpu=mips32r6 < %s | FileCheck %s -check-prefix=ALL
3*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mips64 -mcpu=mips64r2 < %s | \
4*9880d681SAndroid Build Coastguard Worker; RUN:    FileCheck %s -check-prefixes=ALL,M64
5*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mips64 -mcpu=mips64r6 < %s | \
6*9880d681SAndroid Build Coastguard Worker; RUN:    FileCheck %s -check-prefixes=ALL,M64
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Workerdefine i8 @load_i8(i8* %ptr) {
9*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: load_i8
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Worker; ALL: lb $2, 0($4)
12*9880d681SAndroid Build Coastguard Worker; ALL: sync
13*9880d681SAndroid Build Coastguard Worker  %val = load atomic i8, i8* %ptr acquire, align 1
14*9880d681SAndroid Build Coastguard Worker  ret i8 %val
15*9880d681SAndroid Build Coastguard Worker}
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Workerdefine i16 @load_i16(i16* %ptr) {
18*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: load_i16
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Worker; ALL: lh $2, 0($4)
21*9880d681SAndroid Build Coastguard Worker; ALL: sync
22*9880d681SAndroid Build Coastguard Worker  %val = load atomic i16, i16* %ptr acquire, align 2
23*9880d681SAndroid Build Coastguard Worker  ret i16 %val
24*9880d681SAndroid Build Coastguard Worker}
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Workerdefine i32 @load_i32(i32* %ptr) {
27*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: load_i32
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Worker; ALL: lw $2, 0($4)
30*9880d681SAndroid Build Coastguard Worker; ALL: sync
31*9880d681SAndroid Build Coastguard Worker  %val = load atomic i32, i32* %ptr acquire, align 4
32*9880d681SAndroid Build Coastguard Worker  ret i32 %val
33*9880d681SAndroid Build Coastguard Worker}
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Workerdefine i64 @load_i64(i64* %ptr) {
36*9880d681SAndroid Build Coastguard Worker; M64-LABEL: load_i64
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Worker; M64: ld $2, 0($4)
39*9880d681SAndroid Build Coastguard Worker; M64: sync
40*9880d681SAndroid Build Coastguard Worker  %val = load atomic i64, i64* %ptr acquire, align 8
41*9880d681SAndroid Build Coastguard Worker  ret i64 %val
42*9880d681SAndroid Build Coastguard Worker}
43