Differential D116343 Diff 396429 llvm/test/Transforms/SLPVectorizer/X86/alternate-cast-inseltpoison.ll
Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/Transforms/SLPVectorizer/X86/alternate-cast-inseltpoison.ll
Show First 20 Lines • Show All 159 Lines • ▼ Show 20 Lines | ; | ||||
ret <8 x i32> %r7 | ret <8 x i32> %r7 | ||||
} | } | ||||
define <8 x float> @sitofp_4i32_8i16(<4 x i32> %a, <8 x i16> %b) { | define <8 x float> @sitofp_4i32_8i16(<4 x i32> %a, <8 x i16> %b) { | ||||
; CHECK-LABEL: @sitofp_4i32_8i16( | ; CHECK-LABEL: @sitofp_4i32_8i16( | ||||
; CHECK-NEXT: [[TMP1:%.*]] = sitofp <4 x i32> [[A:%.*]] to <4 x float> | ; CHECK-NEXT: [[TMP1:%.*]] = sitofp <4 x i32> [[A:%.*]] to <4 x float> | ||||
; CHECK-NEXT: [[TMP2:%.*]] = shufflevector <8 x i16> [[B:%.*]], <8 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> | ; CHECK-NEXT: [[TMP2:%.*]] = shufflevector <8 x i16> [[B:%.*]], <8 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> | ||||
; CHECK-NEXT: [[TMP3:%.*]] = sitofp <4 x i16> [[TMP2]] to <4 x float> | ; CHECK-NEXT: [[TMP3:%.*]] = sitofp <4 x i16> [[TMP2]] to <4 x float> | ||||
; CHECK-NEXT: [[R72:%.*]] = shufflevector <4 x float> [[TMP1]], <4 x float> [[TMP3]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> | ; CHECK-NEXT: [[TMP4:%.*]] = shufflevector <4 x float> [[TMP1]], <4 x float> [[TMP3]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> | ||||
; CHECK-NEXT: ret <8 x float> [[R72]] | ; CHECK-NEXT: ret <8 x float> [[TMP4]] | ||||
; | ; | ||||
%a0 = extractelement <4 x i32> %a, i32 0 | %a0 = extractelement <4 x i32> %a, i32 0 | ||||
%a1 = extractelement <4 x i32> %a, i32 1 | %a1 = extractelement <4 x i32> %a, i32 1 | ||||
%a2 = extractelement <4 x i32> %a, i32 2 | %a2 = extractelement <4 x i32> %a, i32 2 | ||||
%a3 = extractelement <4 x i32> %a, i32 3 | %a3 = extractelement <4 x i32> %a, i32 3 | ||||
%b0 = extractelement <8 x i16> %b, i32 0 | %b0 = extractelement <8 x i16> %b, i32 0 | ||||
%b1 = extractelement <8 x i16> %b, i32 1 | %b1 = extractelement <8 x i16> %b, i32 1 | ||||
%b2 = extractelement <8 x i16> %b, i32 2 | %b2 = extractelement <8 x i16> %b, i32 2 | ||||
Show All 26 Lines | |||||
; CHECK-NEXT: [[TMP4:%.*]] = shufflevector <8 x i16> [[B:%.*]], <8 x i16> undef, <2 x i32> <i32 0, i32 1> | ; CHECK-NEXT: [[TMP4:%.*]] = shufflevector <8 x i16> [[B:%.*]], <8 x i16> undef, <2 x i32> <i32 0, i32 1> | ||||
; CHECK-NEXT: [[TMP5:%.*]] = sitofp <2 x i16> [[TMP4]] to <2 x float> | ; CHECK-NEXT: [[TMP5:%.*]] = sitofp <2 x i16> [[TMP4]] to <2 x float> | ||||
; CHECK-NEXT: [[TMP6:%.*]] = uitofp <2 x i16> [[TMP4]] to <2 x float> | ; CHECK-NEXT: [[TMP6:%.*]] = uitofp <2 x i16> [[TMP4]] to <2 x float> | ||||
; CHECK-NEXT: [[TMP7:%.*]] = shufflevector <2 x float> [[TMP5]], <2 x float> [[TMP6]], <2 x i32> <i32 0, i32 3> | ; CHECK-NEXT: [[TMP7:%.*]] = shufflevector <2 x float> [[TMP5]], <2 x float> [[TMP6]], <2 x i32> <i32 0, i32 3> | ||||
; CHECK-NEXT: [[TMP8:%.*]] = shufflevector <16 x i8> [[C:%.*]], <16 x i8> undef, <2 x i32> <i32 0, i32 1> | ; CHECK-NEXT: [[TMP8:%.*]] = shufflevector <16 x i8> [[C:%.*]], <16 x i8> undef, <2 x i32> <i32 0, i32 1> | ||||
; CHECK-NEXT: [[TMP9:%.*]] = sitofp <2 x i8> [[TMP8]] to <2 x float> | ; CHECK-NEXT: [[TMP9:%.*]] = sitofp <2 x i8> [[TMP8]] to <2 x float> | ||||
; CHECK-NEXT: [[TMP10:%.*]] = uitofp <2 x i8> [[TMP8]] to <2 x float> | ; CHECK-NEXT: [[TMP10:%.*]] = uitofp <2 x i8> [[TMP8]] to <2 x float> | ||||
; CHECK-NEXT: [[TMP11:%.*]] = shufflevector <2 x float> [[TMP9]], <2 x float> [[TMP10]], <2 x i32> <i32 0, i32 3> | ; CHECK-NEXT: [[TMP11:%.*]] = shufflevector <2 x float> [[TMP9]], <2 x float> [[TMP10]], <2 x i32> <i32 0, i32 3> | ||||
; CHECK-NEXT: [[R31:%.*]] = shufflevector <4 x float> [[TMP3]], <4 x float> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef> | ; CHECK-NEXT: [[TMP12:%.*]] = shufflevector <2 x float> [[TMP7]], <2 x float> [[TMP11]], <4 x i32> <i32 0, i32 1, i32 2, i32 3> | ||||
; CHECK-NEXT: [[TMP12:%.*]] = shufflevector <2 x float> [[TMP7]], <2 x float> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef> | ; CHECK-NEXT: [[TMP13:%.*]] = shufflevector <4 x float> [[TMP3]], <4 x float> [[TMP12]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> | ||||
; CHECK-NEXT: [[R53:%.*]] = shufflevector <8 x float> [[R31]], <8 x float> [[TMP12]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 undef, i32 undef> | ; CHECK-NEXT: ret <8 x float> [[TMP13]] | ||||
; CHECK-NEXT: [[TMP13:%.*]] = shufflevector <2 x float> [[TMP11]], <2 x float> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef> | |||||
; CHECK-NEXT: [[R72:%.*]] = shufflevector <8 x float> [[R53]], <8 x float> [[TMP13]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 8, i32 9> | |||||
; CHECK-NEXT: ret <8 x float> [[R72]] | |||||
; | ; | ||||
%a0 = extractelement <4 x i32> %a, i32 0 | %a0 = extractelement <4 x i32> %a, i32 0 | ||||
%a1 = extractelement <4 x i32> %a, i32 1 | %a1 = extractelement <4 x i32> %a, i32 1 | ||||
%a2 = extractelement <4 x i32> %a, i32 2 | %a2 = extractelement <4 x i32> %a, i32 2 | ||||
%a3 = extractelement <4 x i32> %a, i32 3 | %a3 = extractelement <4 x i32> %a, i32 3 | ||||
%b0 = extractelement <8 x i16> %b, i32 0 | %b0 = extractelement <8 x i16> %b, i32 0 | ||||
%b1 = extractelement <8 x i16> %b, i32 1 | %b1 = extractelement <8 x i16> %b, i32 1 | ||||
%c0 = extractelement <16 x i8> %c, i32 0 | %c0 = extractelement <16 x i8> %c, i32 0 | ||||
Show All 19 Lines |