mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-21 16:31:16 +00:00
8b9e31c6e2
This improves the X86 cost model for small constants with large types. Before this commit we would even hoist trivial constants such as i96 2. This is related to <rdar://problem/17070936> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210504 91177308-0d34-0410-b5e6-96231b3b80d8
18 lines
657 B
LLVM
18 lines
657 B
LLVM
; RUN: opt -S -consthoist < %s | FileCheck %s
|
|
|
|
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-apple-macosx10.9.0"
|
|
|
|
; Test if the 3rd argument of a stackmap is hoisted.
|
|
define i128 @test1(i128 %a) {
|
|
; CHECK-LABEL: @test1
|
|
; CHECK: %const = bitcast i128 134646182756734033220 to i128
|
|
; CHECK: tail call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 1, i32 24, i128 %const)
|
|
entry:
|
|
%0 = add i128 %a, 134646182756734033220
|
|
tail call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 1, i32 24, i128 134646182756734033220)
|
|
ret i128 %0
|
|
}
|
|
|
|
declare void @llvm.experimental.stackmap(i64, i32, ...)
|