"insert_subreg, subreg_to_reg, and reg_sequence" instructions' after adjusting some unittest checks. This is to solve PR28852. The restriction was added at 2010 to make better register coalescing. We assumed that it was not necessary any more. Testing results on x86 supported the assumption. We will look closely to any performance impact it will bring and will be prepared to help analyzing performance problem found on other architectures. Differential Revision: https://reviews.llvm.org/D23210 llvm-svn: 278466
25 lines
728 B
LLVM
25 lines
728 B
LLVM
; RUN: llc < %s -mcpu=generic -march=x86-64 | FileCheck %s
|
|
; Verify that we are using the efficient uitofp --> sitofp lowering illustrated
|
|
; by the compiler_rt implementation of __floatundisf.
|
|
; <rdar://problem/8493982>
|
|
|
|
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
|
target triple = "x86_64-apple-darwin10.0.0"
|
|
|
|
; CHECK: %entry
|
|
; CHECK-NEXT: testq %rdi, %rdi
|
|
; CHECK-NEXT: js LBB0_1
|
|
; CHECK: cvtsi2ss
|
|
; CHECK-NEXT: ret
|
|
; CHECK: LBB0_1
|
|
; CHECK: movq
|
|
; CHECK-NEXT: shrq
|
|
; CHECK-NEXT: andl
|
|
; CHECK-NEXT: orq
|
|
; CHECK-NEXT: cvtsi2ss
|
|
define float @test(i64 %a) {
|
|
entry:
|
|
%b = uitofp i64 %a to float
|
|
ret float %b
|
|
}
|