Clang Project

clang_source_code/test/CodeGen/builtin-abs.c
1// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm %s -o - | FileCheck %s
2
3int absi(int x) {
4// CHECK-LABEL: @absi(
5// CHECK:   [[NEG:%.*]] = sub nsw i32 0, [[X:%.*]]
6// CHECK:   [[CMP:%.*]] = icmp slt i32 [[X]], 0
7// CHECK:   [[SEL:%.*]] = select i1 [[CMP]], i32 [[NEG]], i32 [[X]]
8//
9  return __builtin_abs(x);
10}
11
12long absl(long x) {
13// CHECK-LABEL: @absl(
14// CHECK:   [[NEG:%.*]] = sub nsw i64 0, [[X:%.*]]
15// CHECK:   [[CMP:%.*]] = icmp slt i64 [[X]], 0
16// CHECK:   [[SEL:%.*]] = select i1 [[CMP]], i64 [[NEG]], i64 [[X]]
17//
18  return __builtin_labs(x);
19}
20
21long long absll(long long x) {
22// CHECK-LABEL: @absll(
23// CHECK:   [[NEG:%.*]] = sub nsw i64 0, [[X:%.*]]
24// CHECK:   [[CMP:%.*]] = icmp slt i64 [[X]], 0
25// CHECK:   [[SEL:%.*]] = select i1 [[CMP]], i64 [[NEG]], i64 [[X]]
26//
27  return __builtin_llabs(x);
28}
29
30