xref: /llvm-project/clang/test/CodeGen/PowerPC/builtins-ppc-xlcompat-darn.c (revision f563bd74cb9a4f0d2d3eb49d35536b648361ec53)
1 // REQUIRES: powerpc-registered-target
2 // RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu \
3 // RUN:    -emit-llvm %s -o -  -target-cpu pwr9 | \
4 // RUN:    FileCheck %s --check-prefix=CHECK-64
5 // RUN: %clang_cc1 -triple powerpc64le-unknown-linux-gnu \
6 // RUN:   -emit-llvm %s -o -  -target-cpu pwr9 | \
7 // RUN:    FileCheck %s --check-prefix=CHECK-64
8 // RUN: %clang_cc1 -triple powerpc64-unknown-aix \
9 // RUN:    -emit-llvm %s -o -  -target-cpu pwr9 | \
10 // RUN:    FileCheck %s --check-prefix=CHECK-64
11 // RUN: %clang_cc1 -triple powerpc-unknown-linux-gnu \
12 // RUN:    -emit-llvm %s -o -  -target-cpu pwr9 | FileCheck %s
13 // RUN: %clang_cc1 -triple powerpcle-unknown-linux-gnu \
14 // RUN:   -emit-llvm %s -o -  -target-cpu pwr9 | FileCheck %s
15 // RUN: %clang_cc1 -triple powerpc-unknown-aix \
16 // RUN:    -emit-llvm %s -o -  -target-cpu pwr9 | FileCheck %s
17 
18 // The darn class of builtins are Power 9 and up and only darn_32 works in
19 // 32 bit mode.
20 
21 #ifdef __PPC64__
22 // CHECK-64-LABEL: @testdarn(
23 // CHECK-64:         [[TMP0:%.*]] = call i64 @llvm.ppc.darn()
24 // CHECK-64-NEXT:    ret i64 [[TMP0]]
25 //
testdarn(void)26 long long testdarn(void) {
27   return __darn();
28 }
29 
30 // CHECK-64-LABEL: @testdarn_raw(
31 // CHECK-64:         [[TMP0:%.*]] = call i64 @llvm.ppc.darnraw()
32 // CHECK-64-NEXT:    ret i64 [[TMP0]]
33 //
testdarn_raw(void)34 long long testdarn_raw(void) {
35   return __darn_raw();
36 }
37 #endif
38 
39 // CHECK-LABEL: @testdarn_32(
40 // CHECK:         [[TMP0:%.*]] = call i32 @llvm.ppc.darn32()
41 // CHECK-NEXT:    ret i32 [[TMP0]]
42 //
testdarn_32(void)43 int testdarn_32(void) {
44   return __darn_32();
45 }
46