@@ -3081,24 +3081,66 @@ define <vscale x 1 x i8> @vmv_v_v(<vscale x 1 x i8> %a, <vscale x 1 x i8> %b, <v
3081
3081
ret <vscale x 1 x i8 > %3
3082
3082
}
3083
3083
3084
- define <vscale x 4 x i32 > @vwsll_vi (<vscale x 4 x i16 > %a , <vscale x 4 x i32 > %b , iXLen %vl ) {
3084
+ define <vscale x 4 x i32 > @vwsll_vi (<vscale x 4 x i16 > %a , iXLen %vl ) {
3085
3085
; NOVLOPT-LABEL: vwsll_vi:
3086
3086
; NOVLOPT: # %bb.0:
3087
3087
; NOVLOPT-NEXT: vsetvli a1, zero, e16, m1, ta, ma
3088
- ; NOVLOPT-NEXT: vwsll.vi v12 , v8, 1
3088
+ ; NOVLOPT-NEXT: vwsll.vi v10 , v8, 1
3089
3089
; NOVLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3090
- ; NOVLOPT-NEXT: vadd.vv v8, v12 , v10
3090
+ ; NOVLOPT-NEXT: vadd.vv v8, v10 , v10
3091
3091
; NOVLOPT-NEXT: ret
3092
3092
;
3093
3093
; VLOPT-LABEL: vwsll_vi:
3094
3094
; VLOPT: # %bb.0:
3095
3095
; VLOPT-NEXT: vsetvli zero, a0, e16, m1, ta, ma
3096
- ; VLOPT-NEXT: vwsll.vi v12 , v8, 1
3096
+ ; VLOPT-NEXT: vwsll.vi v10 , v8, 1
3097
3097
; VLOPT-NEXT: vsetvli zero, zero, e32, m2, ta, ma
3098
- ; VLOPT-NEXT: vadd.vv v8, v12 , v10
3098
+ ; VLOPT-NEXT: vadd.vv v8, v10 , v10
3099
3099
; VLOPT-NEXT: ret
3100
- %1 = call <vscale x 4 x i32 > @llvm.riscv.vwsll.nxv4i32.nxv4i16 (<vscale x 4 x i32 > poison, <vscale x 4 x i16 > %a ,iXLen 1 , iXLen -1 )
3101
- %2 = call <vscale x 4 x i32 > @llvm.riscv.vadd.nxv4i32.nxv4i32 (<vscale x 4 x i32 > poison, <vscale x 4 x i32 > %1 , <vscale x 4 x i32 > %b , iXLen %vl )
3100
+ %1 = call <vscale x 4 x i32 > @llvm.riscv.vwsll.nxv4i32.nxv4i16 (<vscale x 4 x i32 > poison, <vscale x 4 x i16 > %a , iXLen 1 , iXLen -1 )
3101
+ %2 = call <vscale x 4 x i32 > @llvm.riscv.vadd.nxv4i32.nxv4i32 (<vscale x 4 x i32 > poison, <vscale x 4 x i32 > %1 , <vscale x 4 x i32 > %1 , iXLen %vl )
3102
+ ret <vscale x 4 x i32 > %2
3103
+ }
3104
+
3105
+ define <vscale x 4 x i32 > @vwsll_vx (<vscale x 4 x i16 > %a , iXLen %b , iXLen %vl ) {
3106
+ ; NOVLOPT-LABEL: vwsll_vx:
3107
+ ; NOVLOPT: # %bb.0:
3108
+ ; NOVLOPT-NEXT: vsetvli a2, zero, e16, m1, ta, ma
3109
+ ; NOVLOPT-NEXT: vwsll.vx v10, v8, a0
3110
+ ; NOVLOPT-NEXT: vsetvli zero, a1, e32, m2, ta, ma
3111
+ ; NOVLOPT-NEXT: vadd.vv v8, v10, v10
3112
+ ; NOVLOPT-NEXT: ret
3113
+ ;
3114
+ ; VLOPT-LABEL: vwsll_vx:
3115
+ ; VLOPT: # %bb.0:
3116
+ ; VLOPT-NEXT: vsetvli zero, a1, e16, m1, ta, ma
3117
+ ; VLOPT-NEXT: vwsll.vx v10, v8, a0
3118
+ ; VLOPT-NEXT: vsetvli zero, zero, e32, m2, ta, ma
3119
+ ; VLOPT-NEXT: vadd.vv v8, v10, v10
3120
+ ; VLOPT-NEXT: ret
3121
+ %1 = call <vscale x 4 x i32 > @llvm.riscv.vwsll.nxv4i32.nxv4i16 (<vscale x 4 x i32 > poison, <vscale x 4 x i16 > %a , iXLen %b , iXLen -1 )
3122
+ %2 = call <vscale x 4 x i32 > @llvm.riscv.vadd.nxv4i32.nxv4i32 (<vscale x 4 x i32 > poison, <vscale x 4 x i32 > %1 , <vscale x 4 x i32 > %1 , iXLen %vl )
3123
+ ret <vscale x 4 x i32 > %2
3124
+ }
3125
+
3126
+ define <vscale x 4 x i32 > @vwsll_vv (<vscale x 4 x i16 > %a , <vscale x 4 x i16 > %b , iXLen %vl ) {
3127
+ ; NOVLOPT-LABEL: vwsll_vv:
3128
+ ; NOVLOPT: # %bb.0:
3129
+ ; NOVLOPT-NEXT: vsetvli a1, zero, e16, m1, ta, ma
3130
+ ; NOVLOPT-NEXT: vwsll.vv v10, v8, v9
3131
+ ; NOVLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3132
+ ; NOVLOPT-NEXT: vadd.vv v8, v10, v10
3133
+ ; NOVLOPT-NEXT: ret
3134
+ ;
3135
+ ; VLOPT-LABEL: vwsll_vv:
3136
+ ; VLOPT: # %bb.0:
3137
+ ; VLOPT-NEXT: vsetvli zero, a0, e16, m1, ta, ma
3138
+ ; VLOPT-NEXT: vwsll.vv v10, v8, v9
3139
+ ; VLOPT-NEXT: vsetvli zero, zero, e32, m2, ta, ma
3140
+ ; VLOPT-NEXT: vadd.vv v8, v10, v10
3141
+ ; VLOPT-NEXT: ret
3142
+ %1 = call <vscale x 4 x i32 > @llvm.riscv.vwsll.nxv4i32.nxv4i16 (<vscale x 4 x i32 > poison, <vscale x 4 x i16 > %a , <vscale x 4 x i16 > %b , iXLen -1 )
3143
+ %2 = call <vscale x 4 x i32 > @llvm.riscv.vadd.nxv4i32.nxv4i32 (<vscale x 4 x i32 > poison, <vscale x 4 x i32 > %1 , <vscale x 4 x i32 > %1 , iXLen %vl )
3102
3144
ret <vscale x 4 x i32 > %2
3103
3145
}
3104
3146
0 commit comments