@@ -36,16 +36,26 @@ entry:
3636 ret half %c
3737}
3838
39- define <1 x double > @exp_v1f64 (<1 x double > %x ) {
39+ define fp128 @exp_fp128 (fp128 %a ) {
40+ ; CHECK-LABEL: exp_fp128:
41+ ; CHECK: // %bb.0: // %entry
42+ ; CHECK-NEXT: b expl
43+ entry:
44+ %c = call fp128 @llvm.exp.fp128 (fp128 %a )
45+ ret fp128 %c
46+ }
47+
48+ define <1 x double > @exp_v1f64 (<1 x double > %a ) {
4049; CHECK-LABEL: exp_v1f64:
41- ; CHECK: // %bb.0:
50+ ; CHECK: // %bb.0: // %entry
4251; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
4352; CHECK-NEXT: .cfi_def_cfa_offset 16
4453; CHECK-NEXT: .cfi_offset w30, -16
4554; CHECK-NEXT: bl exp
4655; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
4756; CHECK-NEXT: ret
48- %c = call <1 x double > @llvm.exp.v1f64 (<1 x double > %x )
57+ entry:
58+ %c = call <1 x double > @llvm.exp.v1f64 (<1 x double > %a )
4959 ret <1 x double > %c
5060}
5161
@@ -1273,6 +1283,28 @@ entry:
12731283 ret <16 x half > %c
12741284}
12751285
1286+ define <2 x fp128 > @exp_v2fp128 (<2 x fp128 > %a ) {
1287+ ; CHECK-LABEL: exp_v2fp128:
1288+ ; CHECK: // %bb.0: // %entry
1289+ ; CHECK-NEXT: sub sp, sp, #48
1290+ ; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill
1291+ ; CHECK-NEXT: .cfi_def_cfa_offset 48
1292+ ; CHECK-NEXT: .cfi_offset w30, -16
1293+ ; CHECK-NEXT: str q1, [sp, #16] // 16-byte Folded Spill
1294+ ; CHECK-NEXT: bl expl
1295+ ; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill
1296+ ; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload
1297+ ; CHECK-NEXT: bl expl
1298+ ; CHECK-NEXT: mov v1.16b, v0.16b
1299+ ; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload
1300+ ; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload
1301+ ; CHECK-NEXT: add sp, sp, #48
1302+ ; CHECK-NEXT: ret
1303+ entry:
1304+ %c = call <2 x fp128 > @llvm.exp.v2fp128 (<2 x fp128 > %a )
1305+ ret <2 x fp128 > %c
1306+ }
1307+
12761308define double @exp2_f64 (double %a ) {
12771309; CHECK-LABEL: exp2_f64:
12781310; CHECK: // %bb.0: // %entry
@@ -1307,16 +1339,26 @@ entry:
13071339 ret half %c
13081340}
13091341
1310- define <1 x double > @exp2_v1f64 (<1 x double > %x ) {
1342+ define fp128 @exp2_fp128 (fp128 %a ) {
1343+ ; CHECK-LABEL: exp2_fp128:
1344+ ; CHECK: // %bb.0: // %entry
1345+ ; CHECK-NEXT: b exp2l
1346+ entry:
1347+ %c = call fp128 @llvm.exp2.fp128 (fp128 %a )
1348+ ret fp128 %c
1349+ }
1350+
1351+ define <1 x double > @exp2_v1f64 (<1 x double > %a ) {
13111352; CHECK-LABEL: exp2_v1f64:
1312- ; CHECK: // %bb.0:
1353+ ; CHECK: // %bb.0: // %entry
13131354; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
13141355; CHECK-NEXT: .cfi_def_cfa_offset 16
13151356; CHECK-NEXT: .cfi_offset w30, -16
13161357; CHECK-NEXT: bl exp2
13171358; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
13181359; CHECK-NEXT: ret
1319- %c = call <1 x double > @llvm.exp2.v1f64 (<1 x double > %x )
1360+ entry:
1361+ %c = call <1 x double > @llvm.exp2.v1f64 (<1 x double > %a )
13201362 ret <1 x double > %c
13211363}
13221364
@@ -2544,6 +2586,28 @@ entry:
25442586 ret <16 x half > %c
25452587}
25462588
2589+ define <2 x fp128 > @exp2_v2fp128 (<2 x fp128 > %a ) {
2590+ ; CHECK-LABEL: exp2_v2fp128:
2591+ ; CHECK: // %bb.0: // %entry
2592+ ; CHECK-NEXT: sub sp, sp, #48
2593+ ; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill
2594+ ; CHECK-NEXT: .cfi_def_cfa_offset 48
2595+ ; CHECK-NEXT: .cfi_offset w30, -16
2596+ ; CHECK-NEXT: str q1, [sp, #16] // 16-byte Folded Spill
2597+ ; CHECK-NEXT: bl exp2l
2598+ ; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill
2599+ ; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload
2600+ ; CHECK-NEXT: bl exp2l
2601+ ; CHECK-NEXT: mov v1.16b, v0.16b
2602+ ; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload
2603+ ; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload
2604+ ; CHECK-NEXT: add sp, sp, #48
2605+ ; CHECK-NEXT: ret
2606+ entry:
2607+ %c = call <2 x fp128 > @llvm.exp2.v2fp128 (<2 x fp128 > %a )
2608+ ret <2 x fp128 > %c
2609+ }
2610+
25472611define double @log_f64 (double %a ) {
25482612; CHECK-LABEL: log_f64:
25492613; CHECK: // %bb.0: // %entry
@@ -2578,16 +2642,26 @@ entry:
25782642 ret half %c
25792643}
25802644
2581- define <1 x double > @log_v1f64 (<1 x double > %x ) {
2645+ define fp128 @log_fp128 (fp128 %a ) {
2646+ ; CHECK-LABEL: log_fp128:
2647+ ; CHECK: // %bb.0: // %entry
2648+ ; CHECK-NEXT: b logl
2649+ entry:
2650+ %c = call fp128 @llvm.log.fp128 (fp128 %a )
2651+ ret fp128 %c
2652+ }
2653+
2654+ define <1 x double > @log_v1f64 (<1 x double > %a ) {
25822655; CHECK-LABEL: log_v1f64:
2583- ; CHECK: // %bb.0:
2656+ ; CHECK: // %bb.0: // %entry
25842657; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
25852658; CHECK-NEXT: .cfi_def_cfa_offset 16
25862659; CHECK-NEXT: .cfi_offset w30, -16
25872660; CHECK-NEXT: bl log
25882661; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
25892662; CHECK-NEXT: ret
2590- %c = call <1 x double > @llvm.log.v1f64 (<1 x double > %x )
2663+ entry:
2664+ %c = call <1 x double > @llvm.log.v1f64 (<1 x double > %a )
25912665 ret <1 x double > %c
25922666}
25932667
@@ -3815,6 +3889,28 @@ entry:
38153889 ret <16 x half > %c
38163890}
38173891
3892+ define <2 x fp128 > @log_v2fp128 (<2 x fp128 > %a ) {
3893+ ; CHECK-LABEL: log_v2fp128:
3894+ ; CHECK: // %bb.0: // %entry
3895+ ; CHECK-NEXT: sub sp, sp, #48
3896+ ; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill
3897+ ; CHECK-NEXT: .cfi_def_cfa_offset 48
3898+ ; CHECK-NEXT: .cfi_offset w30, -16
3899+ ; CHECK-NEXT: str q1, [sp, #16] // 16-byte Folded Spill
3900+ ; CHECK-NEXT: bl logl
3901+ ; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill
3902+ ; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload
3903+ ; CHECK-NEXT: bl logl
3904+ ; CHECK-NEXT: mov v1.16b, v0.16b
3905+ ; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload
3906+ ; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload
3907+ ; CHECK-NEXT: add sp, sp, #48
3908+ ; CHECK-NEXT: ret
3909+ entry:
3910+ %c = call <2 x fp128 > @llvm.log.v2fp128 (<2 x fp128 > %a )
3911+ ret <2 x fp128 > %c
3912+ }
3913+
38183914define double @log2_f64 (double %a ) {
38193915; CHECK-LABEL: log2_f64:
38203916; CHECK: // %bb.0: // %entry
@@ -3849,16 +3945,26 @@ entry:
38493945 ret half %c
38503946}
38513947
3852- define <1 x double > @log2_v1f64 (<1 x double > %x ) {
3948+ define fp128 @log2_fp128 (fp128 %a ) {
3949+ ; CHECK-LABEL: log2_fp128:
3950+ ; CHECK: // %bb.0: // %entry
3951+ ; CHECK-NEXT: b log2l
3952+ entry:
3953+ %c = call fp128 @llvm.log2.fp128 (fp128 %a )
3954+ ret fp128 %c
3955+ }
3956+
3957+ define <1 x double > @log2_v1f64 (<1 x double > %a ) {
38533958; CHECK-LABEL: log2_v1f64:
3854- ; CHECK: // %bb.0:
3959+ ; CHECK: // %bb.0: // %entry
38553960; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
38563961; CHECK-NEXT: .cfi_def_cfa_offset 16
38573962; CHECK-NEXT: .cfi_offset w30, -16
38583963; CHECK-NEXT: bl log2
38593964; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
38603965; CHECK-NEXT: ret
3861- %c = call <1 x double > @llvm.log2.v1f64 (<1 x double > %x )
3966+ entry:
3967+ %c = call <1 x double > @llvm.log2.v1f64 (<1 x double > %a )
38623968 ret <1 x double > %c
38633969}
38643970
@@ -5086,6 +5192,28 @@ entry:
50865192 ret <16 x half > %c
50875193}
50885194
5195+ define <2 x fp128 > @log2_v2fp128 (<2 x fp128 > %a ) {
5196+ ; CHECK-LABEL: log2_v2fp128:
5197+ ; CHECK: // %bb.0: // %entry
5198+ ; CHECK-NEXT: sub sp, sp, #48
5199+ ; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill
5200+ ; CHECK-NEXT: .cfi_def_cfa_offset 48
5201+ ; CHECK-NEXT: .cfi_offset w30, -16
5202+ ; CHECK-NEXT: str q1, [sp, #16] // 16-byte Folded Spill
5203+ ; CHECK-NEXT: bl log2l
5204+ ; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill
5205+ ; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload
5206+ ; CHECK-NEXT: bl log2l
5207+ ; CHECK-NEXT: mov v1.16b, v0.16b
5208+ ; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload
5209+ ; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload
5210+ ; CHECK-NEXT: add sp, sp, #48
5211+ ; CHECK-NEXT: ret
5212+ entry:
5213+ %c = call <2 x fp128 > @llvm.log2.v2fp128 (<2 x fp128 > %a )
5214+ ret <2 x fp128 > %c
5215+ }
5216+
50895217define double @log10_f64 (double %a ) {
50905218; CHECK-LABEL: log10_f64:
50915219; CHECK: // %bb.0: // %entry
@@ -5120,16 +5248,26 @@ entry:
51205248 ret half %c
51215249}
51225250
5123- define <1 x double > @log10_v1f64 (<1 x double > %x ) {
5251+ define fp128 @log10_fp128 (fp128 %a ) {
5252+ ; CHECK-LABEL: log10_fp128:
5253+ ; CHECK: // %bb.0: // %entry
5254+ ; CHECK-NEXT: b log10l
5255+ entry:
5256+ %c = call fp128 @llvm.log10.fp128 (fp128 %a )
5257+ ret fp128 %c
5258+ }
5259+
5260+ define <1 x double > @log10_v1f64 (<1 x double > %a ) {
51245261; CHECK-LABEL: log10_v1f64:
5125- ; CHECK: // %bb.0:
5262+ ; CHECK: // %bb.0: // %entry
51265263; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
51275264; CHECK-NEXT: .cfi_def_cfa_offset 16
51285265; CHECK-NEXT: .cfi_offset w30, -16
51295266; CHECK-NEXT: bl log10
51305267; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
51315268; CHECK-NEXT: ret
5132- %c = call <1 x double > @llvm.log10.v1f64 (<1 x double > %x )
5269+ entry:
5270+ %c = call <1 x double > @llvm.log10.v1f64 (<1 x double > %a )
51335271 ret <1 x double > %c
51345272}
51355273
@@ -6357,6 +6495,33 @@ entry:
63576495 ret <16 x half > %c
63586496}
63596497
6498+ define <2 x fp128 > @log10_v2fp128 (<2 x fp128 > %a ) {
6499+ ; CHECK-LABEL: log10_v2fp128:
6500+ ; CHECK: // %bb.0: // %entry
6501+ ; CHECK-NEXT: sub sp, sp, #48
6502+ ; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill
6503+ ; CHECK-NEXT: .cfi_def_cfa_offset 48
6504+ ; CHECK-NEXT: .cfi_offset w30, -16
6505+ ; CHECK-NEXT: str q1, [sp, #16] // 16-byte Folded Spill
6506+ ; CHECK-NEXT: bl log10l
6507+ ; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill
6508+ ; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload
6509+ ; CHECK-NEXT: bl log10l
6510+ ; CHECK-NEXT: mov v1.16b, v0.16b
6511+ ; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload
6512+ ; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload
6513+ ; CHECK-NEXT: add sp, sp, #48
6514+ ; CHECK-NEXT: ret
6515+ entry:
6516+ %c = call <2 x fp128 > @llvm.log10.v2fp128 (<2 x fp128 > %a )
6517+ ret <2 x fp128 > %c
6518+ }
6519+
6520+ declare <1 x double > @llvm.exp.v1f64 (<1 x double >)
6521+ declare <1 x double > @llvm.exp2.v1f64 (<1 x double >)
6522+ declare <1 x double > @llvm.log.v1f64 (<1 x double >)
6523+ declare <1 x double > @llvm.log10.v1f64 (<1 x double >)
6524+ declare <1 x double > @llvm.log2.v1f64 (<1 x double >)
63606525declare <16 x half > @llvm.exp.v16f16 (<16 x half >)
63616526declare <16 x half > @llvm.exp2.v16f16 (<16 x half >)
63626527declare <16 x half > @llvm.log.v16f16 (<16 x half >)
@@ -6372,6 +6537,11 @@ declare <2 x float> @llvm.exp2.v2f32(<2 x float>)
63726537declare <2 x float > @llvm.log.v2f32 (<2 x float >)
63736538declare <2 x float > @llvm.log10.v2f32 (<2 x float >)
63746539declare <2 x float > @llvm.log2.v2f32 (<2 x float >)
6540+ declare <2 x fp128 > @llvm.exp.v2fp128 (<2 x fp128 >)
6541+ declare <2 x fp128 > @llvm.exp2.v2fp128 (<2 x fp128 >)
6542+ declare <2 x fp128 > @llvm.log.v2fp128 (<2 x fp128 >)
6543+ declare <2 x fp128 > @llvm.log10.v2fp128 (<2 x fp128 >)
6544+ declare <2 x fp128 > @llvm.log2.v2fp128 (<2 x fp128 >)
63756545declare <3 x double > @llvm.exp.v3f64 (<3 x double >)
63766546declare <3 x double > @llvm.exp2.v3f64 (<3 x double >)
63776547declare <3 x double > @llvm.log.v3f64 (<3 x double >)
@@ -6422,6 +6592,11 @@ declare float @llvm.exp2.f32(float)
64226592declare float @llvm.log.f32 (float )
64236593declare float @llvm.log10.f32 (float )
64246594declare float @llvm.log2.f32 (float )
6595+ declare fp128 @llvm.exp.fp128 (fp128 )
6596+ declare fp128 @llvm.exp2.fp128 (fp128 )
6597+ declare fp128 @llvm.log.fp128 (fp128 )
6598+ declare fp128 @llvm.log10.fp128 (fp128 )
6599+ declare fp128 @llvm.log2.fp128 (fp128 )
64256600declare half @llvm.exp.f16 (half )
64266601declare half @llvm.exp2.f16 (half )
64276602declare half @llvm.log.f16 (half )
0 commit comments