Have BasicTTI call the base implementation so that both agree on the default behaviour, which the default being a cost of '1'. This has required an X86 specific implementation as it seems to be very reliant on those instructions being free. Changes are also made to AMDGPU so that their implementations distinguish between cost kinds, so that the unrolling isn't affected. PowerPC also has its own implementation to prevent changes to the reg-usage vectorizer test. The cost model test changes now reflect that ret instructions are not generally free. Differential Revision: https://reviews.llvm.org/D79164
46 lines
2.1 KiB
LLVM
46 lines
2.1 KiB
LLVM
; RUN: opt < %s -cost-model -analyze -mtriple=systemz-unknown -mcpu=z13 \
|
|
; RUN: | FileCheck %s
|
|
;
|
|
; Test that i8/i16 operands get extra costs for extensions to i32 only in
|
|
; cases where this is needed.
|
|
|
|
define void @icmp() {
|
|
%li8_0 = load i8, i8* undef
|
|
%li8_1 = load i8, i8* undef
|
|
icmp slt i8 %li8_0, %li8_1
|
|
|
|
%a0 = add i8 %li8_0, 1
|
|
%a1 = add i8 %li8_1, 1
|
|
icmp slt i8 %a0, %a1
|
|
|
|
icmp slt i8 %a0, 123
|
|
|
|
%li16_0 = load i16, i16* undef
|
|
%li16_1 = load i16, i16* undef
|
|
icmp slt i16 %li16_0, %li16_1
|
|
|
|
%a2 = add i16 %li16_0, 1
|
|
%a3 = add i16 %li16_1, 1
|
|
icmp slt i16 %a2, %a3
|
|
|
|
icmp slt i16 %a2, 123
|
|
|
|
ret void;
|
|
; CHECK: Printing analysis 'Cost Model Analysis' for function 'icmp':
|
|
; CHECK: Cost Model: Found an estimated cost of 1 for instruction: %li8_0 = load i8, i8* undef
|
|
; CHECK: Cost Model: Found an estimated cost of 1 for instruction: %li8_1 = load i8, i8* undef
|
|
; CHECK: Cost Model: Found an estimated cost of 1 for instruction: %1 = icmp slt i8 %li8_0, %li8_1
|
|
; CHECK: Cost Model: Found an estimated cost of 1 for instruction: %a0 = add i8 %li8_0, 1
|
|
; CHECK: Cost Model: Found an estimated cost of 1 for instruction: %a1 = add i8 %li8_1, 1
|
|
; CHECK: Cost Model: Found an estimated cost of 3 for instruction: %2 = icmp slt i8 %a0, %a1
|
|
; CHECK: Cost Model: Found an estimated cost of 2 for instruction: %3 = icmp slt i8 %a0, 123
|
|
; CHECK: Cost Model: Found an estimated cost of 1 for instruction: %li16_0 = load i16, i16* undef
|
|
; CHECK: Cost Model: Found an estimated cost of 1 for instruction: %li16_1 = load i16, i16* undef
|
|
; CHECK: Cost Model: Found an estimated cost of 1 for instruction: %4 = icmp slt i16 %li16_0, %li16_1
|
|
; CHECK: Cost Model: Found an estimated cost of 1 for instruction: %a2 = add i16 %li16_0, 1
|
|
; CHECK: Cost Model: Found an estimated cost of 1 for instruction: %a3 = add i16 %li16_1, 1
|
|
; CHECK: Cost Model: Found an estimated cost of 3 for instruction: %5 = icmp slt i16 %a2, %a3
|
|
; CHECK: Cost Model: Found an estimated cost of 2 for instruction: %6 = icmp slt i16 %a2, 123
|
|
; CHECK: Cost Model: Found an estimated cost of 1 for instruction: ret void
|
|
}
|