brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.5 KiB · 02daaa2 Raw
285 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i386-apple-darwin10 -mcpu=penryn | FileCheck %s3 4; rdar://74754895 6define i32 @test1(i32 %a, i32 %b) nounwind ssp {7; CHECK-LABEL: test1:8; CHECK:       ## %bb.0: ## %entry9; CHECK-NEXT:    movzbl {{[0-9]+}}(%esp), %eax10; CHECK-NEXT:    xorb {{[0-9]+}}(%esp), %al11; CHECK-NEXT:    testb $64, %al12; CHECK-NEXT:    jne _bar ## TAILCALL13; CHECK-NEXT:  ## %bb.1: ## %bb14; CHECK-NEXT:    jmp _foo ## TAILCALL15entry:16  %0 = and i32 %a, 1638417  %1 = icmp ne i32 %0, 018  %2 = and i32 %b, 1638419  %3 = icmp ne i32 %2, 020  %4 = xor i1 %1, %321  br i1 %4, label %bb1, label %bb22 23bb:                                               ; preds = %entry24  %5 = tail call i32 (...) @foo() nounwind       ; <i32> [#uses=1]25  ret i32 %526 27bb1:                                              ; preds = %entry28  %6 = tail call i32 (...) @bar() nounwind       ; <i32> [#uses=1]29  ret i32 %630}31 32declare i32 @foo(...)33 34declare i32 @bar(...)35 36 37; <rdar://problem/7598384>:38;39;    jCC  L140;    jmp  L241; L1:42;   ...43; L2:44;   ...45;46; to:47;48;    jnCC L249; L1:50;   ...51; L2:52;   ...53define float @test4(float %x, float %y) nounwind readnone optsize ssp {54; CHECK-LABEL: test4:55; CHECK:       ## %bb.0: ## %entry56; CHECK-NEXT:    pushl %eax57; CHECK-NEXT:    cvtss2sd {{[0-9]+}}(%esp), %xmm158; CHECK-NEXT:    cvtss2sd {{[0-9]+}}(%esp), %xmm059; CHECK-NEXT:    mulsd %xmm1, %xmm060; CHECK-NEXT:    xorpd %xmm1, %xmm161; CHECK-NEXT:    ucomisd %xmm1, %xmm062; CHECK-NEXT:    jne LBB1_163; CHECK-NEXT:    jnp LBB1_264; CHECK-NEXT:  LBB1_1: ## %bb165; CHECK-NEXT:    addsd {{\.?LCPI[0-9]+_[0-9]+}}, %xmm066; CHECK-NEXT:  LBB1_2: ## %bb267; CHECK-NEXT:    cvtsd2ss %xmm0, %xmm068; CHECK-NEXT:    movss %xmm0, (%esp)69; CHECK-NEXT:    flds (%esp)70; CHECK-NEXT:    popl %eax71; CHECK-NEXT:    retl72entry:73  %0 = fpext float %x to double                   ; <double> [#uses=1]74  %1 = fpext float %y to double                   ; <double> [#uses=1]75  %2 = fmul double %0, %1                         ; <double> [#uses=3]76  %3 = fcmp oeq double %2, 0.000000e+00           ; <i1> [#uses=1]77  br i1 %3, label %bb2, label %bb178 79 80bb1:                                              ; preds = %entry81  %4 = fadd double %2, -1.000000e+00              ; <double> [#uses=1]82  br label %bb283 84bb2:                                              ; preds = %entry, %bb185  %.0.in = phi double [ %4, %bb1 ], [ %2, %entry ] ; <double> [#uses=1]86  %.0 = fptrunc double %.0.in to float            ; <float> [#uses=1]87  ret float %.088}89 90declare i32 @llvm.x86.sse41.ptestz(<4 x float> %p1, <4 x float> %p2) nounwind91declare i32 @llvm.x86.sse41.ptestc(<4 x float> %p1, <4 x float> %p2) nounwind92 93define <4 x float> @test5(<4 x float> %a, <4 x float> %b) nounwind {94; CHECK-LABEL: test5:95; CHECK:       ## %bb.0: ## %entry96; CHECK-NEXT:    ptest %xmm0, %xmm097; CHECK-NEXT:    jne LBB2_298; CHECK-NEXT:  ## %bb.1: ## %bb199; CHECK-NEXT:    addps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm1100; CHECK-NEXT:    movaps %xmm1, %xmm0101; CHECK-NEXT:    retl102; CHECK-NEXT:  LBB2_2: ## %bb2103; CHECK-NEXT:    divps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm1104; CHECK-NEXT:    movaps %xmm1, %xmm0105; CHECK-NEXT:    retl106entry:107 108  %res = call i32 @llvm.x86.sse41.ptestz(<4 x float> %a, <4 x float> %a) nounwind109  %one = icmp ne i32 %res, 0110  br i1 %one, label %bb1, label %bb2111 112bb1:113  %c = fadd <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >114  br label %return115 116bb2:117	%d = fdiv <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >118	br label %return119 120return:121  %e = phi <4 x float> [%c, %bb1], [%d, %bb2]122  ret <4 x float> %e123}124 125define <4 x float> @test7(<4 x float> %a, <4 x float> %b) nounwind {126; CHECK-LABEL: test7:127; CHECK:       ## %bb.0: ## %entry128; CHECK-NEXT:    ptest %xmm0, %xmm0129; CHECK-NEXT:    jne LBB3_2130; CHECK-NEXT:  ## %bb.1: ## %bb1131; CHECK-NEXT:    addps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm1132; CHECK-NEXT:    movaps %xmm1, %xmm0133; CHECK-NEXT:    retl134; CHECK-NEXT:  LBB3_2: ## %bb2135; CHECK-NEXT:    divps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm1136; CHECK-NEXT:    movaps %xmm1, %xmm0137; CHECK-NEXT:    retl138entry:139 140  %res = call i32 @llvm.x86.sse41.ptestz(<4 x float> %a, <4 x float> %a) nounwind141  %one = trunc i32 %res to i1142  br i1 %one, label %bb1, label %bb2143 144bb1:145  %c = fadd <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >146  br label %return147 148bb2:149	%d = fdiv <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >150	br label %return151 152return:153  %e = phi <4 x float> [%c, %bb1], [%d, %bb2]154  ret <4 x float> %e155}156 157define <4 x float> @test8(<4 x float> %a, <4 x float> %b) nounwind {158; CHECK-LABEL: test8:159; CHECK:       ## %bb.0: ## %entry160; CHECK-NEXT:    ptest %xmm0, %xmm0161; CHECK-NEXT:    jae LBB4_2162; CHECK-NEXT:  ## %bb.1: ## %bb1163; CHECK-NEXT:    addps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm1164; CHECK-NEXT:    movaps %xmm1, %xmm0165; CHECK-NEXT:    retl166; CHECK-NEXT:  LBB4_2: ## %bb2167; CHECK-NEXT:    divps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm1168; CHECK-NEXT:    movaps %xmm1, %xmm0169; CHECK-NEXT:    retl170entry:171 172  %res = call i32 @llvm.x86.sse41.ptestc(<4 x float> %a, <4 x float> %a) nounwind173  %one = icmp ne i32 %res, 0174  br i1 %one, label %bb1, label %bb2175 176bb1:177  %c = fadd <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >178  br label %return179 180bb2:181	%d = fdiv <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >182	br label %return183 184return:185  %e = phi <4 x float> [%c, %bb1], [%d, %bb2]186  ret <4 x float> %e187}188 189define <4 x float> @test10(<4 x float> %a, <4 x float> %b) nounwind {190; CHECK-LABEL: test10:191; CHECK:       ## %bb.0: ## %entry192; CHECK-NEXT:    ptest %xmm0, %xmm0193; CHECK-NEXT:    jae LBB5_2194; CHECK-NEXT:  ## %bb.1: ## %bb1195; CHECK-NEXT:    addps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm1196; CHECK-NEXT:    movaps %xmm1, %xmm0197; CHECK-NEXT:    retl198; CHECK-NEXT:  LBB5_2: ## %bb2199; CHECK-NEXT:    divps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm1200; CHECK-NEXT:    movaps %xmm1, %xmm0201; CHECK-NEXT:    retl202entry:203 204  %res = call i32 @llvm.x86.sse41.ptestc(<4 x float> %a, <4 x float> %a) nounwind205  %one = trunc i32 %res to i1206  br i1 %one, label %bb1, label %bb2207 208bb1:209  %c = fadd <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >210  br label %return211 212bb2:213	%d = fdiv <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >214	br label %return215 216return:217  %e = phi <4 x float> [%c, %bb1], [%d, %bb2]218  ret <4 x float> %e219}220 221define <4 x float> @test11(<4 x float> %a, <4 x float> %b) nounwind {222; CHECK-LABEL: test11:223; CHECK:       ## %bb.0: ## %entry224; CHECK-NEXT:    ptest %xmm0, %xmm0225; CHECK-NEXT:    jne LBB6_2226; CHECK-NEXT:  ## %bb.1: ## %bb1227; CHECK-NEXT:    addps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm1228; CHECK-NEXT:    movaps %xmm1, %xmm0229; CHECK-NEXT:    retl230; CHECK-NEXT:  LBB6_2: ## %bb2231; CHECK-NEXT:    divps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm1232; CHECK-NEXT:    movaps %xmm1, %xmm0233; CHECK-NEXT:    retl234entry:235 236  %res = call i32 @llvm.x86.sse41.ptestz(<4 x float> %a, <4 x float> %a) nounwind237  %one = icmp eq i32 %res, 1238  br i1 %one, label %bb1, label %bb2239 240bb1:241  %c = fadd <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >242  br label %return243 244bb2:245	%d = fdiv <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >246	br label %return247 248return:249  %e = phi <4 x float> [%c, %bb1], [%d, %bb2]250  ret <4 x float> %e251}252 253define <4 x float> @test12(<4 x float> %a, <4 x float> %b) nounwind {254; CHECK-LABEL: test12:255; CHECK:       ## %bb.0: ## %entry256; CHECK-NEXT:    ptest %xmm0, %xmm0257; CHECK-NEXT:    je LBB7_2258; CHECK-NEXT:  ## %bb.1: ## %bb1259; CHECK-NEXT:    addps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm1260; CHECK-NEXT:    movaps %xmm1, %xmm0261; CHECK-NEXT:    retl262; CHECK-NEXT:  LBB7_2: ## %bb2263; CHECK-NEXT:    divps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm1264; CHECK-NEXT:    movaps %xmm1, %xmm0265; CHECK-NEXT:    retl266entry:267 268  %res = call i32 @llvm.x86.sse41.ptestz(<4 x float> %a, <4 x float> %a) nounwind269  %one = icmp ne i32 %res, 1270  br i1 %one, label %bb1, label %bb2271 272bb1:273  %c = fadd <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >274  br label %return275 276bb2:277	%d = fdiv <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >278	br label %return279 280return:281  %e = phi <4 x float> [%c, %bb1], [%d, %bb2]282  ret <4 x float> %e283}284 285