@@ -39,6 +39,29 @@ entry:
3939 ret half %c
4040}
4141
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+
4265define <2 x double > @frem_v2f64 (<2 x double > %a , <2 x double > %b ) {
4366; CHECK-SD-LABEL: frem_v2f64:
4467; CHECK-SD: // %bb.0: // %entry
@@ -1577,3 +1600,44 @@ entry:
15771600 %c = frem <16 x half > %a , %b
15781601 ret <16 x half > %c
15791602}
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