; CST-NEXT: .long 1392508928 ## 0x53000000
; CST: [[MAGICCSTADDR:LCPI0_[0-9]+]]:
-; CST-NEXT: .long 3539992704 ## float -5.497642e+11
-; CST-NEXT: .long 3539992704 ## float -5.497642e+11
-; CST-NEXT: .long 3539992704 ## float -5.497642e+11
-; CST-NEXT: .long 3539992704 ## float -5.497642e+11
+; CST-NEXT: .long 3539992704 ## float -5.49764202E+11
+; CST-NEXT: .long 3539992704 ## float -5.49764202E+11
+; CST-NEXT: .long 3539992704 ## float -5.49764202E+11
+; CST-NEXT: .long 3539992704 ## float -5.49764202E+11
; AVX2: [[LOWCSTADDR:LCPI0_[0-9]+]]:
; AVX2-NEXT: .long 1258291200 ## 0x4b000000
%C = uitofp <8 x i32> %A to <8 x float>
ret <8 x float> %C
}
+
+define <4 x double> @test3(<4 x i32> %arg) {
+; CHECK-LABEL: test3:
+; This test used to crash because we were custom lowering it as if it was
+; a conversion between <4 x i32> and <4 x float>.
+; AVX: vcvtdq2pd
+; AVX2: vcvtdq2pd
+; CHECK: retq
+ %tmp = uitofp <4 x i32> %arg to <4 x double>
+ ret <4 x double> %tmp
+}