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