brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.6 KiB · 200d36d Raw
172 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 --show-mc-encoding | FileCheck %s --check-prefix=AVX512 --check-prefix=AVX512-KNL3; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=skx --show-mc-encoding | FileCheck %s --check-prefix=AVX512 --check-prefix=AVX512-SKX4; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx --show-mc-encoding | FileCheck %s --check-prefix=AVX5 6define float @test_fdiv(float %a, float %b) {7; AVX512-LABEL: test_fdiv:8; AVX512:       ## %bb.0:9; AVX512-NEXT:    vdivss %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfa,0x5e,0xc1]10; AVX512-NEXT:    retq ## encoding: [0xc3]11;12; AVX-LABEL: test_fdiv:13; AVX:       ## %bb.0:14; AVX-NEXT:    vdivss %xmm1, %xmm0, %xmm0 ## encoding: [0xc5,0xfa,0x5e,0xc1]15; AVX-NEXT:    retq ## encoding: [0xc3]16  %c = fdiv float %a, %b17  ret float %c18}19 20define float @test_fsub(float %a, float %b) {21; AVX512-LABEL: test_fsub:22; AVX512:       ## %bb.0:23; AVX512-NEXT:    vsubss %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfa,0x5c,0xc1]24; AVX512-NEXT:    retq ## encoding: [0xc3]25;26; AVX-LABEL: test_fsub:27; AVX:       ## %bb.0:28; AVX-NEXT:    vsubss %xmm1, %xmm0, %xmm0 ## encoding: [0xc5,0xfa,0x5c,0xc1]29; AVX-NEXT:    retq ## encoding: [0xc3]30  %c = fsub float %a, %b31  ret float %c32}33 34define double @test_fadd(double %a, double %b) {35; AVX512-LABEL: test_fadd:36; AVX512:       ## %bb.0:37; AVX512-NEXT:    vaddsd %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfb,0x58,0xc1]38; AVX512-NEXT:    retq ## encoding: [0xc3]39;40; AVX-LABEL: test_fadd:41; AVX:       ## %bb.0:42; AVX-NEXT:    vaddsd %xmm1, %xmm0, %xmm0 ## encoding: [0xc5,0xfb,0x58,0xc1]43; AVX-NEXT:    retq ## encoding: [0xc3]44  %c = fadd double %a, %b45  ret double %c46}47 48declare float     @llvm.trunc.f32(float  %Val)49declare double    @llvm.trunc.f64(double %Val)50declare float     @llvm.rint.f32(float  %Val)51declare double    @llvm.rint.f64(double %Val)52declare double    @llvm.sqrt.f64(double %Val)53declare float     @llvm.sqrt.f32(float  %Val)54 55define float @test_trunc(float %a) {56; AVX512-LABEL: test_trunc:57; AVX512:       ## %bb.0:58; AVX512-NEXT:    vroundss $11, %xmm0, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x0a,0xc0,0x0b]59; AVX512-NEXT:    retq ## encoding: [0xc3]60;61; AVX-LABEL: test_trunc:62; AVX:       ## %bb.0:63; AVX-NEXT:    vroundss $11, %xmm0, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0a,0xc0,0x0b]64; AVX-NEXT:    retq ## encoding: [0xc3]65  %c = call float @llvm.trunc.f32(float %a)66  ret float %c67}68 69define double @test_sqrt(double %a) {70; AVX512-LABEL: test_sqrt:71; AVX512:       ## %bb.0:72; AVX512-NEXT:    vsqrtsd %xmm0, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfb,0x51,0xc0]73; AVX512-NEXT:    retq ## encoding: [0xc3]74;75; AVX-LABEL: test_sqrt:76; AVX:       ## %bb.0:77; AVX-NEXT:    vsqrtsd %xmm0, %xmm0, %xmm0 ## encoding: [0xc5,0xfb,0x51,0xc0]78; AVX-NEXT:    retq ## encoding: [0xc3]79  %c = call double @llvm.sqrt.f64(double %a)80  ret double %c81}82 83define float @test_rint(float %a) {84; AVX512-LABEL: test_rint:85; AVX512:       ## %bb.0:86; AVX512-NEXT:    vroundss $4, %xmm0, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x0a,0xc0,0x04]87; AVX512-NEXT:    retq ## encoding: [0xc3]88;89; AVX-LABEL: test_rint:90; AVX:       ## %bb.0:91; AVX-NEXT:    vroundss $4, %xmm0, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0a,0xc0,0x04]92; AVX-NEXT:    retq ## encoding: [0xc3]93  %c = call float @llvm.rint.f32(float %a)94  ret float %c95}96 97define float @test_vmax(float %i, float %j) {98; AVX512-LABEL: test_vmax:99; AVX512:       ## %bb.0:100; AVX512-NEXT:    vmaxss %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfa,0x5f,0xc1]101; AVX512-NEXT:    retq ## encoding: [0xc3]102;103; AVX-LABEL: test_vmax:104; AVX:       ## %bb.0:105; AVX-NEXT:    vmaxss %xmm1, %xmm0, %xmm0 ## encoding: [0xc5,0xfa,0x5f,0xc1]106; AVX-NEXT:    retq ## encoding: [0xc3]107  %cmp_res = fcmp ogt float %i, %j108  %max = select i1 %cmp_res, float %i, float %j109  ret float %max110}111 112define float @test_mov(float %a, float %b, float %i, float %j) {113; AVX512-LABEL: test_mov:114; AVX512:       ## %bb.0:115; AVX512-NEXT:    vcmpltss %xmm2, %xmm3, %k1 ## encoding: [0x62,0xf1,0x66,0x08,0xc2,0xca,0x01]116; AVX512-NEXT:    vmovss %xmm1, %xmm0, %xmm0 {%k1} ## encoding: [0x62,0xf1,0x7e,0x09,0x10,0xc1]117; AVX512-NEXT:    retq ## encoding: [0xc3]118;119; AVX-LABEL: test_mov:120; AVX:       ## %bb.0:121; AVX-NEXT:    vcmpltss %xmm2, %xmm3, %xmm2 ## encoding: [0xc5,0xe2,0xc2,0xd2,0x01]122; AVX-NEXT:    vblendvps %xmm2, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x4a,0xc1,0x20]123; AVX-NEXT:    retq ## encoding: [0xc3]124  %cmp_res = fcmp ogt float %i, %j125  %max = select i1 %cmp_res, float %b, float %a126  ret float %max127}128 129define float @zero_float(float %a) {130; AVX512-KNL-LABEL: zero_float:131; AVX512-KNL:       ## %bb.0:132; AVX512-KNL-NEXT:    vxorps %xmm1, %xmm1, %xmm1 ## encoding: [0xc5,0xf0,0x57,0xc9]133; AVX512-KNL-NEXT:    vaddss %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfa,0x58,0xc1]134; AVX512-KNL-NEXT:    retq ## encoding: [0xc3]135;136; AVX512-SKX-LABEL: zero_float:137; AVX512-SKX:       ## %bb.0:138; AVX512-SKX-NEXT:    vxorps %xmm1, %xmm1, %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf0,0x57,0xc9]139; AVX512-SKX-NEXT:    vaddss %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfa,0x58,0xc1]140; AVX512-SKX-NEXT:    retq ## encoding: [0xc3]141;142; AVX-LABEL: zero_float:143; AVX:       ## %bb.0:144; AVX-NEXT:    vxorps %xmm1, %xmm1, %xmm1 ## encoding: [0xc5,0xf0,0x57,0xc9]145; AVX-NEXT:    vaddss %xmm1, %xmm0, %xmm0 ## encoding: [0xc5,0xfa,0x58,0xc1]146; AVX-NEXT:    retq ## encoding: [0xc3]147  %b = fadd float %a, 0.0148  ret float %b149}150 151define double @zero_double(double %a) {152; AVX512-KNL-LABEL: zero_double:153; AVX512-KNL:       ## %bb.0:154; AVX512-KNL-NEXT:    vxorpd %xmm1, %xmm1, %xmm1 ## encoding: [0xc5,0xf1,0x57,0xc9]155; AVX512-KNL-NEXT:    vaddsd %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfb,0x58,0xc1]156; AVX512-KNL-NEXT:    retq ## encoding: [0xc3]157;158; AVX512-SKX-LABEL: zero_double:159; AVX512-SKX:       ## %bb.0:160; AVX512-SKX-NEXT:    vxorpd %xmm1, %xmm1, %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf1,0x57,0xc9]161; AVX512-SKX-NEXT:    vaddsd %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfb,0x58,0xc1]162; AVX512-SKX-NEXT:    retq ## encoding: [0xc3]163;164; AVX-LABEL: zero_double:165; AVX:       ## %bb.0:166; AVX-NEXT:    vxorpd %xmm1, %xmm1, %xmm1 ## encoding: [0xc5,0xf1,0x57,0xc9]167; AVX-NEXT:    vaddsd %xmm1, %xmm0, %xmm0 ## encoding: [0xc5,0xfb,0x58,0xc1]168; AVX-NEXT:    retq ## encoding: [0xc3]169  %b = fadd double %a, 0.0170  ret double %b171}172