@@ -39,6 +39,29 @@ entry:
39
39
ret half %c
40
40
}
41
41
42
+ define fp128 @frem_fp128 (fp128 %a , fp128 %b ) {
43
+ ; CHECK-LABEL: frem_fp128:
44
+ ; CHECK: // %bb.0: // %entry
45
+ ; CHECK-NEXT: b fmodl
46
+ entry:
47
+ %c = frem fp128 %a , %b
48
+ ret fp128 %c
49
+ }
50
+
51
+ define <1 x double > @frem_v1f64 (<1 x double > %a , <1 x double > %b ) {
52
+ ; CHECK-LABEL: frem_v1f64:
53
+ ; CHECK: // %bb.0: // %entry
54
+ ; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
55
+ ; CHECK-NEXT: .cfi_def_cfa_offset 16
56
+ ; CHECK-NEXT: .cfi_offset w30, -16
57
+ ; CHECK-NEXT: bl fmod
58
+ ; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
59
+ ; CHECK-NEXT: ret
60
+ entry:
61
+ %c = frem <1 x double > %a , %b
62
+ ret <1 x double > %c
63
+ }
64
+
42
65
define <2 x double > @frem_v2f64 (<2 x double > %a , <2 x double > %b ) {
43
66
; CHECK-SD-LABEL: frem_v2f64:
44
67
; CHECK-SD: // %bb.0: // %entry
@@ -1577,3 +1600,44 @@ entry:
1577
1600
%c = frem <16 x half > %a , %b
1578
1601
ret <16 x half > %c
1579
1602
}
1603
+
1604
+ define <2 x fp128 > @frem_v2fp128 (<2 x fp128 > %a , <2 x fp128 > %b ) {
1605
+ ; CHECK-SD-LABEL: frem_v2fp128:
1606
+ ; CHECK-SD: // %bb.0: // %entry
1607
+ ; CHECK-SD-NEXT: sub sp, sp, #64
1608
+ ; CHECK-SD-NEXT: str x30, [sp, #48] // 8-byte Folded Spill
1609
+ ; CHECK-SD-NEXT: .cfi_def_cfa_offset 64
1610
+ ; CHECK-SD-NEXT: .cfi_offset w30, -16
1611
+ ; CHECK-SD-NEXT: stp q1, q3, [sp, #16] // 32-byte Folded Spill
1612
+ ; CHECK-SD-NEXT: mov v1.16b, v2.16b
1613
+ ; CHECK-SD-NEXT: bl fmodl
1614
+ ; CHECK-SD-NEXT: str q0, [sp] // 16-byte Folded Spill
1615
+ ; CHECK-SD-NEXT: ldp q0, q1, [sp, #16] // 32-byte Folded Reload
1616
+ ; CHECK-SD-NEXT: bl fmodl
1617
+ ; CHECK-SD-NEXT: mov v1.16b, v0.16b
1618
+ ; CHECK-SD-NEXT: ldr q0, [sp] // 16-byte Folded Reload
1619
+ ; CHECK-SD-NEXT: ldr x30, [sp, #48] // 8-byte Folded Reload
1620
+ ; CHECK-SD-NEXT: add sp, sp, #64
1621
+ ; CHECK-SD-NEXT: ret
1622
+ ;
1623
+ ; CHECK-GI-LABEL: frem_v2fp128:
1624
+ ; CHECK-GI: // %bb.0: // %entry
1625
+ ; CHECK-GI-NEXT: sub sp, sp, #64
1626
+ ; CHECK-GI-NEXT: str x30, [sp, #48] // 8-byte Folded Spill
1627
+ ; CHECK-GI-NEXT: .cfi_def_cfa_offset 64
1628
+ ; CHECK-GI-NEXT: .cfi_offset w30, -16
1629
+ ; CHECK-GI-NEXT: stp q3, q1, [sp, #16] // 32-byte Folded Spill
1630
+ ; CHECK-GI-NEXT: mov v1.16b, v2.16b
1631
+ ; CHECK-GI-NEXT: bl fmodl
1632
+ ; CHECK-GI-NEXT: str q0, [sp] // 16-byte Folded Spill
1633
+ ; CHECK-GI-NEXT: ldp q1, q0, [sp, #16] // 32-byte Folded Reload
1634
+ ; CHECK-GI-NEXT: bl fmodl
1635
+ ; CHECK-GI-NEXT: mov v1.16b, v0.16b
1636
+ ; CHECK-GI-NEXT: ldr q0, [sp] // 16-byte Folded Reload
1637
+ ; CHECK-GI-NEXT: ldr x30, [sp, #48] // 8-byte Folded Reload
1638
+ ; CHECK-GI-NEXT: add sp, sp, #64
1639
+ ; CHECK-GI-NEXT: ret
1640
+ entry:
1641
+ %c = frem <2 x fp128 > %a , %b
1642
+ ret <2 x fp128 > %c
1643
+ }
0 commit comments