blob: 0c31cc1e25876a7aa886773acb1a98a2ddb0a3e6 [file]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -S --passes=slp-vectorizer -mtriple=x86_64-apple-macosx12.0.0 < %s | FileCheck %s
define float @test1(<2 x float> %retval.i69.sroa.0.0.copyload.i.i) {
; CHECK-LABEL: define float @test1(
; CHECK-SAME: <2 x float> [[RETVAL_I69_SROA_0_0_COPYLOAD_I_I:%.*]]) {
; CHECK-NEXT: [[ENTRY:.*:]]
; CHECK-NEXT: [[A_I_SROA_5_8_VEC_EXTRACT_I_I:%.*]] = extractelement <2 x float> [[RETVAL_I69_SROA_0_0_COPYLOAD_I_I]], i64 0
; CHECK-NEXT: [[A_I_SROA_0_0_VEC_EXTRACT_I_I:%.*]] = extractelement <2 x float> [[RETVAL_I69_SROA_0_0_COPYLOAD_I_I]], i64 0
; CHECK-NEXT: [[ADD_I629_I_I:%.*]] = fadd float [[A_I_SROA_0_0_VEC_EXTRACT_I_I]], 0.000000e+00
; CHECK-NEXT: [[A_I616_SROA_0_4_VEC_EXTRACT_I_I:%.*]] = extractelement <2 x float> [[RETVAL_I69_SROA_0_0_COPYLOAD_I_I]], i64 0
; CHECK-NEXT: [[ADD_I629_1_I_I:%.*]] = fadd float [[A_I616_SROA_0_4_VEC_EXTRACT_I_I]], 0.000000e+00
; CHECK-NEXT: [[ADD_I597_1_I_I:%.*]] = fadd float [[ADD_I629_1_I_I]], [[ADD_I629_1_I_I]]
; CHECK-NEXT: [[A_I616_SROA_8_12_VEC_EXTRACT_I_I:%.*]] = extractelement <2 x float> [[RETVAL_I69_SROA_0_0_COPYLOAD_I_I]], i64 0
; CHECK-NEXT: [[ADD_I629_3_I_I:%.*]] = fadd float [[A_I616_SROA_8_12_VEC_EXTRACT_I_I]], 0.000000e+00
; CHECK-NEXT: [[ADD_I629_2_I_I:%.*]] = fadd float [[A_I_SROA_5_8_VEC_EXTRACT_I_I]], 0.000000e+00
; CHECK-NEXT: [[ADD_I195_1_I_I:%.*]] = fadd float [[ADD_I629_I_I]], [[ADD_I597_1_I_I]]
; CHECK-NEXT: [[ADD_I195_2_I_I:%.*]] = fadd float [[ADD_I629_2_I_I]], [[ADD_I195_1_I_I]]
; CHECK-NEXT: [[TMP3:%.*]] = fadd float [[ADD_I629_3_I_I]], [[ADD_I195_2_I_I]]
; CHECK-NEXT: ret float [[TMP3]]
;
entry:
%a.i.sroa.5.8.vec.extract.i.i = extractelement <2 x float> %retval.i69.sroa.0.0.copyload.i.i, i64 0
%a.i.sroa.0.0.vec.extract.i.i = extractelement <2 x float> %retval.i69.sroa.0.0.copyload.i.i, i64 0
%add.i629.i.i = fadd float %a.i.sroa.0.0.vec.extract.i.i, 0.000000e+00
%a.i616.sroa.0.4.vec.extract.i.i = extractelement <2 x float> %retval.i69.sroa.0.0.copyload.i.i, i64 0
%add.i629.1.i.i = fadd float %a.i616.sroa.0.4.vec.extract.i.i, 0.000000e+00
%add.i597.1.i.i = fadd float %add.i629.1.i.i, %add.i629.1.i.i
%a.i616.sroa.8.12.vec.extract.i.i = extractelement <2 x float> %retval.i69.sroa.0.0.copyload.i.i, i64 0
%add.i629.3.i.i = fadd float %a.i616.sroa.8.12.vec.extract.i.i, 0.000000e+00
%add.i629.2.i.i = fadd float %a.i.sroa.5.8.vec.extract.i.i, 0.000000e+00
%add.i195.1.i.i = fadd float %add.i629.i.i, %add.i597.1.i.i
%add.i195.2.i.i = fadd float %add.i629.2.i.i, %add.i195.1.i.i
%add.i195.3.i.i = fadd float %add.i629.3.i.i, %add.i195.2.i.i
ret float %add.i195.3.i.i
}
define float @test2(<2 x float> %retval.i69.sroa.0.0.copyload.i.i) {
; CHECK-LABEL: define float @test2(
; CHECK-SAME: <2 x float> [[RETVAL_I69_SROA_0_0_COPYLOAD_I_I:%.*]]) {
; CHECK-NEXT: [[ENTRY:.*:]]
; CHECK-NEXT: [[A_I_SROA_5_8_VEC_EXTRACT_I_I:%.*]] = extractelement <2 x float> [[RETVAL_I69_SROA_0_0_COPYLOAD_I_I]], i64 0
; CHECK-NEXT: [[ADD_I629_2_I_I:%.*]] = fadd float [[A_I_SROA_5_8_VEC_EXTRACT_I_I]], 0.000000e+00
; CHECK-NEXT: [[A_I_SROA_0_0_VEC_EXTRACT_I_I:%.*]] = extractelement <2 x float> [[RETVAL_I69_SROA_0_0_COPYLOAD_I_I]], i64 0
; CHECK-NEXT: [[ADD_I629_I_I:%.*]] = fadd float [[A_I_SROA_0_0_VEC_EXTRACT_I_I]], 0.000000e+00
; CHECK-NEXT: [[ADD_I597_I_I:%.*]] = fadd float [[ADD_I629_I_I]], [[ADD_I629_I_I]]
; CHECK-NEXT: [[A_I616_SROA_0_4_VEC_EXTRACT_I_I:%.*]] = extractelement <2 x float> [[RETVAL_I69_SROA_0_0_COPYLOAD_I_I]], i64 0
; CHECK-NEXT: [[ADD_I629_1_I_I:%.*]] = fadd float [[A_I616_SROA_0_4_VEC_EXTRACT_I_I]], 0.000000e+00
; CHECK-NEXT: [[ADD_I725_1_I_I:%.*]] = fadd float [[ADD_I629_1_I_I]], 1.000000e+00
; CHECK-NEXT: [[ADD_I597_1_I_I:%.*]] = fadd float [[ADD_I629_1_I_I]], [[ADD_I725_1_I_I]]
; CHECK-NEXT: [[A_I616_SROA_8_12_VEC_EXTRACT_I_I:%.*]] = extractelement <2 x float> [[RETVAL_I69_SROA_0_0_COPYLOAD_I_I]], i64 0
; CHECK-NEXT: [[ADD_I629_3_I_I:%.*]] = fadd float [[A_I616_SROA_8_12_VEC_EXTRACT_I_I]], 0.000000e+00
; CHECK-NEXT: [[ADD_I597_2_I_I:%.*]] = fadd float [[ADD_I629_2_I_I]], [[ADD_I629_2_I_I]]
; CHECK-NEXT: [[ADD_I195_1_I_I:%.*]] = fadd float [[ADD_I597_I_I]], [[ADD_I597_1_I_I]]
; CHECK-NEXT: [[ADD_I195_2_I_I:%.*]] = fadd float [[ADD_I597_2_I_I]], [[ADD_I195_1_I_I]]
; CHECK-NEXT: [[TMP5:%.*]] = fadd float [[ADD_I629_3_I_I]], [[ADD_I195_2_I_I]]
; CHECK-NEXT: ret float [[TMP5]]
;
entry:
%a.i.sroa.5.8.vec.extract.i.i = extractelement <2 x float> %retval.i69.sroa.0.0.copyload.i.i, i64 0
%add.i629.2.i.i = fadd float %a.i.sroa.5.8.vec.extract.i.i, 0.000000e+00
%a.i.sroa.0.0.vec.extract.i.i = extractelement <2 x float> %retval.i69.sroa.0.0.copyload.i.i, i64 0
%add.i629.i.i = fadd float %a.i.sroa.0.0.vec.extract.i.i, 0.000000e+00
%add.i597.i.i = fadd float %add.i629.i.i, %add.i629.i.i
%a.i616.sroa.0.4.vec.extract.i.i = extractelement <2 x float> %retval.i69.sroa.0.0.copyload.i.i, i64 0
%add.i629.1.i.i = fadd float %a.i616.sroa.0.4.vec.extract.i.i, 0.000000e+00
%add.i725.1.i.i = fadd float %add.i629.1.i.i, 1.000000e+00
%add.i597.1.i.i = fadd float %add.i629.1.i.i, %add.i725.1.i.i
%a.i616.sroa.8.12.vec.extract.i.i = extractelement <2 x float> %retval.i69.sroa.0.0.copyload.i.i, i64 0
%add.i629.3.i.i = fadd float %a.i616.sroa.8.12.vec.extract.i.i, 0.000000e+00
%add.i597.2.i.i = fadd float %add.i629.2.i.i, %add.i629.2.i.i
%add.i195.1.i.i = fadd float %add.i597.i.i, %add.i597.1.i.i
%add.i195.2.i.i = fadd float %add.i597.2.i.i, %add.i195.1.i.i
%add.i195.3.i.i = fadd float %add.i629.3.i.i, %add.i195.2.i.i
ret float %add.i195.3.i.i
}