Files
clang-p2996/llvm/test/CodeGen/X86/fast-isel-select.ll
Matt Arsenault c2e35a6f32 RegAllocFast: Remove early selection loop, the spill calculation will report cost 0 anyway for free regs
The 2nd loop calculates spill costs but reports free registers as cost
0 anyway, so there is little benefit from having a separate early
loop.

Surprisingly this is not NFC, as many register are marked regDisabled
so the first loop often picks up later registers unnecessarily instead
of the first one available in the allocation order...

Patch by Matthias Braun

llvm-svn: 356499
2019-03-19 19:01:34 +00:00

26 lines
942 B
LLVM

; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -mtriple=x86_64-apple-darwin -O0 | FileCheck %s
; Make sure we only use the less significant bit of the value that feeds the
; select. Otherwise, we may account for a non-zero value whereas the
; lsb is zero.
; <rdar://problem/15651765>
define i32 @fastisel_select(i1 %exchSub2211_, i1 %trunc_8766) {
; CHECK-LABEL: fastisel_select:
; CHECK: ## %bb.0:
; CHECK-NEXT: movb %sil, %al
; CHECK-NEXT: movb %dil, %cl
; CHECK-NEXT: xorl %edx, %edx
; CHECK-NEXT: subb %al, %cl
; CHECK-NEXT: testb $1, %cl
; CHECK-NEXT: movl $1204476887, %esi ## imm = 0x47CADBD7
; CHECK-NEXT: cmovnel %esi, %edx
; CHECK-NEXT: movl %edx, %eax
; CHECK-NEXT: retq
%shuffleInternal15257_8932 = sub i1 %exchSub2211_, %trunc_8766
%counter_diff1345 = select i1 %shuffleInternal15257_8932, i32 1204476887, i32 0
ret i32 %counter_diff1345
}