mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-16 11:24:39 +00:00
Initial implementation of PPCTargetTransformInfo
This provides a place to add customized operation cost information and control some other target-specific IR-level transformations. The only non-trivial logic in this checkin assigns a higher cost to unaligned loads and stores (covered by the included test case). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173520 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
6
test/Analysis/CostModel/PowerPC/lit.local.cfg
Normal file
6
test/Analysis/CostModel/PowerPC/lit.local.cfg
Normal file
@@ -0,0 +1,6 @@
|
||||
config.suffixes = ['.ll', '.c', '.cpp']
|
||||
|
||||
targets = set(config.root.targets_to_build.split())
|
||||
if not 'PowerPC' in targets:
|
||||
config.unsupported = True
|
||||
|
34
test/Analysis/CostModel/PowerPC/load_store.ll
Normal file
34
test/Analysis/CostModel/PowerPC/load_store.ll
Normal file
@@ -0,0 +1,34 @@
|
||||
; RUN: opt < %s -cost-model -analyze -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 | FileCheck %s
|
||||
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-f128:128:128-v128:128:128-n32:64"
|
||||
target triple = "powerpc64-unknown-linux-gnu"
|
||||
|
||||
define i32 @stores(i32 %arg) {
|
||||
|
||||
; CHECK: cost of 1 {{.*}} store
|
||||
store i8 undef, i8* undef, align 4
|
||||
; CHECK: cost of 1 {{.*}} store
|
||||
store i16 undef, i16* undef, align 4
|
||||
; CHECK: cost of 1 {{.*}} store
|
||||
store i32 undef, i32* undef, align 4
|
||||
; CHECK: cost of 2 {{.*}} store
|
||||
store i64 undef, i64* undef, align 4
|
||||
; CHECK: cost of 4 {{.*}} store
|
||||
store i128 undef, i128* undef, align 4
|
||||
|
||||
ret i32 undef
|
||||
}
|
||||
define i32 @loads(i32 %arg) {
|
||||
; CHECK: cost of 1 {{.*}} load
|
||||
load i8* undef, align 4
|
||||
; CHECK: cost of 1 {{.*}} load
|
||||
load i16* undef, align 4
|
||||
; CHECK: cost of 1 {{.*}} load
|
||||
load i32* undef, align 4
|
||||
; CHECK: cost of 2 {{.*}} load
|
||||
load i64* undef, align 4
|
||||
; CHECK: cost of 4 {{.*}} load
|
||||
load i128* undef, align 4
|
||||
|
||||
ret i32 undef
|
||||
}
|
||||
|
Reference in New Issue
Block a user