brintos

brintos / llvm-project-archived public Read only

0
0
Text · 887 B · c51777e Raw
23 lines · c
1// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s2 3int test__builtin_clrsb(int x) {4// CHECK-LABEL: test__builtin_clrsb5// CHECK: [[C:%.*]] = icmp slt i32 [[X:%.*]], 06// CHECK-NEXT: [[INV:%.*]] = xor i32 [[X]], -17// CHECK-NEXT: [[SEL:%.*]] = select i1 [[C]], i32 [[INV]], i32 [[X]]8// CHECK-NEXT: [[CTLZ:%.*]] = call i32 @llvm.ctlz.i32(i32 [[SEL]], i1 false)9// CHECK-NEXT: [[SUB:%.*]] = sub i32 [[CTLZ]], 110  return __builtin_clrsb(x);11}12 13int test__builtin_clrsbll(long long x) {14// CHECK-LABEL: test__builtin_clrsbll15// CHECK: [[C:%.*]] = icmp slt i64 [[X:%.*]], 016// CHECK-NEXT: [[INV:%.*]] = xor i64 [[X]], -117// CHECK-NEXT: [[SEL:%.*]] = select i1 [[C]], i64 [[INV]], i64 [[X]]18// CHECK-NEXT: [[CTLZ:%.*]] = call i64 @llvm.ctlz.i64(i64 [[SEL]], i1 false)19// CHECK-NEXT: [[SUB:%.*]] = sub i64 [[CTLZ]], 120// CHECK-NEXT: trunc i64 [[SUB]] to i3221  return __builtin_clrsbll(x);22}23