|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
2 | 2 | ; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \ |
3 | | -; RUN: -target-abi=lp64 | FileCheck %s -check-prefix=RV64I |
| 3 | +; RUN: -target-abi=lp64 | FileCheck %s -check-prefixes=CHECK,RV64I |
4 | 4 | ; RUN: llc -mtriple=riscv64 -mattr=+d -verify-machineinstrs < %s \ |
5 | | -; RUN: -target-abi=lp64d | FileCheck %s -check-prefix=RV64ID |
| 5 | +; RUN: -target-abi=lp64d | FileCheck %s -check-prefixes=CHECK,RV64ID |
6 | 6 | ; RUN: llc -mtriple=riscv64 -mattr=+zdinx -verify-machineinstrs < %s \ |
7 | | -; RUN: -target-abi=lp64 | FileCheck %s -check-prefix=RV64IDINX |
| 7 | +; RUN: -target-abi=lp64 | FileCheck %s -check-prefixes=CHECK,RV64IDINX |
8 | 8 |
|
9 | 9 | define i128 @fptosi_f64_to_i128(double %a) nounwind { |
10 | | -; RV64I-LABEL: fptosi_f64_to_i128: |
11 | | -; RV64I: # %bb.0: |
12 | | -; RV64I-NEXT: addi sp, sp, -16 |
13 | | -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill |
14 | | -; RV64I-NEXT: call __fixdfti |
15 | | -; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload |
16 | | -; RV64I-NEXT: addi sp, sp, 16 |
17 | | -; RV64I-NEXT: ret |
18 | | -; |
19 | | -; RV64ID-LABEL: fptosi_f64_to_i128: |
20 | | -; RV64ID: # %bb.0: |
21 | | -; RV64ID-NEXT: addi sp, sp, -16 |
22 | | -; RV64ID-NEXT: sd ra, 8(sp) # 8-byte Folded Spill |
23 | | -; RV64ID-NEXT: call __fixdfti |
24 | | -; RV64ID-NEXT: ld ra, 8(sp) # 8-byte Folded Reload |
25 | | -; RV64ID-NEXT: addi sp, sp, 16 |
26 | | -; RV64ID-NEXT: ret |
27 | | -; |
28 | | -; RV64IDINX-LABEL: fptosi_f64_to_i128: |
29 | | -; RV64IDINX: # %bb.0: |
30 | | -; RV64IDINX-NEXT: addi sp, sp, -16 |
31 | | -; RV64IDINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill |
32 | | -; RV64IDINX-NEXT: call __fixdfti |
33 | | -; RV64IDINX-NEXT: ld ra, 8(sp) # 8-byte Folded Reload |
34 | | -; RV64IDINX-NEXT: addi sp, sp, 16 |
35 | | -; RV64IDINX-NEXT: ret |
| 10 | +; CHECK-LABEL: fptosi_f64_to_i128: |
| 11 | +; CHECK: # %bb.0: |
| 12 | +; CHECK-NEXT: addi sp, sp, -16 |
| 13 | +; CHECK-NEXT: sd ra, 8(sp) # 8-byte Folded Spill |
| 14 | +; CHECK-NEXT: call __fixdfti |
| 15 | +; CHECK-NEXT: ld ra, 8(sp) # 8-byte Folded Reload |
| 16 | +; CHECK-NEXT: addi sp, sp, 16 |
| 17 | +; CHECK-NEXT: ret |
36 | 18 | %1 = fptosi double %a to i128 |
37 | 19 | ret i128 %1 |
38 | 20 | } |
39 | 21 |
|
40 | 22 | define i128 @fptoui_f64_to_i128(double %a) nounwind { |
41 | | -; RV64I-LABEL: fptoui_f64_to_i128: |
42 | | -; RV64I: # %bb.0: |
43 | | -; RV64I-NEXT: addi sp, sp, -16 |
44 | | -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill |
45 | | -; RV64I-NEXT: call __fixunsdfti |
46 | | -; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload |
47 | | -; RV64I-NEXT: addi sp, sp, 16 |
48 | | -; RV64I-NEXT: ret |
49 | | -; |
50 | | -; RV64ID-LABEL: fptoui_f64_to_i128: |
51 | | -; RV64ID: # %bb.0: |
52 | | -; RV64ID-NEXT: addi sp, sp, -16 |
53 | | -; RV64ID-NEXT: sd ra, 8(sp) # 8-byte Folded Spill |
54 | | -; RV64ID-NEXT: call __fixunsdfti |
55 | | -; RV64ID-NEXT: ld ra, 8(sp) # 8-byte Folded Reload |
56 | | -; RV64ID-NEXT: addi sp, sp, 16 |
57 | | -; RV64ID-NEXT: ret |
58 | | -; |
59 | | -; RV64IDINX-LABEL: fptoui_f64_to_i128: |
60 | | -; RV64IDINX: # %bb.0: |
61 | | -; RV64IDINX-NEXT: addi sp, sp, -16 |
62 | | -; RV64IDINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill |
63 | | -; RV64IDINX-NEXT: call __fixunsdfti |
64 | | -; RV64IDINX-NEXT: ld ra, 8(sp) # 8-byte Folded Reload |
65 | | -; RV64IDINX-NEXT: addi sp, sp, 16 |
66 | | -; RV64IDINX-NEXT: ret |
| 23 | +; CHECK-LABEL: fptoui_f64_to_i128: |
| 24 | +; CHECK: # %bb.0: |
| 25 | +; CHECK-NEXT: addi sp, sp, -16 |
| 26 | +; CHECK-NEXT: sd ra, 8(sp) # 8-byte Folded Spill |
| 27 | +; CHECK-NEXT: call __fixunsdfti |
| 28 | +; CHECK-NEXT: ld ra, 8(sp) # 8-byte Folded Reload |
| 29 | +; CHECK-NEXT: addi sp, sp, 16 |
| 30 | +; CHECK-NEXT: ret |
67 | 31 | %1 = fptoui double %a to i128 |
68 | 32 | ret i128 %1 |
69 | 33 | } |
70 | 34 |
|
71 | 35 | define double @sitofp_i128_to_f64(i128 %a) nounwind { |
72 | | -; RV64I-LABEL: sitofp_i128_to_f64: |
73 | | -; RV64I: # %bb.0: |
74 | | -; RV64I-NEXT: addi sp, sp, -16 |
75 | | -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill |
76 | | -; RV64I-NEXT: call __floattidf |
77 | | -; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload |
78 | | -; RV64I-NEXT: addi sp, sp, 16 |
79 | | -; RV64I-NEXT: ret |
80 | | -; |
81 | | -; RV64ID-LABEL: sitofp_i128_to_f64: |
82 | | -; RV64ID: # %bb.0: |
83 | | -; RV64ID-NEXT: addi sp, sp, -16 |
84 | | -; RV64ID-NEXT: sd ra, 8(sp) # 8-byte Folded Spill |
85 | | -; RV64ID-NEXT: call __floattidf |
86 | | -; RV64ID-NEXT: ld ra, 8(sp) # 8-byte Folded Reload |
87 | | -; RV64ID-NEXT: addi sp, sp, 16 |
88 | | -; RV64ID-NEXT: ret |
89 | | -; |
90 | | -; RV64IDINX-LABEL: sitofp_i128_to_f64: |
91 | | -; RV64IDINX: # %bb.0: |
92 | | -; RV64IDINX-NEXT: addi sp, sp, -16 |
93 | | -; RV64IDINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill |
94 | | -; RV64IDINX-NEXT: call __floattidf |
95 | | -; RV64IDINX-NEXT: ld ra, 8(sp) # 8-byte Folded Reload |
96 | | -; RV64IDINX-NEXT: addi sp, sp, 16 |
97 | | -; RV64IDINX-NEXT: ret |
| 36 | +; CHECK-LABEL: sitofp_i128_to_f64: |
| 37 | +; CHECK: # %bb.0: |
| 38 | +; CHECK-NEXT: addi sp, sp, -16 |
| 39 | +; CHECK-NEXT: sd ra, 8(sp) # 8-byte Folded Spill |
| 40 | +; CHECK-NEXT: call __floattidf |
| 41 | +; CHECK-NEXT: ld ra, 8(sp) # 8-byte Folded Reload |
| 42 | +; CHECK-NEXT: addi sp, sp, 16 |
| 43 | +; CHECK-NEXT: ret |
98 | 44 | %1 = sitofp i128 %a to double |
99 | 45 | ret double %1 |
100 | 46 | } |
101 | 47 |
|
102 | 48 | define double @uitofp_i128_to_f64(i128 %a) nounwind { |
103 | | -; RV64I-LABEL: uitofp_i128_to_f64: |
104 | | -; RV64I: # %bb.0: |
105 | | -; RV64I-NEXT: addi sp, sp, -16 |
106 | | -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill |
107 | | -; RV64I-NEXT: call __floatuntidf |
108 | | -; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload |
109 | | -; RV64I-NEXT: addi sp, sp, 16 |
110 | | -; RV64I-NEXT: ret |
111 | | -; |
112 | | -; RV64ID-LABEL: uitofp_i128_to_f64: |
113 | | -; RV64ID: # %bb.0: |
114 | | -; RV64ID-NEXT: addi sp, sp, -16 |
115 | | -; RV64ID-NEXT: sd ra, 8(sp) # 8-byte Folded Spill |
116 | | -; RV64ID-NEXT: call __floatuntidf |
117 | | -; RV64ID-NEXT: ld ra, 8(sp) # 8-byte Folded Reload |
118 | | -; RV64ID-NEXT: addi sp, sp, 16 |
119 | | -; RV64ID-NEXT: ret |
120 | | -; |
121 | | -; RV64IDINX-LABEL: uitofp_i128_to_f64: |
122 | | -; RV64IDINX: # %bb.0: |
123 | | -; RV64IDINX-NEXT: addi sp, sp, -16 |
124 | | -; RV64IDINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill |
125 | | -; RV64IDINX-NEXT: call __floatuntidf |
126 | | -; RV64IDINX-NEXT: ld ra, 8(sp) # 8-byte Folded Reload |
127 | | -; RV64IDINX-NEXT: addi sp, sp, 16 |
128 | | -; RV64IDINX-NEXT: ret |
| 49 | +; CHECK-LABEL: uitofp_i128_to_f64: |
| 50 | +; CHECK: # %bb.0: |
| 51 | +; CHECK-NEXT: addi sp, sp, -16 |
| 52 | +; CHECK-NEXT: sd ra, 8(sp) # 8-byte Folded Spill |
| 53 | +; CHECK-NEXT: call __floatuntidf |
| 54 | +; CHECK-NEXT: ld ra, 8(sp) # 8-byte Folded Reload |
| 55 | +; CHECK-NEXT: addi sp, sp, 16 |
| 56 | +; CHECK-NEXT: ret |
129 | 57 | %1 = uitofp i128 %a to double |
130 | 58 | ret double %1 |
131 | 59 | } |
|
0 commit comments