mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-28 06:32:09 +00:00
Fix a bug in the integer-promotion of bitcast operations on vector types.
We must not issue a bitcast operation for integer-promotion of vector types, because the location of the values in the vector may be different. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146150 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
72590c9738
commit
44bac7cd65
@ -216,7 +216,7 @@ SDValue DAGTypeLegalizer::PromoteIntRes_BITCAST(SDNode *N) {
|
||||
case TargetLowering::TypeLegal:
|
||||
break;
|
||||
case TargetLowering::TypePromoteInteger:
|
||||
if (NOutVT.bitsEq(NInVT))
|
||||
if (NOutVT.bitsEq(NInVT) && !NOutVT.isVector() && !NInVT.isVector())
|
||||
// The input promotes to the same size. Convert the promoted value.
|
||||
return DAG.getNode(ISD::BITCAST, dl, NOutVT, GetPromotedInteger(InOp));
|
||||
break;
|
||||
|
15
test/CodeGen/X86/2011-12-8-bitcastintprom.ll
Normal file
15
test/CodeGen/X86/2011-12-8-bitcastintprom.ll
Normal file
@ -0,0 +1,15 @@
|
||||
; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 | FileCheck %s
|
||||
|
||||
; Make sure that the conversion between v4i8 to v2i16 is not a simple bitcast.
|
||||
; CHECK: prom_bug
|
||||
; CHECK: movd
|
||||
; CHECK: shufb
|
||||
; CHECK: movw
|
||||
; CHECK: ret
|
||||
define void @prom_bug(<4 x i8> %t, i16* %p) {
|
||||
%r = bitcast <4 x i8> %t to <2 x i16>
|
||||
%o = extractelement <2 x i16> %r, i32 0
|
||||
store i16 %o, i16* %p
|
||||
ret void
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ declare <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32>, <4 x i32>) nounwind readnone
|
||||
|
||||
define void @blackDespeckle_wrapper(i8** %args_list, i64* %gtid, i64 %xend) {
|
||||
entry:
|
||||
; CHECK: cfi_def_cfa_offset
|
||||
; CHECK-NOT: set
|
||||
; CHECK: pcmpgt
|
||||
; CHECK: blendvps
|
||||
|
@ -1,5 +1,5 @@
|
||||
; RUN: llc < %s -march=x86 -mattr=+sse42 -post-RA-scheduler=true | FileCheck %s
|
||||
; CHECK: incw
|
||||
; CHECK: incl
|
||||
; CHECK: incl
|
||||
; CHECK: incl
|
||||
; CHECK: addl
|
||||
|
Loading…
x
Reference in New Issue
Block a user