@@ -36,16 +36,26 @@ entry:
36
36
ret half %c
37
37
}
38
38
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 ) {
40
49
; CHECK-LABEL: exp_v1f64:
41
- ; CHECK: // %bb.0:
50
+ ; CHECK: // %bb.0: // %entry
42
51
; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
43
52
; CHECK-NEXT: .cfi_def_cfa_offset 16
44
53
; CHECK-NEXT: .cfi_offset w30, -16
45
54
; CHECK-NEXT: bl exp
46
55
; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
47
56
; 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 )
49
59
ret <1 x double > %c
50
60
}
51
61
@@ -1273,6 +1283,28 @@ entry:
1273
1283
ret <16 x half > %c
1274
1284
}
1275
1285
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
+
1276
1308
define double @exp2_f64 (double %a ) {
1277
1309
; CHECK-LABEL: exp2_f64:
1278
1310
; CHECK: // %bb.0: // %entry
@@ -1307,16 +1339,26 @@ entry:
1307
1339
ret half %c
1308
1340
}
1309
1341
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 ) {
1311
1352
; CHECK-LABEL: exp2_v1f64:
1312
- ; CHECK: // %bb.0:
1353
+ ; CHECK: // %bb.0: // %entry
1313
1354
; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1314
1355
; CHECK-NEXT: .cfi_def_cfa_offset 16
1315
1356
; CHECK-NEXT: .cfi_offset w30, -16
1316
1357
; CHECK-NEXT: bl exp2
1317
1358
; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1318
1359
; 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 )
1320
1362
ret <1 x double > %c
1321
1363
}
1322
1364
@@ -2544,6 +2586,28 @@ entry:
2544
2586
ret <16 x half > %c
2545
2587
}
2546
2588
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
+
2547
2611
define double @log_f64 (double %a ) {
2548
2612
; CHECK-LABEL: log_f64:
2549
2613
; CHECK: // %bb.0: // %entry
@@ -2578,16 +2642,26 @@ entry:
2578
2642
ret half %c
2579
2643
}
2580
2644
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 ) {
2582
2655
; CHECK-LABEL: log_v1f64:
2583
- ; CHECK: // %bb.0:
2656
+ ; CHECK: // %bb.0: // %entry
2584
2657
; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2585
2658
; CHECK-NEXT: .cfi_def_cfa_offset 16
2586
2659
; CHECK-NEXT: .cfi_offset w30, -16
2587
2660
; CHECK-NEXT: bl log
2588
2661
; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2589
2662
; 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 )
2591
2665
ret <1 x double > %c
2592
2666
}
2593
2667
@@ -3815,6 +3889,28 @@ entry:
3815
3889
ret <16 x half > %c
3816
3890
}
3817
3891
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
+
3818
3914
define double @log2_f64 (double %a ) {
3819
3915
; CHECK-LABEL: log2_f64:
3820
3916
; CHECK: // %bb.0: // %entry
@@ -3849,16 +3945,26 @@ entry:
3849
3945
ret half %c
3850
3946
}
3851
3947
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 ) {
3853
3958
; CHECK-LABEL: log2_v1f64:
3854
- ; CHECK: // %bb.0:
3959
+ ; CHECK: // %bb.0: // %entry
3855
3960
; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3856
3961
; CHECK-NEXT: .cfi_def_cfa_offset 16
3857
3962
; CHECK-NEXT: .cfi_offset w30, -16
3858
3963
; CHECK-NEXT: bl log2
3859
3964
; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3860
3965
; 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 )
3862
3968
ret <1 x double > %c
3863
3969
}
3864
3970
@@ -5086,6 +5192,28 @@ entry:
5086
5192
ret <16 x half > %c
5087
5193
}
5088
5194
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
+
5089
5217
define double @log10_f64 (double %a ) {
5090
5218
; CHECK-LABEL: log10_f64:
5091
5219
; CHECK: // %bb.0: // %entry
@@ -5120,16 +5248,26 @@ entry:
5120
5248
ret half %c
5121
5249
}
5122
5250
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 ) {
5124
5261
; CHECK-LABEL: log10_v1f64:
5125
- ; CHECK: // %bb.0:
5262
+ ; CHECK: // %bb.0: // %entry
5126
5263
; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5127
5264
; CHECK-NEXT: .cfi_def_cfa_offset 16
5128
5265
; CHECK-NEXT: .cfi_offset w30, -16
5129
5266
; CHECK-NEXT: bl log10
5130
5267
; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5131
5268
; 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 )
5133
5271
ret <1 x double > %c
5134
5272
}
5135
5273
@@ -6357,6 +6495,33 @@ entry:
6357
6495
ret <16 x half > %c
6358
6496
}
6359
6497
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 >)
6360
6525
declare <16 x half > @llvm.exp.v16f16 (<16 x half >)
6361
6526
declare <16 x half > @llvm.exp2.v16f16 (<16 x half >)
6362
6527
declare <16 x half > @llvm.log.v16f16 (<16 x half >)
@@ -6372,6 +6537,11 @@ declare <2 x float> @llvm.exp2.v2f32(<2 x float>)
6372
6537
declare <2 x float > @llvm.log.v2f32 (<2 x float >)
6373
6538
declare <2 x float > @llvm.log10.v2f32 (<2 x float >)
6374
6539
declare <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 >)
6375
6545
declare <3 x double > @llvm.exp.v3f64 (<3 x double >)
6376
6546
declare <3 x double > @llvm.exp2.v3f64 (<3 x double >)
6377
6547
declare <3 x double > @llvm.log.v3f64 (<3 x double >)
@@ -6422,6 +6592,11 @@ declare float @llvm.exp2.f32(float)
6422
6592
declare float @llvm.log.f32 (float )
6423
6593
declare float @llvm.log10.f32 (float )
6424
6594
declare 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 )
6425
6600
declare half @llvm.exp.f16 (half )
6426
6601
declare half @llvm.exp2.f16 (half )
6427
6602
declare half @llvm.log.f16 (half )
0 commit comments