mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-22 20:43:44 +02:00
a2db98f70d
ISD::isConstantSplatVector can shrink to the smallest splat width. But we don't check the size of the resulting APInt at all. This can cause us to misinterpret the results. This patch just adds a flag to prevent the APInt from changing width. Fixes PR34271. Differential Revision: https://reviews.llvm.org/D36996 llvm-svn: 311429
15 lines
975 B
LLVM
15 lines
975 B
LLVM
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
|
; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=avx512vl,avx512bw | FileCheck %s
|
|
|
|
define <16 x i16> @foo(<16 x i32> %i) {
|
|
; CHECK-LABEL: foo:
|
|
; CHECK: # BB#0:
|
|
; CHECK-NEXT: vpminud {{.*}}(%rip){1to16}, %zmm0, %zmm0
|
|
; CHECK-NEXT: vpmovdw %zmm0, %ymm0
|
|
; CHECK-NEXT: retq
|
|
%x3 = icmp ult <16 x i32> %i, <i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009>
|
|
%x5 = select <16 x i1> %x3, <16 x i32> %i, <16 x i32> <i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009, i32 16843009>
|
|
%x6 = trunc <16 x i32> %x5 to <16 x i16>
|
|
ret <16 x i16> %x6
|
|
}
|