@@ -71,3 +71,77 @@ llvm.func @binary_fixed_iv(%arg0: vector<4xf32>, %rd: i32) -> vector<4xf32> {
71
71
%0 = " vcix.v.iv" (%arg0 , %rd ) <{opcode = 3 : i32 , imm = 5 : i32 }> : (vector <4 xf32 >, i32 ) -> vector <4 xf32 >
72
72
llvm.return %0 : vector <4 xf32 >
73
73
}
74
+
75
+ // Test integer type
76
+
77
+ // CHECK-LABEL: define <vscale x 4 x i32> @binary_i_fv(<vscale x 4 x i32> %0, float %1, i32 %2) {
78
+ // CHECK-NEXT: %4 = call <vscale x 4 x i32> @llvm.riscv.sf.vc.v.fv.se.nxv4i32.i32.nxv4i32.f32.i32(i32 1, <vscale x 4 x i32> %0, float %1, i32 %2)
79
+ // CHECK-NEXT: ret <vscale x 4 x i32> %4
80
+ // CHECK-NEXT: }
81
+ llvm.func @binary_i_fv (%arg0: vector <[4 ]xi32 >, %arg1: f32 , %vl: i32 ) -> vector <[4 ]xi32 > {
82
+ %0 = " vcix.v.sv" (%arg0 , %arg1 , %vl ) <{opcode = 1 : i32 }> : (vector <[4 ]xi32 >, f32 , i32 ) -> vector <[4 ]xi32 >
83
+ llvm.return %0 : vector <[4 ]xi32 >
84
+ }
85
+
86
+ // CHECK-LABEL: define <vscale x 4 x i32> @binary_i_xv(<vscale x 4 x i32> %0, i32 %1, i32 %2) {
87
+ // CHECK-NEXT: %4 = call <vscale x 4 x i32> @llvm.riscv.sf.vc.v.xv.se.nxv4i32.i32.nxv4i32.i32.i32(i32 3, <vscale x 4 x i32> %0, i32 %1, i32 %2)
88
+ // CHECK-NEXT: ret <vscale x 4 x i32> %4
89
+ // CHECK-NEXT: }
90
+ llvm.func @binary_i_xv (%arg0: vector <[4 ]xi32 >, %arg1: i32 , %vl: i32 ) -> vector <[4 ]xi32 > {
91
+ %0 = " vcix.v.sv" (%arg0 , %arg1 , %vl ) <{opcode = 3 : i32 }> : (vector <[4 ]xi32 >, i32 , i32 ) -> vector <[4 ]xi32 >
92
+ llvm.return %0 : vector <[4 ]xi32 >
93
+ }
94
+
95
+ // CHECK-LABEL: define <vscale x 4 x i32> @binary_i_vv(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, i32 %2) {
96
+ // CHECK-NEXT: %4 = call <vscale x 4 x i32> @llvm.riscv.sf.vc.v.vv.se.nxv4i32.i32.nxv4i32.nxv4i32.i32(i32 3, <vscale x 4 x i32> %0, <vscale x 4 x i32> %1, i32 %2)
97
+ // CHECK-NEXT: ret <vscale x 4 x i32> %4
98
+ // CHECK-NEXT: }
99
+ llvm.func @binary_i_vv (%arg0: vector <[4 ]xi32 >, %arg1: vector <[4 ]xi32 >, %vl: i32 ) -> vector <[4 ]xi32 > {
100
+ %0 = " vcix.v.sv" (%arg0 , %arg1 , %vl ) <{opcode = 3 : i32 }> : (vector <[4 ]xi32 >, vector <[4 ]xi32 >, i32 ) -> vector <[4 ]xi32 >
101
+ llvm.return %0 : vector <[4 ]xi32 >
102
+ }
103
+
104
+ // CHECK-LABEL: define <vscale x 4 x i32> @binary_i_iv(<vscale x 4 x i32> %0, i32 %1, i32 %2) {
105
+ // CHECK-NEXT: %4 = call <vscale x 4 x i32> @llvm.riscv.sf.vc.v.iv.se.nxv4i32.i32.nxv4i32.i32.i32(i32 3, <vscale x 4 x i32> %0, i32 5, i32 %2)
106
+ // CHECK-NEXT: ret <vscale x 4 x i32> %4
107
+ // CHECK-NEXT: }
108
+ llvm.func @binary_i_iv (%arg0: vector <[4 ]xi32 >, %rd: i32 , %vl: i32 ) -> vector <[4 ]xi32 > {
109
+ %0 = " vcix.v.iv" (%arg0 , %rd , %vl ) <{opcode = 3 : i32 , imm = 5 : i32 }> : (vector <[4 ]xi32 >, i32 , i32 ) -> vector <[4 ]xi32 >
110
+ llvm.return %0 : vector <[4 ]xi32 >
111
+ }
112
+
113
+ // CHECK-LABEL: define <4 x i32> @binary_i_fixed_fv(<4 x i32> %0, float %1) {
114
+ // CHECK-NEXT: %3 = call <4 x i32> @llvm.riscv.sf.vc.v.fv.se.v4i32.i32.v4i32.f32.i32(i32 1, <4 x i32> %0, float %1, i32 4)
115
+ // CHECK-NEXT: ret <4 x i32> %3
116
+ // CHECK-NEXT: }
117
+ llvm.func @binary_i_fixed_fv (%arg0: vector <4 xi32 >, %arg1: f32 ) -> vector <4 xi32 > {
118
+ %0 = " vcix.v.sv" (%arg0 , %arg1 ) <{opcode = 1 : i32 }> : (vector <4 xi32 >, f32 ) -> vector <4 xi32 >
119
+ llvm.return %0 : vector <4 xi32 >
120
+ }
121
+
122
+ // CHECK-LABEL: define <4 x i32> @binary_i_fixed_xv(<4 x i32> %0, i32 %1) {
123
+ // CHECK-NEXT: %3 = call <4 x i32> @llvm.riscv.sf.vc.v.xv.se.v4i32.i32.v4i32.i32.i32(i32 3, <4 x i32> %0, i32 %1, i32 4)
124
+ // CHECK-NEXT: ret <4 x i32> %3
125
+ // CHECK-NEXT: }
126
+ llvm.func @binary_i_fixed_xv (%arg0: vector <4 xi32 >, %arg1: i32 ) -> vector <4 xi32 > {
127
+ %0 = " vcix.v.sv" (%arg0 , %arg1 ) <{opcode = 3 : i32 }> : (vector <4 xi32 >, i32 ) -> vector <4 xi32 >
128
+ llvm.return %0 : vector <4 xi32 >
129
+ }
130
+
131
+ // CHECK-LABEL: define <4 x i32> @binary_i_fixed_vv(<4 x i32> %0, <4 x i32> %1) {
132
+ // CHECK-NEXT: %3 = call <4 x i32> @llvm.riscv.sf.vc.v.vv.se.v4i32.i32.v4i32.v4i32.i32(i32 3, <4 x i32> %0, <4 x i32> %1, i32 4)
133
+ // CHECK-NEXT: ret <4 x i32> %3
134
+ // CHECK-NEXT: }
135
+ llvm.func @binary_i_fixed_vv (%arg0: vector <4 xi32 >, %arg1: vector <4 xi32 >) -> vector <4 xi32 > {
136
+ %0 = " vcix.v.sv" (%arg0 , %arg1 ) <{opcode = 3 : i32 }> : (vector <4 xi32 >, vector <4 xi32 >) -> vector <4 xi32 >
137
+ llvm.return %0 : vector <4 xi32 >
138
+ }
139
+
140
+ // CHECK-LABEL: define <4 x i32> @binary_i_fixed_iv(<4 x i32> %0, i32 %1) {
141
+ // CHECK-NEXT: %3 = call <4 x i32> @llvm.riscv.sf.vc.v.iv.se.v4i32.i32.v4i32.i32.i32(i32 3, <4 x i32> %0, i32 5, i32 4)
142
+ // CHECK-NEXT: ret <4 x i32> %3
143
+ // CHECK-NEXT: }
144
+ llvm.func @binary_i_fixed_iv (%arg0: vector <4 xi32 >, %rd: i32 ) -> vector <4 xi32 > {
145
+ %0 = " vcix.v.iv" (%arg0 , %rd ) <{opcode = 3 : i32 , imm = 5 : i32 }> : (vector <4 xi32 >, i32 ) -> vector <4 xi32 >
146
+ llvm.return %0 : vector <4 xi32 >
147
+ }
0 commit comments