1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=i686-- -mattr=+sse2 | FileCheck %s 3 4define fastcc void @fht(float* %fz, i16 signext %n) { 5; CHECK-LABEL: fht: 6; CHECK: # %bb.0: # %entry 7; CHECK-NEXT: movss {{.*#+}} xmm1 = mem[0],zero,zero,zero 8; CHECK-NEXT: xorps %xmm0, %xmm0 9; CHECK-NEXT: xorps %xmm2, %xmm2 10; CHECK-NEXT: subss %xmm1, %xmm2 11; CHECK-NEXT: movaps %xmm1, %xmm3 12; CHECK-NEXT: mulss %xmm0, %xmm3 13; CHECK-NEXT: addss %xmm1, %xmm3 14; CHECK-NEXT: movaps %xmm1, %xmm4 15; CHECK-NEXT: subss %xmm3, %xmm4 16; CHECK-NEXT: addss %xmm1, %xmm3 17; CHECK-NEXT: xorps %xmm5, %xmm5 18; CHECK-NEXT: subss %xmm2, %xmm5 19; CHECK-NEXT: addss %xmm0, %xmm2 20; CHECK-NEXT: mulss %xmm0, %xmm3 21; CHECK-NEXT: mulss %xmm0, %xmm5 22; CHECK-NEXT: addss %xmm3, %xmm5 23; CHECK-NEXT: addss %xmm0, %xmm5 24; CHECK-NEXT: movss %xmm5, 0 25; CHECK-NEXT: movss %xmm1, (%ecx) 26; CHECK-NEXT: addss %xmm0, %xmm1 27; CHECK-NEXT: movss %xmm1, 0 28; CHECK-NEXT: mulss %xmm0, %xmm2 29; CHECK-NEXT: mulss %xmm0, %xmm4 30; CHECK-NEXT: addss %xmm2, %xmm4 31; CHECK-NEXT: addss %xmm0, %xmm4 32; CHECK-NEXT: movss %xmm4, (%ecx) 33; CHECK-NEXT: retl 34entry: 35 br i1 true, label %bb171.preheader, label %bb431 36 37bb171.preheader: ; preds = %entry 38 %tmp176 = fadd float 0.000000e+00, 1.000000e+00 ; <float> [#uses=2] 39 %gi.1 = getelementptr float, float* %fz, i32 0 ; <float*> [#uses=2] 40 %tmp240 = load float, float* %gi.1, align 4 ; <float> [#uses=1] 41 %tmp242 = fsub float %tmp240, 0.000000e+00 ; <float> [#uses=2] 42 %tmp251 = getelementptr float, float* %fz, i32 0 ; <float*> [#uses=1] 43 %tmp252 = load float, float* %tmp251, align 4 ; <float> [#uses=1] 44 %tmp258 = getelementptr float, float* %fz, i32 0 ; <float*> [#uses=2] 45 %tmp259 = load float, float* %tmp258, align 4 ; <float> [#uses=2] 46 %tmp261 = fmul float %tmp259, %tmp176 ; <float> [#uses=1] 47 %tmp262 = fsub float 0.000000e+00, %tmp261 ; <float> [#uses=2] 48 %tmp269 = fmul float %tmp252, %tmp176 ; <float> [#uses=1] 49 %tmp276 = fmul float %tmp259, 0.000000e+00 ; <float> [#uses=1] 50 %tmp277 = fadd float %tmp269, %tmp276 ; <float> [#uses=2] 51 %tmp281 = getelementptr float, float* %fz, i32 0 ; <float*> [#uses=1] 52 %tmp282 = load float, float* %tmp281, align 4 ; <float> [#uses=2] 53 %tmp284 = fsub float %tmp282, %tmp277 ; <float> [#uses=1] 54 %tmp291 = fadd float %tmp282, %tmp277 ; <float> [#uses=1] 55 %tmp298 = fsub float 0.000000e+00, %tmp262 ; <float> [#uses=1] 56 %tmp305 = fadd float 0.000000e+00, %tmp262 ; <float> [#uses=1] 57 %tmp315 = fmul float 0.000000e+00, %tmp291 ; <float> [#uses=1] 58 %tmp318 = fmul float 0.000000e+00, %tmp298 ; <float> [#uses=1] 59 %tmp319 = fadd float %tmp315, %tmp318 ; <float> [#uses=1] 60 %tmp329 = fadd float 0.000000e+00, %tmp319 ; <float> [#uses=1] 61 store float %tmp329, float* null, align 4 62 %tmp336 = fsub float %tmp242, 0.000000e+00 ; <float> [#uses=1] 63 store float %tmp336, float* %tmp258, align 4 64 %tmp343 = fadd float %tmp242, 0.000000e+00 ; <float> [#uses=1] 65 store float %tmp343, float* null, align 4 66 %tmp355 = fmul float 0.000000e+00, %tmp305 ; <float> [#uses=1] 67 %tmp358 = fmul float 0.000000e+00, %tmp284 ; <float> [#uses=1] 68 %tmp359 = fadd float %tmp355, %tmp358 ; <float> [#uses=1] 69 %tmp369 = fadd float 0.000000e+00, %tmp359 ; <float> [#uses=1] 70 store float %tmp369, float* %gi.1, align 4 71 ret void 72 73bb431: ; preds = %entry 74 ret void 75} 76