88 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-- -mattr=+rdpru | FileCheck %s --check-prefix=X863; RUN: llc < %s -mtriple=i686-- -mattr=+rdpru -fast-isel | FileCheck %s --check-prefix=X864; RUN: llc < %s -mtriple=x86_64-- -mattr=+rdpru | FileCheck %s --check-prefix=X645; RUN: llc < %s -mtriple=x86_64-- -mattr=+rdpru -fast-isel | FileCheck %s --check-prefix=X646; RUN: llc < %s -mtriple=x86_64-- -mcpu=znver2 | FileCheck %s --check-prefix=X647; RUN: llc < %s -mtriple=x86_64-- -mcpu=znver3 -fast-isel | FileCheck %s --check-prefix=X648; RUN: llc < %s -mtriple=x86_64-- -mcpu=znver4 -fast-isel | FileCheck %s --check-prefix=X649; RUN: llc < %s -mtriple=x86_64-- -mcpu=znver5 -fast-isel | FileCheck %s --check-prefix=X6410 11define void @rdpru_asm() {12; X86-LABEL: rdpru_asm:13; X86: # %bb.0: # %entry14; X86-NEXT: #APP15; X86-NEXT: rdpru16; X86-NEXT: #NO_APP17; X86-NEXT: retl18;19; X64-LABEL: rdpru_asm:20; X64: # %bb.0: # %entry21; X64-NEXT: #APP22; X64-NEXT: rdpru23; X64-NEXT: #NO_APP24; X64-NEXT: retq25entry:26 call void asm sideeffect "rdpru", "~{dirflag},~{fpsr},~{flags}"()27 ret void28}29 30define i64 @rdpru_param(i32 %regid) local_unnamed_addr {31; X86-LABEL: rdpru_param:32; X86: # %bb.0: # %entry33; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx34; X86-NEXT: rdpru35; X86-NEXT: retl36;37; X64-LABEL: rdpru_param:38; X64: # %bb.0: # %entry39; X64-NEXT: movl %edi, %ecx40; X64-NEXT: rdpru41; X64-NEXT: shlq $32, %rdx42; X64-NEXT: orq %rdx, %rax43; X64-NEXT: retq44entry:45 %0 = tail call i64 @llvm.x86.rdpru(i32 %regid)46 ret i64 %047}48 49define i64 @rdpru_mperf() local_unnamed_addr {50; X86-LABEL: rdpru_mperf:51; X86: # %bb.0: # %entry52; X86-NEXT: xorl %ecx, %ecx53; X86-NEXT: rdpru54; X86-NEXT: retl55;56; X64-LABEL: rdpru_mperf:57; X64: # %bb.0: # %entry58; X64-NEXT: xorl %ecx, %ecx59; X64-NEXT: rdpru60; X64-NEXT: shlq $32, %rdx61; X64-NEXT: orq %rdx, %rax62; X64-NEXT: retq63entry:64 %0 = tail call i64 @llvm.x86.rdpru(i32 0)65 ret i64 %066}67 68define i64 @rdpru_aperf() local_unnamed_addr {69; X86-LABEL: rdpru_aperf:70; X86: # %bb.0: # %entry71; X86-NEXT: movl $1, %ecx72; X86-NEXT: rdpru73; X86-NEXT: retl74;75; X64-LABEL: rdpru_aperf:76; X64: # %bb.0: # %entry77; X64-NEXT: movl $1, %ecx78; X64-NEXT: rdpru79; X64-NEXT: shlq $32, %rdx80; X64-NEXT: orq %rdx, %rax81; X64-NEXT: retq82entry:83 %0 = tail call i64 @llvm.x86.rdpru(i32 1)84 ret i64 %085}86 87declare i64 @llvm.x86.rdpru(i32)88