[X86] X86DAGToDAGISel - attempt to merge XMM/YMM loads with YMM/ZMM loads of the...
[llvm-project.git] / llvm / test / CodeGen / PowerPC / pr30451.ll
blob96f4e95b7c7479a2ad731ca034bf85e2a6fd99e3
1 ; RUN: llc < %s -mcpu=pwr8 -mtriple=powerpc64le-unknown-unknown | FileCheck %s
2 define i8 @atomic_min_i8() {
3     top:
4       %0 = alloca i8, align 2
5       call void @llvm.lifetime.start.p0(i64 2, ptr %0)
6       store i8 -1, ptr %0, align 2
7       %1 = atomicrmw min ptr %0, i8 0 acq_rel
8       %2 = load atomic i8, ptr %0 acquire, align 8
9       call void @llvm.lifetime.end.p0(i64 2, ptr %0)
10       ret i8 %2
11 ; CHECK-LABEL: atomic_min_i8
12 ; CHECK: lbarx [[DST:[0-9]+]],
13 ; CHECK-NEXT: extsb [[EXT:[0-9]+]], [[DST]]
14 ; CHECK-NEXT: cmpw [[EXT]], {{[0-9]+}}
15 ; CHECK-NEXT: blt 0
17 define i16 @atomic_min_i16() {
18     top:
19       %0 = alloca i16, align 2
20       call void @llvm.lifetime.start.p0(i64 2, ptr %0)
21       store i16 -1, ptr %0, align 2
22       %1 = atomicrmw min ptr %0, i16 0 acq_rel
23       %2 = load atomic i16, ptr %0 acquire, align 8
24       call void @llvm.lifetime.end.p0(i64 2, ptr %0)
25       ret i16 %2
26 ; CHECK-LABEL: atomic_min_i16
27 ; CHECK: lharx [[DST:[0-9]+]],
28 ; CHECK-NEXT: extsh [[EXT:[0-9]+]], [[DST]]
29 ; CHECK-NEXT: cmpw [[EXT]], {{[0-9]+}}
30 ; CHECK-NEXT: blt 0
33 define i8 @atomic_max_i8() {
34     top:
35       %0 = alloca i8, align 2
36       call void @llvm.lifetime.start.p0(i64 2, ptr %0)
37       store i8 -1, ptr %0, align 2
38       %1 = atomicrmw max ptr %0, i8 0 acq_rel
39       %2 = load atomic i8, ptr %0 acquire, align 8
40       call void @llvm.lifetime.end.p0(i64 2, ptr %0)
41       ret i8 %2
42 ; CHECK-LABEL: atomic_max_i8
43 ; CHECK: lbarx [[DST:[0-9]+]],
44 ; CHECK-NEXT: extsb [[EXT:[0-9]+]], [[DST]]
45 ; CHECK-NEXT: cmpw [[EXT]], {{[0-9]+}}
46 ; CHECK-NEXT: bgt 0
48 define i16 @atomic_max_i16() {
49     top:
50       %0 = alloca i16, align 2
51       call void @llvm.lifetime.start.p0(i64 2, ptr %0)
52       store i16 -1, ptr %0, align 2
53       %1 = atomicrmw max ptr %0, i16 0 acq_rel
54       %2 = load atomic i16, ptr %0 acquire, align 8
55       call void @llvm.lifetime.end.p0(i64 2, ptr %0)
56       ret i16 %2
57 ; CHECK-LABEL: atomic_max_i16
58 ; CHECK: lharx [[DST:[0-9]+]],
59 ; CHECK-NEXT: extsh [[EXT:[0-9]+]], [[DST]]
60 ; CHECK-NEXT: cmpw [[EXT]], {{[0-9]+}}
61 ; CHECK-NEXT: bgt 0
64 declare void @llvm.lifetime.start.p0(i64, ptr)
65 declare void @llvm.lifetime.end.p0(i64, ptr)