| target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S64" |
| target triple = "armv7-none-linux-gnueabi" |
| |
| |
| %struct.rs_matrix4x4 = type { [16 x float] } |
| %struct.rs_matrix3x3 = type { [9 x float] } |
| %struct.rs_matrix2x2 = type { [4 x float] } |
| |
| define internal <4 x float> @smear_f(float %in) nounwind readnone alwaysinline { |
| %1 = insertelement <4 x float> undef, float %in, i32 0 |
| %2 = insertelement <4 x float> %1, float %in, i32 1 |
| %3 = insertelement <4 x float> %2, float %in, i32 2 |
| %4 = insertelement <4 x float> %3, float %in, i32 3 |
| ret <4 x float> %4 |
| } |
| |
| |
| define <3 x float> @_Z16rsMatrixMultiplyPK12rs_matrix3x3Dv3_f(%struct.rs_matrix3x3* nocapture %m, <3 x float> %in) nounwind readonly { |
| %x0 = extractelement <3 x float> %in, i32 0 |
| %x = tail call <4 x float> @smear_f(float %x0) nounwind readnone |
| %y0 = extractelement <3 x float> %in, i32 1 |
| %y = tail call <4 x float> @smear_f(float %y0) nounwind readnone |
| %z0 = extractelement <3 x float> %in, i32 2 |
| %z = tail call <4 x float> @smear_f(float %z0) nounwind readnone |
| |
| %px = getelementptr inbounds %struct.rs_matrix3x3* %m, i32 0, i32 0, i32 0 |
| %px2 = bitcast float* %px to <4 x float>* |
| %xm = load <4 x float>* %px2 |
| %py = getelementptr inbounds %struct.rs_matrix3x3* %m, i32 0, i32 0, i32 3 |
| %py2 = bitcast float* %py to <4 x float>* |
| %ym = load <4 x float>* %py2 |
| %pz = getelementptr inbounds %struct.rs_matrix3x3* %m, i32 0, i32 0, i32 6 |
| %pz2 = bitcast float* %pz to <3 x float>* |
| %zm2 = load <3 x float>* %pz2 |
| %zm = shufflevector <3 x float> %zm2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> |
| |
| %a1 = fmul <4 x float> %x, %xm |
| %a2 = fmul <4 x float> %y, %ym |
| %a3 = fadd <4 x float> %a1, %a2 |
| %a4 = fmul <4 x float> %z, %zm |
| %a5 = fadd <4 x float> %a4, %a3 |
| %a6 = shufflevector <4 x float> %a5, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2> |
| ret <3 x float> %a6 |
| } |
| |
| define <3 x float> @_Z16rsMatrixMultiplyP12rs_matrix3x3Dv3_f(%struct.rs_matrix3x3* nocapture %m, <3 x float> %in) nounwind readonly { |
| %r = tail call <3 x float> @_Z16rsMatrixMultiplyPK12rs_matrix3x3Dv3_f(%struct.rs_matrix3x3* nocapture %m, <3 x float> %in) nounwind |
| ret <3 x float> %r |
| } |
| |
| define <3 x float> @_Z16rsMatrixMultiplyPK12rs_matrix3x3Dv2_f(%struct.rs_matrix3x3* nocapture %m, <2 x float> %in) nounwind readonly { |
| %x0 = extractelement <2 x float> %in, i32 0 |
| %x = tail call <4 x float> @smear_f(float %x0) nounwind readnone |
| %y0 = extractelement <2 x float> %in, i32 1 |
| %y = tail call <4 x float> @smear_f(float %y0) nounwind readnone |
| |
| %px = getelementptr inbounds %struct.rs_matrix3x3* %m, i32 0, i32 0, i32 0 |
| %px2 = bitcast float* %px to <4 x float>* |
| %xm = load <4 x float>* %px2 |
| %py = getelementptr inbounds %struct.rs_matrix3x3* %m, i32 0, i32 0, i32 3 |
| %py2 = bitcast float* %py to <4 x float>* |
| %ym = load <4 x float>* %py2 |
| |
| %a1 = fmul <4 x float> %x, %xm |
| %a2 = fmul <4 x float> %y, %ym |
| %a3 = fadd <4 x float> %a1, %a2 |
| %a4 = shufflevector <4 x float> %a3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2> |
| ret <3 x float> %a4 |
| } |
| |
| define <3 x float> @_Z16rsMatrixMultiplyP12rs_matrix3x3Dv2_f(%struct.rs_matrix3x3* nocapture %m, <2 x float> %in) nounwind readonly { |
| %r = tail call <3 x float> @_Z16rsMatrixMultiplyPK12rs_matrix3x3Dv2_f(%struct.rs_matrix3x3* nocapture %m, <2 x float> %in) nounwind |
| ret <3 x float> %r |
| } |
| |
| define <4 x float> @_Z16rsMatrixMultiplyPK12rs_matrix4x4Dv4_f(%struct.rs_matrix4x4* nocapture %m, <4 x float> %in) nounwind readonly { |
| %x0 = extractelement <4 x float> %in, i32 0 |
| %x = tail call <4 x float> @smear_f(float %x0) nounwind readnone |
| %y0 = extractelement <4 x float> %in, i32 1 |
| %y = tail call <4 x float> @smear_f(float %y0) nounwind readnone |
| %z0 = extractelement <4 x float> %in, i32 2 |
| %z = tail call <4 x float> @smear_f(float %z0) nounwind readnone |
| %w0 = extractelement <4 x float> %in, i32 3 |
| %w = tail call <4 x float> @smear_f(float %w0) nounwind readnone |
| |
| %px = getelementptr inbounds %struct.rs_matrix4x4* %m, i32 0, i32 0, i32 0 |
| %px2 = bitcast float* %px to <4 x float>* |
| %xm = load <4 x float>* %px2 |
| %py = getelementptr inbounds %struct.rs_matrix4x4* %m, i32 0, i32 0, i32 4 |
| %py2 = bitcast float* %py to <4 x float>* |
| %ym = load <4 x float>* %py2 |
| %pz = getelementptr inbounds %struct.rs_matrix4x4* %m, i32 0, i32 0, i32 8 |
| %pz2 = bitcast float* %pz to <4 x float>* |
| %zm = load <4 x float>* %pz2 |
| %pw = getelementptr inbounds %struct.rs_matrix4x4* %m, i32 0, i32 0, i32 12 |
| %pw2 = bitcast float* %pw to <4 x float>* |
| %wm = load <4 x float>* %pw2 |
| |
| %a1 = fmul <4 x float> %x, %xm |
| %a2 = fmul <4 x float> %y, %ym |
| %a3 = fadd <4 x float> %a1, %a2 |
| %a4 = fmul <4 x float> %z, %zm |
| %a5 = fadd <4 x float> %a3, %a4 |
| %a6 = fmul <4 x float> %w, %wm |
| %a7 = fadd <4 x float> %a5, %a6 |
| ret <4 x float> %a7 |
| } |
| |
| define <4 x float> @_Z16rsMatrixMultiplyP12rs_matrix4x4Dv4_f(%struct.rs_matrix4x4* nocapture %m, <4 x float> %in) nounwind readonly { |
| %r = tail call <4 x float> @_Z16rsMatrixMultiplyPK12rs_matrix4x4Dv4_f(%struct.rs_matrix4x4* nocapture %m, <4 x float> %in) nounwind |
| ret <4 x float> %r |
| } |
| |
| define <4 x float> @_Z16rsMatrixMultiplyPK12rs_matrix4x4Dv3_f(%struct.rs_matrix4x4* nocapture %m, <3 x float> %in) nounwind readonly { |
| %x0 = extractelement <3 x float> %in, i32 0 |
| %x = tail call <4 x float> @smear_f(float %x0) nounwind readnone |
| %y0 = extractelement <3 x float> %in, i32 1 |
| %y = tail call <4 x float> @smear_f(float %y0) nounwind readnone |
| %z0 = extractelement <3 x float> %in, i32 2 |
| %z = tail call <4 x float> @smear_f(float %z0) nounwind readnone |
| |
| %px = getelementptr inbounds %struct.rs_matrix4x4* %m, i32 0, i32 0, i32 0 |
| %px2 = bitcast float* %px to <4 x float>* |
| %xm = load <4 x float>* %px2 |
| %py = getelementptr inbounds %struct.rs_matrix4x4* %m, i32 0, i32 0, i32 4 |
| %py2 = bitcast float* %py to <4 x float>* |
| %ym = load <4 x float>* %py2 |
| %pz = getelementptr inbounds %struct.rs_matrix4x4* %m, i32 0, i32 0, i32 8 |
| %pz2 = bitcast float* %pz to <4 x float>* |
| %zm = load <4 x float>* %pz2 |
| %pw = getelementptr inbounds %struct.rs_matrix4x4* %m, i32 0, i32 0, i32 12 |
| %pw2 = bitcast float* %pw to <4 x float>* |
| %wm = load <4 x float>* %pw2 |
| |
| %a1 = fmul <4 x float> %x, %xm |
| %a2 = fadd <4 x float> %wm, %a1 |
| %a3 = fmul <4 x float> %y, %ym |
| %a4 = fadd <4 x float> %a2, %a3 |
| %a5 = fmul <4 x float> %z, %zm |
| %a6 = fadd <4 x float> %a4, %a5 |
| ret <4 x float> %a6 |
| } |
| |
| define <4 x float> @_Z16rsMatrixMultiplyP12rs_matrix4x4Dv3_f(%struct.rs_matrix4x4* nocapture %m, <3 x float> %in) nounwind readonly { |
| %r = tail call <4 x float> @_Z16rsMatrixMultiplyPK12rs_matrix4x4Dv3_f(%struct.rs_matrix4x4* nocapture %m, <3 x float> %in) nounwind |
| ret <4 x float> %r |
| } |
| |
| define <4 x float> @_Z16rsMatrixMultiplyPK12rs_matrix4x4Dv2_f(%struct.rs_matrix4x4* nocapture %m, <2 x float> %in) nounwind readonly { |
| %x0 = extractelement <2 x float> %in, i32 0 |
| %x = tail call <4 x float> @smear_f(float %x0) nounwind readnone |
| %y0 = extractelement <2 x float> %in, i32 1 |
| %y = tail call <4 x float> @smear_f(float %y0) nounwind readnone |
| |
| %px = getelementptr inbounds %struct.rs_matrix4x4* %m, i32 0, i32 0, i32 0 |
| %px2 = bitcast float* %px to <4 x float>* |
| %xm = load <4 x float>* %px2 |
| %py = getelementptr inbounds %struct.rs_matrix4x4* %m, i32 0, i32 0, i32 4 |
| %py2 = bitcast float* %py to <4 x float>* |
| %ym = load <4 x float>* %py2 |
| %pw = getelementptr inbounds %struct.rs_matrix4x4* %m, i32 0, i32 0, i32 12 |
| %pw2 = bitcast float* %pw to <4 x float>* |
| %wm = load <4 x float>* %pw2 |
| |
| %a1 = fmul <4 x float> %x, %xm |
| %a2 = fadd <4 x float> %wm, %a1 |
| %a3 = fmul <4 x float> %y, %ym |
| %a4 = fadd <4 x float> %a2, %a3 |
| ret <4 x float> %a4 |
| } |
| |
| define <4 x float> @_Z16rsMatrixMultiplyP12rs_matrix4x4Dv2_f(%struct.rs_matrix4x4* nocapture %m, <2 x float> %in) nounwind readonly { |
| %r = tail call <4 x float> @_Z16rsMatrixMultiplyPK12rs_matrix4x4Dv2_f(%struct.rs_matrix4x4* nocapture %m, <2 x float> %in) nounwind |
| ret <4 x float> %r |
| } |
| |