brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 03bf0af Raw
38 lines · c
1// RUN: %clang_cc1 -ffreestanding %s -triple=i686-- -target-feature +rdpru -emit-llvm -o - -Wall -Werror | FileCheck %s2// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-- -target-feature +rdpru -emit-llvm -o - -Wall -Werror | FileCheck %s3// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-- -target-cpu znver2 -emit-llvm -o - -Wall -Werror | FileCheck %s4 5#include <x86intrin.h>6 7// NOTE: This should correspond to the tests in llvm/test/CodeGen/X86/rdpru.ll8 9unsigned long long test_rdpru(int regid) {10  // CHECK-LABEL: test_rdpru11  // CHECK: [[RESULT:%.*]] = call i64 @llvm.x86.rdpru(i32 %{{.*}})12  // CHECK-NEXT: ret i64 [[RESULT]]13  return __rdpru(regid);14}15 16unsigned long long test_mperf() {17  // CHECK-LABEL: test_mperf18  // CHECK: [[RESULT:%.*]] = call i64 @llvm.x86.rdpru(i32 0)19  // CHECK-NEXT: ret i64 [[RESULT]]20  return __mperf();21}22 23unsigned long long test_aperf() {24  // CHECK-LABEL: test_aperf25  // CHECK: [[RESULT:%.*]] = call i64 @llvm.x86.rdpru(i32 1)26  // CHECK-NEXT: ret i64 [[RESULT]]27  return __aperf();28}29 30void test_direct_calls_to_builtin_rdpru(int regid) {31  // CHECK: call i64 @llvm.x86.rdpru(i32 0)32  // CHECK: call i64 @llvm.x86.rdpru(i32 1)33  // CHECK: call i64 @llvm.x86.rdpru(i32 %{{.*}})34  (void) __builtin_ia32_rdpru(0);35  (void) __builtin_ia32_rdpru(1);36  (void) __builtin_ia32_rdpru(regid);37}38