brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.1 KiB · 831ab0a Raw
293 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=hexagon -mcpu=hexagonv5 < %s | FileCheck %s3 4;---------------------------------------------------------------------5; fast sqrt6;---------------------------------------------------------------------7 8define float @fast_sqrt_f32(float %x) {9; CHECK-LABEL: fast_sqrt_f32:10; CHECK:         .cfi_startproc11; CHECK-NEXT:  // %bb.0:12; CHECK-NEXT:    {13; CHECK-NEXT:     jump __hexagon_fast2_sqrtf14; CHECK-NEXT:    }15  %result = call nnan ninf nsz afn float @llvm.sqrt.f32(float %x)16  ret float %result17}18 19define double @fast_sqrt_f64(double %x) {20; CHECK-LABEL: fast_sqrt_f64:21; CHECK:         .cfi_startproc22; CHECK-NEXT:  // %bb.0:23; CHECK-NEXT:    {24; CHECK-NEXT:     jump __hexagon_fast2_sqrtdf225; CHECK-NEXT:    }26  %result = call nnan ninf nsz afn double @llvm.sqrt.f64(double %x)27  ret double %result28}29 30;---------------------------------------------------------------------31; fast fadd32;---------------------------------------------------------------------33 34define float @fast_add_f32(float %x, float %y) {35; CHECK-LABEL: fast_add_f32:36; CHECK:         .cfi_startproc37; CHECK-NEXT:  // %bb.0:38; CHECK-NEXT:    {39; CHECK-NEXT:     r0 = sfadd(r0,r1)40; CHECK-NEXT:     jumpr r3141; CHECK-NEXT:    }42  %result = fadd nnan ninf nsz afn float %x, %y43  ret float %result44}45 46define double @fast_add_f64(double %x, double %y) {47; CHECK-LABEL: fast_add_f64:48; CHECK:         .cfi_startproc49; CHECK-NEXT:  // %bb.0:50; CHECK-NEXT:    {51; CHECK-NEXT:     jump __hexagon_fast_adddf352; CHECK-NEXT:    }53  %result = fadd nnan ninf nsz afn double %x, %y54  ret double %result55}56 57;---------------------------------------------------------------------58; fast fsub59;---------------------------------------------------------------------60 61define float @fast_sub_f32(float %x, float %y) {62; CHECK-LABEL: fast_sub_f32:63; CHECK:         .cfi_startproc64; CHECK-NEXT:  // %bb.0:65; CHECK-NEXT:    {66; CHECK-NEXT:     r0 = sfsub(r0,r1)67; CHECK-NEXT:     jumpr r3168; CHECK-NEXT:    }69  %result = fsub nnan ninf nsz afn float %x, %y70  ret float %result71}72 73define double @fast_sub_f64(double %x, double %y) {74; CHECK-LABEL: fast_sub_f64:75; CHECK:         .cfi_startproc76; CHECK-NEXT:  // %bb.0:77; CHECK-NEXT:    {78; CHECK-NEXT:     jump __hexagon_fast_subdf379; CHECK-NEXT:    }80  %result = fsub nnan ninf nsz afn double %x, %y81  ret double %result82}83 84;---------------------------------------------------------------------85; fast fmul86;---------------------------------------------------------------------87 88define float @fast_mul_f32(float %x, float %y) {89; CHECK-LABEL: fast_mul_f32:90; CHECK:         .cfi_startproc91; CHECK-NEXT:  // %bb.0:92; CHECK-NEXT:    {93; CHECK-NEXT:     r0 = sfmpy(r0,r1)94; CHECK-NEXT:     jumpr r3195; CHECK-NEXT:    }96  %result = fmul nnan ninf nsz afn float %x, %y97  ret float %result98}99 100define double @fast_mul_f64(double %x, double %y) {101; CHECK-LABEL: fast_mul_f64:102; CHECK:         .cfi_startproc103; CHECK-NEXT:  // %bb.0:104; CHECK-NEXT:    {105; CHECK-NEXT:     jump __hexagon_fast_muldf3106; CHECK-NEXT:    }107  %result = fmul nnan ninf nsz afn double %x, %y108  ret double %result109}110 111;---------------------------------------------------------------------112; fast fdiv113;---------------------------------------------------------------------114 115define float @fast_div_f32(float %x, float %y) {116; CHECK-LABEL: fast_div_f32:117; CHECK:         .cfi_startproc118; CHECK-NEXT:  // %bb.0:119; CHECK-NEXT:    {120; CHECK-NEXT:     r2 = sffixupn(r0,r1)121; CHECK-NEXT:     r4,p0 = sfrecipa(r0,r1)122; CHECK-NEXT:     r5 = ##1065353216123; CHECK-NEXT:    }124; CHECK-NEXT:    {125; CHECK-NEXT:     r1 = sffixupd(r0,r1)126; CHECK-NEXT:     r6 = ##1065353216127; CHECK-NEXT:    }128; CHECK-NEXT:    {129; CHECK-NEXT:     r5 -= sfmpy(r1,r4):lib130; CHECK-NEXT:     r0 = and(r2,##-2147483648)131; CHECK-NEXT:     r3 = r2132; CHECK-NEXT:    }133; CHECK-NEXT:    {134; CHECK-NEXT:     r4 += sfmpy(r5,r4):lib135; CHECK-NEXT:    }136; CHECK-NEXT:    {137; CHECK-NEXT:     r0 += sfmpy(r2,r4):lib138; CHECK-NEXT:     r6 -= sfmpy(r1,r4):lib139; CHECK-NEXT:    }140; CHECK-NEXT:    {141; CHECK-NEXT:     r3 -= sfmpy(r1,r0):lib142; CHECK-NEXT:     r4 += sfmpy(r6,r4):lib143; CHECK-NEXT:    }144; CHECK-NEXT:    {145; CHECK-NEXT:     r0 += sfmpy(r3,r4):lib146; CHECK-NEXT:    }147; CHECK-NEXT:    {148; CHECK-NEXT:     r2 -= sfmpy(r0,r1):lib149; CHECK-NEXT:    }150; CHECK-NEXT:    {151; CHECK-NEXT:     r0 += sfmpy(r2,r4,p0):scale152; CHECK-NEXT:     jumpr r31153; CHECK-NEXT:    }154  %result = fdiv nnan ninf nsz afn float %x, %y155  ret float %result156}157 158define double @fast_div_f64(double %x, double %y) {159; CHECK-LABEL: fast_div_f64:160; CHECK:         .cfi_startproc161; CHECK-NEXT:  // %bb.0:162; CHECK-NEXT:    {163; CHECK-NEXT:     jump __hexagon_fast_divdf3164; CHECK-NEXT:    }165  %result = fdiv nnan ninf nsz afn double %x, %y166  ret double %result167}168 169;---------------------------------------------------------------------170; Negative tests sqrt171;---------------------------------------------------------------------172 173; TODO: What flags do we really need here?174define float @sqrt_f32__afn(float %x) {175; CHECK-LABEL: sqrt_f32__afn:176; CHECK:         .cfi_startproc177; CHECK-NEXT:  // %bb.0:178; CHECK-NEXT:    {179; CHECK-NEXT:     jump __hexagon_sqrtf180; CHECK-NEXT:    }181  %result = call afn float @llvm.sqrt.f32(float %x)182  ret float %result183}184 185define float @sqrt_f32__afn_ninf(float %x) {186; CHECK-LABEL: sqrt_f32__afn_ninf:187; CHECK:         .cfi_startproc188; CHECK-NEXT:  // %bb.0:189; CHECK-NEXT:    {190; CHECK-NEXT:     jump __hexagon_sqrtf191; CHECK-NEXT:    }192  %result = call afn ninf float @llvm.sqrt.f32(float %x)193  ret float %result194}195 196define float @sqrt_f32__afn_nnan(float %x) {197; CHECK-LABEL: sqrt_f32__afn_nnan:198; CHECK:         .cfi_startproc199; CHECK-NEXT:  // %bb.0:200; CHECK-NEXT:    {201; CHECK-NEXT:     jump __hexagon_sqrtf202; CHECK-NEXT:    }203  %result = call afn nnan float @llvm.sqrt.f32(float %x)204  ret float %result205}206 207define float @sqrt_f32__nnan(float %x) {208; CHECK-LABEL: sqrt_f32__nnan:209; CHECK:         .cfi_startproc210; CHECK-NEXT:  // %bb.0:211; CHECK-NEXT:    {212; CHECK-NEXT:     jump __hexagon_sqrtf213; CHECK-NEXT:    }214  %result = call nnan float @llvm.sqrt.f32(float %x)215  ret float %result216}217 218define float @sqrt_f32_nnan_ninf_afn(float %x) {219; CHECK-LABEL: sqrt_f32_nnan_ninf_afn:220; CHECK:         .cfi_startproc221; CHECK-NEXT:  // %bb.0:222; CHECK-NEXT:    {223; CHECK-NEXT:     jump __hexagon_sqrtf224; CHECK-NEXT:    }225  %result = call nnan ninf afn float @llvm.sqrt.f32(float %x)226  ret float %result227}228 229;---------------------------------------------------------------------230; Negative tests fadd231;---------------------------------------------------------------------232 233; TODO: What flags do we really need here?234define float @fadd_f32_afn(float %x, float %y) {235; CHECK-LABEL: fadd_f32_afn:236; CHECK:         .cfi_startproc237; CHECK-NEXT:  // %bb.0:238; CHECK-NEXT:    {239; CHECK-NEXT:     r0 = sfadd(r0,r1)240; CHECK-NEXT:     jumpr r31241; CHECK-NEXT:    }242  %result = fadd afn float %x, %y243  ret float %result244}245 246define float @fadd_f32__afn_ninf(float %x, float %y) {247; CHECK-LABEL: fadd_f32__afn_ninf:248; CHECK:         .cfi_startproc249; CHECK-NEXT:  // %bb.0:250; CHECK-NEXT:    {251; CHECK-NEXT:     r0 = sfadd(r0,r1)252; CHECK-NEXT:     jumpr r31253; CHECK-NEXT:    }254  %result = fadd afn ninf float %x, %y255  ret float %result256}257 258define float @fadd_f32__afn_nnan(float %x, float %y) {259; CHECK-LABEL: fadd_f32__afn_nnan:260; CHECK:         .cfi_startproc261; CHECK-NEXT:  // %bb.0:262; CHECK-NEXT:    {263; CHECK-NEXT:     r0 = sfadd(r0,r1)264; CHECK-NEXT:     jumpr r31265; CHECK-NEXT:    }266  %result = fadd afn nnan float %x, %y267  ret float %result268}269 270define float @fadd_f32__nnan(float %x, float %y) {271; CHECK-LABEL: fadd_f32__nnan:272; CHECK:         .cfi_startproc273; CHECK-NEXT:  // %bb.0:274; CHECK-NEXT:    {275; CHECK-NEXT:     r0 = sfadd(r0,r1)276; CHECK-NEXT:     jumpr r31277; CHECK-NEXT:    }278  %result = fadd nnan float %x, %y279  ret float %result280}281 282define float @fadd_f32__nnan_ninf_afn(float %x, float %y) {283; CHECK-LABEL: fadd_f32__nnan_ninf_afn:284; CHECK:         .cfi_startproc285; CHECK-NEXT:  // %bb.0:286; CHECK-NEXT:    {287; CHECK-NEXT:     r0 = sfadd(r0,r1)288; CHECK-NEXT:     jumpr r31289; CHECK-NEXT:    }290  %result = fadd nnan ninf afn float %x, %y291  ret float %result292}293