Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/Transforms/SLPVectorizer/X86/different-vec-widths.ll
Show First 20 Lines • Show All 50 Lines • ▼ Show 20 Lines | |||||
; AVX-NEXT: [[Q0:%.*]] = getelementptr inbounds double, double* [[Q:%.*]], i64 0 | ; AVX-NEXT: [[Q0:%.*]] = getelementptr inbounds double, double* [[Q:%.*]], i64 0 | ||||
; AVX-NEXT: [[Q1:%.*]] = getelementptr inbounds double, double* [[Q]], i64 1 | ; AVX-NEXT: [[Q1:%.*]] = getelementptr inbounds double, double* [[Q]], i64 1 | ||||
; AVX-NEXT: [[Q2:%.*]] = getelementptr inbounds double, double* [[Q]], i64 2 | ; AVX-NEXT: [[Q2:%.*]] = getelementptr inbounds double, double* [[Q]], i64 2 | ||||
; AVX-NEXT: [[Q3:%.*]] = getelementptr inbounds double, double* [[Q]], i64 3 | ; AVX-NEXT: [[Q3:%.*]] = getelementptr inbounds double, double* [[Q]], i64 3 | ||||
; AVX-NEXT: [[Q4:%.*]] = getelementptr inbounds double, double* [[Q]], i64 4 | ; AVX-NEXT: [[Q4:%.*]] = getelementptr inbounds double, double* [[Q]], i64 4 | ||||
; AVX-NEXT: [[Q5:%.*]] = getelementptr inbounds double, double* [[Q]], i64 5 | ; AVX-NEXT: [[Q5:%.*]] = getelementptr inbounds double, double* [[Q]], i64 5 | ||||
; AVX-NEXT: [[TMP1:%.*]] = bitcast double* [[P0]] to <4 x double>* | ; AVX-NEXT: [[TMP1:%.*]] = bitcast double* [[P0]] to <4 x double>* | ||||
; AVX-NEXT: [[TMP2:%.*]] = load <4 x double>, <4 x double>* [[TMP1]], align 8 | ; AVX-NEXT: [[TMP2:%.*]] = load <4 x double>, <4 x double>* [[TMP1]], align 8 | ||||
; AVX-NEXT: [[D4:%.*]] = load double, double* [[P4]] | ; AVX-NEXT: [[TMP3:%.*]] = bitcast double* [[P4]] to <2 x double>* | ||||
; AVX-NEXT: [[D5:%.*]] = load double, double* [[P5]] | ; AVX-NEXT: [[TMP4:%.*]] = load <2 x double>, <2 x double>* [[TMP3]], align 8 | ||||
; AVX-NEXT: [[TMP3:%.*]] = fadd <4 x double> [[TMP2]], <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00> | ; AVX-NEXT: [[TMP5:%.*]] = fadd <4 x double> [[TMP2]], <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00> | ||||
; AVX-NEXT: [[A4:%.*]] = fadd double [[D4]], 1.000000e+00 | ; AVX-NEXT: [[TMP6:%.*]] = fadd <2 x double> [[TMP4]], <double 1.000000e+00, double 1.000000e+00> | ||||
; AVX-NEXT: [[A5:%.*]] = fadd double [[D5]], 1.000000e+00 | ; AVX-NEXT: [[TMP7:%.*]] = bitcast double* [[Q0]] to <4 x double>* | ||||
; AVX-NEXT: [[TMP4:%.*]] = bitcast double* [[Q0]] to <4 x double>* | ; AVX-NEXT: store <4 x double> [[TMP5]], <4 x double>* [[TMP7]], align 8 | ||||
; AVX-NEXT: store <4 x double> [[TMP3]], <4 x double>* [[TMP4]], align 8 | ; AVX-NEXT: [[TMP8:%.*]] = bitcast double* [[Q4]] to <2 x double>* | ||||
; AVX-NEXT: store double [[A4]], double* [[Q4]] | ; AVX-NEXT: store <2 x double> [[TMP6]], <2 x double>* [[TMP8]], align 8 | ||||
; AVX-NEXT: store double [[A5]], double* [[Q5]] | |||||
; AVX-NEXT: ret void | ; AVX-NEXT: ret void | ||||
; | ; | ||||
%p0 = getelementptr inbounds double, double* %p, i64 0 | %p0 = getelementptr inbounds double, double* %p, i64 0 | ||||
%p1 = getelementptr inbounds double, double* %p, i64 1 | %p1 = getelementptr inbounds double, double* %p, i64 1 | ||||
%p2 = getelementptr inbounds double, double* %p, i64 2 | %p2 = getelementptr inbounds double, double* %p, i64 2 | ||||
%p3 = getelementptr inbounds double, double* %p, i64 3 | %p3 = getelementptr inbounds double, double* %p, i64 3 | ||||
%p4 = getelementptr inbounds double, double* %p, i64 4 | %p4 = getelementptr inbounds double, double* %p, i64 4 | ||||
%p5 = getelementptr inbounds double, double* %p, i64 5 | %p5 = getelementptr inbounds double, double* %p, i64 5 | ||||
Show All 30 Lines |