You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: llvm/test/CodeGen/RISCV/rvv/calling-conv.ll
+23-23Lines changed: 23 additions & 23 deletions
Original file line number
Diff line number
Diff line change
@@ -87,17 +87,17 @@ define <vscale x 32 x i32> @caller_scalable_vector_split_indirect(<vscale x 32 x
87
87
ret <vscale x 32 x i32> %a
88
88
}
89
89
90
-
define{<vscale x 4 x i32>, <vscale x 4 x i32>}@caller_tuple_return() {
90
+
definetarget("riscv.vector.tuple", <vscale x 16 x i8>, 2)@caller_tuple_return() {
91
91
; RV32-LABEL: caller_tuple_return:
92
92
; RV32: # %bb.0:
93
93
; RV32-NEXT: addi sp, sp, -16
94
94
; RV32-NEXT: .cfi_def_cfa_offset 16
95
95
; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
96
96
; RV32-NEXT: .cfi_offset ra, -4
97
97
; RV32-NEXT: call callee_tuple_return
98
-
; RV32-NEXT: vmv2r.v v12, v8
98
+
; RV32-NEXT: vmv2r.v v6, v8
99
99
; RV32-NEXT: vmv2r.v v8, v10
100
-
; RV32-NEXT: vmv2r.v v10, v12
100
+
; RV32-NEXT: vmv2r.v v10, v6
101
101
; RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
102
102
; RV32-NEXT: addi sp, sp, 16
103
103
; RV32-NEXT: ret
@@ -109,32 +109,32 @@ define {<vscale x 4 x i32>, <vscale x 4 x i32>} @caller_tuple_return() {
109
109
; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
110
110
; RV64-NEXT: .cfi_offset ra, -8
111
111
; RV64-NEXT: call callee_tuple_return
112
-
; RV64-NEXT: vmv2r.v v12, v8
112
+
; RV64-NEXT: vmv2r.v v6, v8
113
113
; RV64-NEXT: vmv2r.v v8, v10
114
-
; RV64-NEXT: vmv2r.v v10, v12
114
+
; RV64-NEXT: vmv2r.v v10, v6
115
115
; RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
116
116
; RV64-NEXT: addi sp, sp, 16
117
117
; RV64-NEXT: ret
118
-
%a = call{<vscale x 4 x i32>, <vscale x 4 x i32>}@callee_tuple_return()
119
-
%b = extractvalue {<vscale x 4 x i32>, <vscale x 4 x i32>} %a, 0
120
-
%c = extractvalue {<vscale x 4 x i32>, <vscale x 4 x i32>} %a, 1
121
-
%d = insertvalue {<vscale x 4 x i32>, <vscale x 4 x i32>} poison, <vscale x 4 x i32> %c, 0
122
-
%e = insertvalue {<vscale x 4 x i32>, <vscale x 4 x i32>} %d, <vscale x 4 x i32> %b, 1
123
-
ret{<vscale x 4 x i32>, <vscale x 4 x i32>}%e
118
+
%a = calltarget("riscv.vector.tuple", <vscale x 16 x i8>, 2)@callee_tuple_return()
119
+
%b = call<vscale x 4 x i32>@llvm.riscv.tuple.extract.nxv4i32.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %a, i320)
120
+
%c = call<vscale x 4 x i32>@llvm.riscv.tuple.extract.nxv4i32.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %a, i321)
121
+
%d = calltarget("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.tuple.insert.triscv.vector.tuple_nxv16i8_2t.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, <vscale x 4 x i32> %c, i320)
122
+
%e = calltarget("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.tuple.insert.triscv.vector.tuple_nxv16i8_2t.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %d, <vscale x 4 x i32> %b, i321)
123
+
rettarget("riscv.vector.tuple", <vscale x 16 x i8>, 2)%e
124
124
}
125
125
126
-
declare{<vscale x 4 x i32>, <vscale x 4 x i32>}@callee_tuple_return()
126
+
declaretarget("riscv.vector.tuple", <vscale x 16 x i8>, 2)@callee_tuple_return()
127
127
128
-
definevoid@caller_tuple_argument({<vscale x 4 x i32>, <vscale x 4 x i32>}%x) {
128
+
definevoid@caller_tuple_argument(target("riscv.vector.tuple", <vscale x 16 x i8>, 2)%x) {
129
129
; RV32-LABEL: caller_tuple_argument:
130
130
; RV32: # %bb.0:
131
131
; RV32-NEXT: addi sp, sp, -16
132
132
; RV32-NEXT: .cfi_def_cfa_offset 16
133
133
; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
134
134
; RV32-NEXT: .cfi_offset ra, -4
135
-
; RV32-NEXT: vmv2r.v v12, v8
135
+
; RV32-NEXT: vmv2r.v v6, v8
136
136
; RV32-NEXT: vmv2r.v v8, v10
137
-
; RV32-NEXT: vmv2r.v v10, v12
137
+
; RV32-NEXT: vmv2r.v v10, v6
138
138
; RV32-NEXT: call callee_tuple_argument
139
139
; RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
140
140
; RV32-NEXT: addi sp, sp, 16
@@ -146,19 +146,19 @@ define void @caller_tuple_argument({<vscale x 4 x i32>, <vscale x 4 x i32>} %x)
146
146
; RV64-NEXT: .cfi_def_cfa_offset 16
147
147
; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
148
148
; RV64-NEXT: .cfi_offset ra, -8
149
-
; RV64-NEXT: vmv2r.v v12, v8
149
+
; RV64-NEXT: vmv2r.v v6, v8
150
150
; RV64-NEXT: vmv2r.v v8, v10
151
-
; RV64-NEXT: vmv2r.v v10, v12
151
+
; RV64-NEXT: vmv2r.v v10, v6
152
152
; RV64-NEXT: call callee_tuple_argument
153
153
; RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
154
154
; RV64-NEXT: addi sp, sp, 16
155
155
; RV64-NEXT: ret
156
-
%a = extractvalue {<vscale x 4 x i32>, <vscale x 4 x i32>} %x, 0
157
-
%b = extractvalue {<vscale x 4 x i32>, <vscale x 4 x i32>} %x, 1
158
-
%c = insertvalue {<vscale x 4 x i32>, <vscale x 4 x i32>} poison, <vscale x 4 x i32> %b, 0
159
-
%d = insertvalue {<vscale x 4 x i32>, <vscale x 4 x i32>} %c, <vscale x 4 x i32> %a, 1
160
-
callvoid@callee_tuple_argument({<vscale x 4 x i32>, <vscale x 4 x i32>}%d)
156
+
%a = call<vscale x 4 x i32>@llvm.riscv.tuple.extract.nxv4i32.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %x, i320)
157
+
%b = call<vscale x 4 x i32>@llvm.riscv.tuple.extract.nxv4i32.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %x, i321)
158
+
%c = calltarget("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.tuple.insert.triscv.vector.tuple_nxv16i8_2t.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) poison, <vscale x 4 x i32> %b, i320)
159
+
%d = calltarget("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.tuple.insert.triscv.vector.tuple_nxv16i8_2t.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %c, <vscale x 4 x i32> %a, i321)
160
+
callvoid@callee_tuple_argument(target("riscv.vector.tuple", <vscale x 16 x i8>, 2)%d)
161
161
retvoid
162
162
}
163
163
164
-
declarevoid@callee_tuple_argument({<vscale x 4 x i32>, <vscale x 4 x i32>})
164
+
declarevoid@callee_tuple_argument(target("riscv.vector.tuple", <vscale x 16 x i8>, 2))
0 commit comments