brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · dab6d2f Raw
56 lines · c
1// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm < %s| FileCheck %s2 3// Test that we have the structure definition, the gep offsets, the name of the4// global, the bit grab, and the icmp correct.5extern void a(const char *);6 7// CHECK: @__cpu_model = external dso_local global { i32, i32, i32, [1 x i32] }8 9void intel(void) {10  if (__builtin_cpu_is("intel"))11    a("intel");12 13  // CHECK: [[LOAD:%[^ ]+]] = load i32, ptr @__cpu_model14  // CHECK: = icmp eq i32 [[LOAD]], 115}16 17void amd(void) {18  if (__builtin_cpu_is("amd"))19    a("amd");20 21  // CHECK: [[LOAD:%[^ ]+]] = load i32, ptr @__cpu_model22  // CHECK: = icmp eq i32 [[LOAD]], 223}24 25void atom(void) {26  if (__builtin_cpu_is("atom"))27    a("atom");28 29  // CHECK: [[LOAD:%[^ ]+]] = load i32, ptr getelementptr inbounds ({ i32, i32, i32, [1 x i32] }, ptr @__cpu_model, i32 0, i32 1)30  // CHECK: = icmp eq i32 [[LOAD]], 131}32 33void amdfam10h(void) {34  if (__builtin_cpu_is("amdfam10h"))35    a("amdfam10h");36 37  // CHECK: [[LOAD:%[^ ]+]] = load i32, ptr getelementptr inbounds ({ i32, i32, i32, [1 x i32] }, ptr @__cpu_model, i32 0, i32 1)38  // CHECK: = icmp eq i32 [[LOAD]], 439}40 41void barcelona(void) {42  if (__builtin_cpu_is("barcelona"))43    a("barcelona");44 45  // CHECK: [[LOAD:%[^ ]+]] = load i32, ptr getelementptr inbounds ({ i32, i32, i32, [1 x i32] }, ptr @__cpu_model, i32 0, i32 2)46  // CHECK: = icmp eq i32 [[LOAD]], 447}48 49void nehalem(void) {50  if (__builtin_cpu_is("nehalem"))51    a("nehalem");52 53  // CHECK: [[LOAD:%[^ ]+]] = load i32, ptr getelementptr inbounds ({ i32, i32, i32, [1 x i32] }, ptr @__cpu_model, i32 0, i32 2)54  // CHECK: = icmp eq i32 [[LOAD]], 155}56