mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 12:43:36 +01:00
02f7297367
Utilizing the 8 and 16 bit comparison instructions, even when an input can be folded into the comparison instruction itself, is typically not worth it. There are too many partial register stalls as a result, leading to significant slowdowns. By always performing comparisons on at least 32-bit registers, performance of the calculation chain leading to the comparison improves. Continue to use the smaller comparisons when minimizing size, as that allows better folding of loads into the comparison instructions. rdar://15386341 llvm-svn: 195496
22 lines
495 B
LLVM
22 lines
495 B
LLVM
; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
|
|
; RUN: llc < %s -mtriple=x86_64-win64 | FileCheck %s
|
|
; rdar://7304838
|
|
|
|
; CodeGenPrepare should move the zext into the block with the load
|
|
; so that SelectionDAG can select it with the load.
|
|
|
|
; CHECK: movsbl ({{%rdi|%rcx}}), %eax
|
|
|
|
define void @foo(i8* %p, i32* %q) {
|
|
entry:
|
|
%t = load i8* %p
|
|
%a = icmp slt i8 %t, 20
|
|
br i1 %a, label %true, label %false
|
|
true:
|
|
%s = zext i8 %t to i32
|
|
store i32 %s, i32* %q
|
|
ret void
|
|
false:
|
|
ret void
|
|
}
|