brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 1efdfd1 Raw
74 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-unknown -mcpu=generic | FileCheck %s --check-prefix=X863; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=generic | FileCheck %s --check-prefix=X644 5; Verify that we correctly lower ISD::READCYCLECOUNTER.6 7 8define i64 @test_builtin_readcyclecounter() {9; X86-LABEL: test_builtin_readcyclecounter:10; X86:       # %bb.0:11; X86-NEXT:    rdtsc12; X86-NEXT:    retl13;14; X64-LABEL: test_builtin_readcyclecounter:15; X64:       # %bb.0:16; X64-NEXT:    rdtsc17; X64-NEXT:    shlq $32, %rdx18; X64-NEXT:    orq %rdx, %rax19; X64-NEXT:    retq20  %1 = tail call i64 @llvm.readcyclecounter()21  ret i64 %122}23 24; Verify that we correctly lower the Read Cycle Counter GCC x86 builtins25; (i.e. RDTSC and RDTSCP).26 27define i64 @test_builtin_rdtsc() {28; X86-LABEL: test_builtin_rdtsc:29; X86:       # %bb.0:30; X86-NEXT:    rdtsc31; X86-NEXT:    retl32;33; X64-LABEL: test_builtin_rdtsc:34; X64:       # %bb.0:35; X64-NEXT:    rdtsc36; X64-NEXT:    shlq $32, %rdx37; X64-NEXT:    orq %rdx, %rax38; X64-NEXT:    retq39  %1 = tail call i64 @llvm.x86.rdtsc()40  ret i64 %141}42 43define i64 @test_builtin_rdtscp(ptr %A) {44; X86-LABEL: test_builtin_rdtscp:45; X86:       # %bb.0:46; X86-NEXT:    pushl %esi47; X86-NEXT:    .cfi_def_cfa_offset 848; X86-NEXT:    .cfi_offset %esi, -849; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi50; X86-NEXT:    rdtscp51; X86-NEXT:    movl %ecx, (%esi)52; X86-NEXT:    popl %esi53; X86-NEXT:    .cfi_def_cfa_offset 454; X86-NEXT:    retl55;56; X64-LABEL: test_builtin_rdtscp:57; X64:       # %bb.0:58; X64-NEXT:    rdtscp59; X64-NEXT:    shlq $32, %rdx60; X64-NEXT:    orq %rdx, %rax61; X64-NEXT:    movl %ecx, (%rdi)62; X64-NEXT:    retq63  %1 = call { i64, i32 } @llvm.x86.rdtscp()64  %2 = extractvalue { i64, i32 } %1, 165  store i32 %2, ptr %A, align 166  %3 = extractvalue { i64, i32 } %1, 067  ret i64 %368}69 70declare i64 @llvm.readcyclecounter()71declare { i64, i32 } @llvm.x86.rdtscp()72declare i64 @llvm.x86.rdtsc()73 74