Home | History | Annotate | Download | only in X86
      1 ; RUN: llc < %s -march=x86-64 -mcpu=generic | FileCheck %s
      2 ; RUN: llc < %s -march=x86 -mcpu=generic | FileCheck %s --check-prefix=CHECK --check-prefix=X86
      3 
      4 ; Verify that we correctly lower ISD::READCYCLECOUNTER.
      5 
      6 
      7 define i64 @test_builtin_readcyclecounter() {
      8   %1 = tail call i64 @llvm.readcyclecounter()
      9   ret i64 %1
     10 }
     11 ; CHECK-LABEL: test_builtin_readcyclecounter
     12 ; CHECK: rdtsc
     13 ; X86-NOT: shlq
     14 ; X86-NOT: or
     15 ; CHECK-NOT: mov
     16 ; CHECK: ret
     17 
     18 
     19 ; Verify that we correctly lower the Read Cycle Counter GCC x86 builtins
     20 ; (i.e. RDTSC and RDTSCP).
     21 
     22 define i64 @test_builtin_rdtsc() {
     23   %1 = tail call i64 @llvm.x86.rdtsc()
     24   ret i64 %1
     25 }
     26 ; CHECK-LABEL: test_builtin_rdtsc
     27 ; CHECK: rdtsc
     28 ; X86-NOT: shlq
     29 ; X86-NOT: or
     30 ; CHECK-NOT: mov
     31 ; CHECK: ret
     32 
     33 
     34 define i64 @test_builtin_rdtscp(i8* %A) {
     35   %1 = tail call i64 @llvm.x86.rdtscp(i8* %A)
     36   ret i64 %1
     37 }
     38 ; CHECK-LABEL: test_builtin_rdtscp
     39 ; CHECK: rdtscp
     40 ; X86-NOT: shlq
     41 ; CHECK:   movl	%ecx, (%{{[a-z0-9]+}})
     42 ; X86-NOT: shlq
     43 ; CHECK: ret
     44 
     45 
     46 declare i64 @llvm.readcyclecounter()
     47 declare i64 @llvm.x86.rdtscp(i8*)
     48 declare i64 @llvm.x86.rdtsc()
     49 
     50