xref: /llvm-project/llvm/test/CodeGen/PowerPC/builtins-ppc-xlcompat-sync-64.ll (revision 427fb35192f1f7bb694a5910b05abc5925a798b2)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-unknown \
3; RUN:   --ppc-asm-full-reg-names -mcpu=pwr7 < %s | FileCheck %s
4; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-unknown \
5; RUN:   --ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s
6; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-aix \
7; RUN:   --ppc-asm-full-reg-names -mcpu=pwr7 < %s | FileCheck %s
8
9define dso_local i64 @test_builtin_ppc_popcntb_i64(i64 %a) local_unnamed_addr {
10; CHECK-LABEL: test_builtin_ppc_popcntb_i64:
11; CHECK:       # %bb.0: # %entry
12; CHECK-NEXT:    popcntb r3, r3
13; CHECK-NEXT:    blr
14entry:
15  %popcntb = tail call i64 @llvm.ppc.popcntb.i64.i64(i64 %a)
16  ret i64 %popcntb
17}
18declare i64 @llvm.ppc.popcntb.i64.i64(i64)
19
20define dso_local void @test_builtin_ppc_eieio() {
21; CHECK-LABEL: test_builtin_ppc_eieio:
22; CHECK:       # %bb.0: # %entry
23; CHECK-NEXT:    ori r2, r2, 0
24; CHECK-NEXT:    ori r2, r2, 0
25; CHECK-NEXT:    eieio
26; CHECK-NEXT:    blr
27entry:
28  call void @llvm.ppc.eieio()
29  ret void
30}
31declare void @llvm.ppc.eieio()
32
33define dso_local void @test_builtin_ppc_iospace_eieio() {
34; CHECK-LABEL: test_builtin_ppc_iospace_eieio:
35; CHECK:       # %bb.0: # %entry
36; CHECK-NEXT:    ori r2, r2, 0
37; CHECK-NEXT:    ori r2, r2, 0
38; CHECK-NEXT:    eieio
39; CHECK-NEXT:    blr
40entry:
41  call void @llvm.ppc.iospace.eieio()
42  ret void
43}
44declare void @llvm.ppc.iospace.eieio()
45
46define dso_local void @test_builtin_ppc_iospace_lwsync() {
47; CHECK-LABEL: test_builtin_ppc_iospace_lwsync:
48; CHECK:       # %bb.0: # %entry
49; CHECK-NEXT:    lwsync
50; CHECK-NEXT:    blr
51entry:
52  call void @llvm.ppc.iospace.lwsync()
53  ret void
54}
55declare void @llvm.ppc.iospace.lwsync()
56
57define dso_local void @test_builtin_ppc_iospace_sync() {
58; CHECK-LABEL: test_builtin_ppc_iospace_sync:
59; CHECK:       # %bb.0: # %entry
60; CHECK-NEXT:    sync
61; CHECK-NEXT:    blr
62entry:
63  call void @llvm.ppc.iospace.sync()
64  ret void
65}
66declare void @llvm.ppc.iospace.sync()
67
68define dso_local void @test_builtin_ppc_icbt() {
69; CHECK-LABEL: test_builtin_ppc_icbt:
70; CHECK:       # %bb.0: # %entry
71; CHECK-NEXT:    ld r3, -8(r1)
72; CHECK-NEXT:    icbt 0, 0, r3
73; CHECK-NEXT:    blr
74entry:
75  %a = alloca ptr, align 8
76  %0 = load ptr, ptr %a, align 8
77  call void @llvm.ppc.icbt(ptr %0)
78  ret void
79}
80declare void @llvm.ppc.icbt(ptr)
81