1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00

[Hexagon] Fix bad SDNodeXForm

Fixes https://llvm.org/PR48651
This commit is contained in:
Krzysztof Parzyszek 2021-01-04 10:34:17 -06:00
parent 1ba1b63d45
commit e94bffb4f9
2 changed files with 17 additions and 1 deletions

View File

@ -232,8 +232,8 @@ def NegImm32: SDNodeXForm<imm, [{
def SplatB: SDNodeXForm<imm, [{
uint32_t V = N->getZExtValue();
assert(isUInt<8>(V) || V >> 8 == 0xFFFFFF);
uint32_t S = V << 24 | V << 16 | V << 8 | V;
V &= 0xFF;
uint32_t S = V << 24 | V << 16 | V << 8 | V;
return CurDAG->getTargetConstant(S, SDLoc(N), MVT::i32);
}]>;

View File

@ -0,0 +1,16 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -march=hexagon < %s | FileCheck %s
define <4 x i8> @fred() #0 {
; CHECK-LABEL: fred:
; CHECK: // %bb.0:
; CHECK-NEXT: {
; CHECK-NEXT: r0 = ##-16843010
; CHECK-NEXT: jumpr r31
; CHECK-NEXT: }
%v0 = insertelement <4 x i8> undef, i8 -2, i32 0
%v1 = shufflevector <4 x i8> %v0, <4 x i8> undef, <4 x i32> zeroinitializer
ret <4 x i8> %v1
}
attributes #0 = { nounwind readnone }