225 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=hexagon < %s | FileCheck %s3; RUN: llc -mtriple=hexagon-unknown-linux-gnu < %s | FileCheck %s4; RUN: llc -mtriple=hexagon-unknown-linux-musl < %s | FileCheck %s5 6define half @exp10_f16(half %x) #0 {7; CHECK-LABEL: exp10_f16:8; CHECK: // %bb.0:9; CHECK-NEXT: {10; CHECK-NEXT: call __extendhfsf211; CHECK-NEXT: allocframe(r29,#0):raw12; CHECK-NEXT: }13; CHECK-NEXT: {14; CHECK-NEXT: call exp10f15; CHECK-NEXT: }16; CHECK-NEXT: {17; CHECK-NEXT: call __truncsfhf218; CHECK-NEXT: }19; CHECK-NEXT: {20; CHECK-NEXT: r31:30 = dealloc_return(r30):raw21; CHECK-NEXT: }22 %r = call half @llvm.exp10.f16(half %x)23 ret half %r24}25 26define <2 x half> @exp10_v2f16(<2 x half> %x) #0 {27; CHECK-LABEL: exp10_v2f16:28; CHECK: // %bb.0:29; CHECK-NEXT: {30; CHECK-NEXT: call __extendhfsf231; CHECK-NEXT: r16 = r132; CHECK-NEXT: memd(r29+#-16) = r17:1633; CHECK-NEXT: allocframe(#8)34; CHECK-NEXT: } // 8-byte Folded Spill35; CHECK-NEXT: {36; CHECK-NEXT: call exp10f37; CHECK-NEXT: }38; CHECK-NEXT: {39; CHECK-NEXT: call __truncsfhf240; CHECK-NEXT: }41; CHECK-NEXT: {42; CHECK-NEXT: call __extendhfsf243; CHECK-NEXT: r17 = r044; CHECK-NEXT: r0 = r1645; CHECK-NEXT: }46; CHECK-NEXT: {47; CHECK-NEXT: call exp10f48; CHECK-NEXT: }49; CHECK-NEXT: {50; CHECK-NEXT: call __truncsfhf251; CHECK-NEXT: }52; CHECK-NEXT: {53; CHECK-NEXT: r1 = zxth(r0)54; CHECK-NEXT: r2 = zxth(r17)55; CHECK-NEXT: r17:16 = memd(r29+#0)56; CHECK-NEXT: } // 8-byte Folded Reload57; CHECK-NEXT: {58; CHECK-NEXT: r0 = r259; CHECK-NEXT: dealloc_return60; CHECK-NEXT: }61 %r = call <2 x half> @llvm.exp10.v2f16(<2 x half> %x)62 ret <2 x half> %r63}64 65define float @exp10_f32(float %x) #0 {66; CHECK-LABEL: exp10_f32:67; CHECK: // %bb.0:68; CHECK-NEXT: {69; CHECK-NEXT: jump exp10f70; CHECK-NEXT: }71 %r = call float @llvm.exp10.f32(float %x)72 ret float %r73}74 75define <2 x float> @exp10_v2f32(<2 x float> %x) #0 {76; CHECK-LABEL: exp10_v2f32:77; CHECK: // %bb.0:78; CHECK-NEXT: {79; CHECK-NEXT: call exp10f80; CHECK-NEXT: r16 = r181; CHECK-NEXT: memd(r29+#-16) = r17:1682; CHECK-NEXT: allocframe(#8)83; CHECK-NEXT: } // 8-byte Folded Spill84; CHECK-NEXT: {85; CHECK-NEXT: call exp10f86; CHECK-NEXT: r17 = r087; CHECK-NEXT: r0 = r1688; CHECK-NEXT: }89; CHECK-NEXT: {90; CHECK-NEXT: r1:0 = combine(r0,r17)91; CHECK-NEXT: r17:16 = memd(r29+#0)92; CHECK-NEXT: dealloc_return93; CHECK-NEXT: } // 8-byte Folded Reload94 %r = call <2 x float> @llvm.exp10.v2f32(<2 x float> %x)95 ret <2 x float> %r96}97 98define double @exp10_f64(double %x) #0 {99; CHECK-LABEL: exp10_f64:100; CHECK: // %bb.0:101; CHECK-NEXT: {102; CHECK-NEXT: jump exp10103; CHECK-NEXT: }104 %r = call double @llvm.exp10.f64(double %x)105 ret double %r106}107 108define <2 x double> @exp10_v2f64(<2 x double> %x) #0 {109; CHECK-LABEL: exp10_v2f64:110; CHECK: // %bb.0:111; CHECK-NEXT: {112; CHECK-NEXT: r16 = r0113; CHECK-NEXT: r1:0 = combine(r3,r2)114; CHECK-NEXT: memd(r29+#-16) = r17:16115; CHECK-NEXT: allocframe(#24)116; CHECK-NEXT: } // 8-byte Folded Spill117; CHECK-NEXT: {118; CHECK-NEXT: call exp10119; CHECK-NEXT: r19:18 = combine(r5,r4)120; CHECK-NEXT: memd(r29+#8) = r19:18121; CHECK-NEXT: memd(r29+#0) = r21:20122; CHECK-NEXT: } // 8-byte Folded Spill123; CHECK-NEXT: {124; CHECK-NEXT: call exp10125; CHECK-NEXT: r21:20 = combine(r1,r0)126; CHECK-NEXT: r1:0 = combine(r19,r18)127; CHECK-NEXT: }128; CHECK-NEXT: {129; CHECK-NEXT: memd(r16+#8) = r1:0130; CHECK-NEXT: memd(r16+#0) = r21:20131; CHECK-NEXT: }132; CHECK-NEXT: {133; CHECK-NEXT: r17:16 = memd(r29+#16)134; CHECK-NEXT: r19:18 = memd(r29+#8)135; CHECK-NEXT: } // 8-byte Folded Reload136; CHECK-NEXT: {137; CHECK-NEXT: r21:20 = memd(r29+#0)138; CHECK-NEXT: dealloc_return139; CHECK-NEXT: } // 8-byte Folded Reload140 %r = call <2 x double> @llvm.exp10.v2f64(<2 x double> %x)141 ret <2 x double> %r142}143 144define fp128 @exp10_f128(fp128 %x) #0 {145; CHECK-LABEL: exp10_f128:146; CHECK: // %bb.0:147; CHECK-NEXT: {148; CHECK-NEXT: r16 = r0149; CHECK-NEXT: memd(r29+#-16) = r17:16150; CHECK-NEXT: allocframe(#24)151; CHECK-NEXT: } // 8-byte Folded Spill152; CHECK-NEXT: {153; CHECK-NEXT: call exp10l154; CHECK-NEXT: r0 = add(r29,#0)155; CHECK-NEXT: }156; CHECK-NEXT: {157; CHECK-NEXT: r1:0 = memd(r29+#0)158; CHECK-NEXT: r3:2 = memd(r29+#8)159; CHECK-NEXT: }160; CHECK-NEXT: {161; CHECK-NEXT: memd(r16+#8) = r3:2162; CHECK-NEXT: memd(r16+#0) = r1:0163; CHECK-NEXT: }164; CHECK-NEXT: {165; CHECK-NEXT: r17:16 = memd(r29+#16)166; CHECK-NEXT: dealloc_return167; CHECK-NEXT: } // 8-byte Folded Reload168 %r = call fp128 @llvm.exp10.f128(fp128 %x)169 ret fp128 %r170}171 172define <2 x fp128> @exp10_v2f128(<2 x fp128> %x) #0 {173; CHECK-LABEL: exp10_v2f128:174; CHECK: // %bb.0:175; CHECK-NEXT: {176; CHECK-NEXT: r16 = r0177; CHECK-NEXT: memd(r29+#-16) = r17:16178; CHECK-NEXT: allocframe(#56)179; CHECK-NEXT: } // 8-byte Folded Spill180; CHECK-NEXT: {181; CHECK-NEXT: r0 = add(r29,#16)182; CHECK-NEXT: memd(r29+#40) = r19:18183; CHECK-NEXT: memd(r29+#32) = r21:20184; CHECK-NEXT: } // 8-byte Folded Spill185; CHECK-NEXT: {186; CHECK-NEXT: call exp10l187; CHECK-NEXT: r19:18 = memd(r29+#64)188; CHECK-NEXT: r21:20 = memd(r29+#72)189; CHECK-NEXT: }190; CHECK-NEXT: {191; CHECK-NEXT: call exp10l192; CHECK-NEXT: r0 = add(r29,#0)193; CHECK-NEXT: r3:2 = combine(r19,r18)194; CHECK-NEXT: r5:4 = combine(r21,r20)195; CHECK-NEXT: }196; CHECK-NEXT: {197; CHECK-NEXT: r1:0 = memd(r29+#16)198; CHECK-NEXT: r3:2 = memd(r29+#24)199; CHECK-NEXT: }200; CHECK-NEXT: {201; CHECK-NEXT: r5:4 = memd(r29+#0)202; CHECK-NEXT: r7:6 = memd(r29+#8)203; CHECK-NEXT: }204; CHECK-NEXT: {205; CHECK-NEXT: memd(r16+#24) = r7:6206; CHECK-NEXT: memd(r16+#16) = r5:4207; CHECK-NEXT: }208; CHECK-NEXT: {209; CHECK-NEXT: memd(r16+#8) = r3:2210; CHECK-NEXT: memd(r16+#0) = r1:0211; CHECK-NEXT: }212; CHECK-NEXT: {213; CHECK-NEXT: r17:16 = memd(r29+#48)214; CHECK-NEXT: r19:18 = memd(r29+#40)215; CHECK-NEXT: } // 8-byte Folded Reload216; CHECK-NEXT: {217; CHECK-NEXT: r21:20 = memd(r29+#32)218; CHECK-NEXT: dealloc_return219; CHECK-NEXT: } // 8-byte Folded Reload220 %r = call <2 x fp128> @llvm.exp10.v2f128(<2 x fp128> %x)221 ret <2 x fp128> %r222}223 224attributes #0 = { nounwind }225