brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · 7cbb983 Raw
128 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=knl | FileCheck %s3 4define <4 x float> @select_mask_add_ss(<4 x float> %w, i8 zeroext %u, <4 x float> %a, <4 x float> %b) {5; CHECK-LABEL: select_mask_add_ss:6; CHECK:       ## %bb.0: ## %entry7; CHECK-NEXT:    kmovw %edi, %k18; CHECK-NEXT:    vaddss %xmm2, %xmm1, %xmm0 {%k1}9; CHECK-NEXT:    retq10entry:11  %0 = extractelement <4 x float> %b, i32 012  %1 = extractelement <4 x float> %a, i32 013  %2 = fadd float %1, %014  %3 = and i8 %u, 115  %4 = icmp eq i8 %3, 016  %5 = extractelement <4 x float> %w, i32 017  %6 = select i1 %4, float %5, float %218  %7 = insertelement <4 x float> %a, float %6, i32 019  ret <4 x float> %720}21 22define <4 x float> @select_maskz_add_ss(i8 zeroext %u, <4 x float> %a, <4 x float> %b) {23; CHECK-LABEL: select_maskz_add_ss:24; CHECK:       ## %bb.0: ## %entry25; CHECK-NEXT:    kmovw %edi, %k126; CHECK-NEXT:    vaddss %xmm1, %xmm0, %xmm0 {%k1} {z}27; CHECK-NEXT:    retq28entry:29  %0 = extractelement <4 x float> %b, i32 030  %1 = extractelement <4 x float> %a, i32 031  %2 = fadd float %1, %032  %3 = and i8 %u, 133  %4 = icmp eq i8 %3, 034  %5 = select i1 %4, float 0.000000e+00, float %235  %6 = insertelement <4 x float> %a, float %5, i32 036  ret <4 x float> %637}38 39define <4 x float> @select_mask_sub_ss(<4 x float> %w, i8 zeroext %u, <4 x float> %a, <4 x float> %b) {40; CHECK-LABEL: select_mask_sub_ss:41; CHECK:       ## %bb.0: ## %entry42; CHECK-NEXT:    kmovw %edi, %k143; CHECK-NEXT:    vsubss %xmm2, %xmm1, %xmm0 {%k1}44; CHECK-NEXT:    retq45entry:46  %0 = extractelement <4 x float> %b, i32 047  %1 = extractelement <4 x float> %a, i32 048  %2 = fsub float %1, %049  %3 = and i8 %u, 150  %4 = icmp eq i8 %3, 051  %5 = extractelement <4 x float> %w, i32 052  %6 = select i1 %4, float %5, float %253  %7 = insertelement <4 x float> %a, float %6, i32 054  ret <4 x float> %755}56 57define <4 x float> @select_maskz_sub_ss(i8 zeroext %u, <4 x float> %a, <4 x float> %b) {58; CHECK-LABEL: select_maskz_sub_ss:59; CHECK:       ## %bb.0: ## %entry60; CHECK-NEXT:    kmovw %edi, %k161; CHECK-NEXT:    vsubss %xmm1, %xmm0, %xmm0 {%k1} {z}62; CHECK-NEXT:    retq63entry:64  %0 = extractelement <4 x float> %b, i32 065  %1 = extractelement <4 x float> %a, i32 066  %2 = fsub float %1, %067  %3 = and i8 %u, 168  %4 = icmp eq i8 %3, 069  %5 = select i1 %4, float 0.000000e+00, float %270  %6 = insertelement <4 x float> %a, float %5, i32 071  ret <4 x float> %672}73 74define <4 x float> @select_mask_mul_ss(<4 x float> %w, i8 zeroext %u, <4 x float> %a, <4 x float> %b) {75; CHECK-LABEL: select_mask_mul_ss:76; CHECK:       ## %bb.0: ## %entry77; CHECK-NEXT:    kmovw %edi, %k178; CHECK-NEXT:    vmulss %xmm2, %xmm1, %xmm0 {%k1}79; CHECK-NEXT:    retq80entry:81  %0 = extractelement <4 x float> %b, i32 082  %1 = extractelement <4 x float> %a, i32 083  %2 = fmul float %1, %084  %3 = and i8 %u, 185  %4 = icmp eq i8 %3, 086  %5 = extractelement <4 x float> %w, i32 087  %6 = select i1 %4, float %5, float %288  %7 = insertelement <4 x float> %a, float %6, i32 089  ret <4 x float> %790}91 92define <4 x float> @select_maskz_mul_ss(i8 zeroext %u, <4 x float> %a, <4 x float> %b) {93; CHECK-LABEL: select_maskz_mul_ss:94; CHECK:       ## %bb.0: ## %entry95; CHECK-NEXT:    kmovw %edi, %k196; CHECK-NEXT:    vmulss %xmm1, %xmm0, %xmm0 {%k1} {z}97; CHECK-NEXT:    retq98entry:99  %0 = extractelement <4 x float> %b, i32 0100  %1 = extractelement <4 x float> %a, i32 0101  %2 = fmul float %1, %0102  %3 = and i8 %u, 1103  %4 = icmp eq i8 %3, 0104  %5 = select i1 %4, float 0.000000e+00, float %2105  %6 = insertelement <4 x float> %a, float %5, i32 0106  ret <4 x float> %6107}108 109; Make sure we don't crash trying to truncate the and instruction i4->i8. We need to extend instead.110define <4 x float> @select_mask_add_ss_small_mask_type(<4 x float> %w, i4 %u, <4 x float> %a, <4 x float> %b) {111; CHECK-LABEL: select_mask_add_ss_small_mask_type:112; CHECK:       ## %bb.0: ## %entry113; CHECK-NEXT:    kmovw %edi, %k1114; CHECK-NEXT:    vaddss %xmm2, %xmm1, %xmm0 {%k1}115; CHECK-NEXT:    retq116entry:117  %0 = extractelement <4 x float> %b, i32 0118  %1 = extractelement <4 x float> %a, i32 0119  %2 = fadd float %1, %0120  %3 = and i4 %u, 1121  %4 = icmp eq i4 %3, 0122  %5 = extractelement <4 x float> %w, i32 0123  %6 = select i1 %4, float %5, float %2124  %7 = insertelement <4 x float> %a, float %6, i32 0125  ret <4 x float> %7126}127 128