brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 6eea67c Raw
60 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+sse2,+bmi | FileCheck %s --check-prefixes=CHECK,X863; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2,+bmi | FileCheck %s --check-prefixes=CHECK,X644 5declare i32 @llvm.x86.bmi.bextr.32(i32, i32)6 7define i32 @bextr_zero_length(i32 %x, i32 %y) nounwind {8; CHECK-LABEL: bextr_zero_length:9; CHECK:       # %bb.0:10; CHECK-NEXT:    xorl %eax, %eax11; CHECK-NEXT:    ret{{[l|q]}}12  %1 = and i32 %y, 25513  %2 = tail call i32 @llvm.x86.bmi.bextr.32(i32 %x, i32 %1)14  ret i32 %215}16 17define i32 @bextr_big_shift(i32 %x, i32 %y) nounwind {18; X86-LABEL: bextr_big_shift:19; X86:       # %bb.0:20; X86-NEXT:    movl $255, %eax21; X86-NEXT:    orl {{[0-9]+}}(%esp), %eax22; X86-NEXT:    bextrl %eax, {{[0-9]+}}(%esp), %eax23; X86-NEXT:    retl24;25; X64-LABEL: bextr_big_shift:26; X64:       # %bb.0:27; X64-NEXT:    orl $255, %esi28; X64-NEXT:    bextrl %esi, %edi, %eax29; X64-NEXT:    retq30  %1 = or i32 %y, 25531  %2 = tail call i32 @llvm.x86.bmi.bextr.32(i32 %x, i32 %1)32  ret i32 %233}34 35define float @bextr_uitofp(i32 %x, i32 %y) nounwind {36; X86-LABEL: bextr_uitofp:37; X86:       # %bb.0:38; X86-NEXT:    pushl %eax39; X86-NEXT:    movl $3855, %eax # imm = 0xF0F40; X86-NEXT:    bextrl %eax, {{[0-9]+}}(%esp), %eax41; X86-NEXT:    movd %eax, %xmm042; X86-NEXT:    por {{\.?LCPI[0-9]+_[0-9]+}}, %xmm043; X86-NEXT:    subsd {{\.?LCPI[0-9]+_[0-9]+}}, %xmm044; X86-NEXT:    cvtsd2ss %xmm0, %xmm045; X86-NEXT:    movss %xmm0, (%esp)46; X86-NEXT:    flds (%esp)47; X86-NEXT:    popl %eax48; X86-NEXT:    retl49;50; X64-LABEL: bextr_uitofp:51; X64:       # %bb.0:52; X64-NEXT:    movl $3855, %eax # imm = 0xF0F53; X64-NEXT:    bextrl %eax, %edi, %eax54; X64-NEXT:    cvtsi2ss %eax, %xmm055; X64-NEXT:    retq56  %1 = tail call i32 @llvm.x86.bmi.bextr.32(i32 %x, i32 3855)57  %2 = uitofp i32 %1 to float58  ret float %259}60