@@ -355,3 +355,57 @@ entry:
355355 %10 = icmp ne <2 x i8 > %8 , zeroinitializer
356356 ret void
357357}
358+
359+ define void @test12 () {
360+ ; CHECK-LABEL: @test12(
361+ ; CHECK-NEXT: entry:
362+ ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr float, ptr null, i64 33
363+ ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr float, ptr null, i64 50
364+ ; CHECK-NEXT: [[TMP2:%.*]] = getelementptr float, ptr null, i64 75
365+ ; CHECK-NEXT: [[TMP3:%.*]] = load <8 x float>, ptr [[TMP1]], align 4
366+ ; CHECK-NEXT: [[TMP4:%.*]] = load <8 x float>, ptr [[TMP2]], align 4
367+ ; CHECK-NEXT: [[TMP5:%.*]] = load <16 x float>, ptr [[TMP0]], align 4
368+ ; CHECK-NEXT: [[TMP6:%.*]] = call <32 x float> @llvm.vector.insert.v32f32.v8f32(<32 x float> poison, <8 x float> [[TMP4]], i64 0)
369+ ; CHECK-NEXT: [[TMP7:%.*]] = call <32 x float> @llvm.vector.insert.v32f32.v8f32(<32 x float> [[TMP6]], <8 x float> [[TMP3]], i64 8)
370+ ; CHECK-NEXT: [[TMP8:%.*]] = call <32 x float> @llvm.vector.insert.v32f32.v16f32(<32 x float> [[TMP7]], <16 x float> [[TMP5]], i64 16)
371+ ; CHECK-NEXT: [[TMP9:%.*]] = fpext <32 x float> [[TMP8]] to <32 x double>
372+ ; CHECK-NEXT: [[TMP10:%.*]] = call <32 x double> @llvm.vector.insert.v32f64.v8f64(<32 x double> poison, <8 x double> zeroinitializer, i64 0)
373+ ; CHECK-NEXT: [[TMP11:%.*]] = call <32 x double> @llvm.vector.insert.v32f64.v8f64(<32 x double> [[TMP10]], <8 x double> zeroinitializer, i64 8)
374+ ; CHECK-NEXT: [[TMP12:%.*]] = call <32 x double> @llvm.vector.insert.v32f64.v8f64(<32 x double> [[TMP11]], <8 x double> zeroinitializer, i64 16)
375+ ; CHECK-NEXT: [[TMP13:%.*]] = call <32 x double> @llvm.vector.insert.v32f64.v8f64(<32 x double> [[TMP12]], <8 x double> zeroinitializer, i64 24)
376+ ; CHECK-NEXT: [[TMP14:%.*]] = fadd <32 x double> [[TMP13]], [[TMP9]]
377+ ; CHECK-NEXT: [[TMP15:%.*]] = fptrunc <32 x double> [[TMP14]] to <32 x float>
378+ ; CHECK-NEXT: [[TMP16:%.*]] = call <32 x float> @llvm.vector.insert.v32f32.v8f32(<32 x float> poison, <8 x float> zeroinitializer, i64 0)
379+ ; CHECK-NEXT: [[TMP17:%.*]] = call <32 x float> @llvm.vector.insert.v32f32.v8f32(<32 x float> [[TMP16]], <8 x float> zeroinitializer, i64 8)
380+ ; CHECK-NEXT: [[TMP18:%.*]] = call <32 x float> @llvm.vector.insert.v32f32.v8f32(<32 x float> [[TMP17]], <8 x float> zeroinitializer, i64 16)
381+ ; CHECK-NEXT: [[TMP19:%.*]] = call <32 x float> @llvm.vector.insert.v32f32.v8f32(<32 x float> [[TMP18]], <8 x float> zeroinitializer, i64 24)
382+ ; CHECK-NEXT: [[TMP20:%.*]] = fcmp ogt <32 x float> [[TMP19]], [[TMP15]]
383+ ; CHECK-NEXT: ret void
384+ ;
385+ entry:
386+ %0 = getelementptr float , ptr null , i64 33
387+ %1 = getelementptr float , ptr null , i64 41
388+ %2 = getelementptr float , ptr null , i64 50
389+ %3 = getelementptr float , ptr null , i64 75
390+ %4 = load <8 x float >, ptr %0 , align 4
391+ %5 = load <8 x float >, ptr %1 , align 4
392+ %6 = load <8 x float >, ptr %2 , align 4
393+ %7 = load <8 x float >, ptr %3 , align 4
394+ %8 = fpext <8 x float > %4 to <8 x double >
395+ %9 = fpext <8 x float > %5 to <8 x double >
396+ %10 = fpext <8 x float > %6 to <8 x double >
397+ %11 = fpext <8 x float > %7 to <8 x double >
398+ %12 = fadd <8 x double > zeroinitializer , %8
399+ %13 = fadd <8 x double > zeroinitializer , %9
400+ %14 = fadd <8 x double > zeroinitializer , %10
401+ %15 = fadd <8 x double > zeroinitializer , %11
402+ %16 = fptrunc <8 x double > %12 to <8 x float >
403+ %17 = fptrunc <8 x double > %13 to <8 x float >
404+ %18 = fptrunc <8 x double > %14 to <8 x float >
405+ %19 = fptrunc <8 x double > %15 to <8 x float >
406+ %20 = fcmp ogt <8 x float > zeroinitializer , %16
407+ %21 = fcmp ogt <8 x float > zeroinitializer , %17
408+ %22 = fcmp ogt <8 x float > zeroinitializer , %18
409+ %23 = fcmp ogt <8 x float > zeroinitializer , %19
410+ ret void
411+ }
0 commit comments