Jonas Paulsson 370a8c8025 [SystemZ] Make sure not to call getZExtValue on a >64 bit constant.
Better use isZero() and isIntN() in SystemZTargetTransformInfo rather than
calling getZExtValue() since the immediate operand may be wider than 64 bits,
which is not allowed with getZExtValue().

Fixes https://bugs.llvm.org/show_bug.cgi?id=47600

Review: Simon Pilgrim
2020-09-23 15:36:32 +02:00

21 lines
638 B
LLVM

; RUN: opt < %s -cost-model -analyze -mtriple=systemz-unknown -mcpu=z13
;
; Test that cost functions can handle immediates of more than 64 bits without crashing.
; Cost of a load which is checked for folding into a compare w/ memory.
define i32 @fun0(i72* %Src) {
%L = load i72, i72* %Src
%B = icmp ult i72 %L, 166153499473114484112
%Res = zext i1 %B to i32
ret i32 %Res
}
; Cost of a compare which is checked for elimination by Load and Test.
define i32 @fun1(i72* %Src, i72* %Dst) {
%L = load i72, i72* %Src
store i72 %L, i72* %Dst
%B = icmp ult i72 %L, 166153499473114484112
%Res = zext i1 %B to i32
ret i32 %Res
}