mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-28 07:05:11 +00:00
509fb2c84c
This patch fixes issues with vector constant folding not correctly handling scalar input operands if they require implicit truncation - this was tested with llvm-stress as recommended by Patrik H Hagglund. The patch ensures that integer input scalars from a build vector are correctly truncated before folding, and that constant integer scalar results are promoted to a legal type before inclusion in the new folded build vector. I have added another crash test case and also a test for UINT_TO_FP / SINT_TO_FP using an non-truncated scalar input, which was failing before this patch. Differential Revision: http://reviews.llvm.org/D9282 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236308 91177308-0d34-0410-b5e6-96231b3b80d8
14 lines
502 B
LLVM
14 lines
502 B
LLVM
; RUN: llc < %s -mtriple=i686-unknown -mattr=+avx | FileCheck %s
|
|
; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx | FileCheck %s
|
|
|
|
; Check that constant integers are correctly being truncated before float conversion
|
|
|
|
define <4 x float> @test1() {
|
|
; CHECK-LABEL: test1
|
|
; CHECK: movaps {{.*#+}} xmm0 = [-1.000000e+00,0.000000e+00,-1.000000e+00,0.000000e+00]
|
|
; CHECK-NEXT: ret
|
|
%1 = trunc <4 x i3> <i3 -1, i3 -22, i3 7, i3 8> to <4 x i1>
|
|
%2 = sitofp <4 x i1> %1 to <4 x float>
|
|
ret <4 x float> %2
|
|
}
|