@@ -13567,20 +13567,16 @@ define <8 x i16> @mgather_strided_unaligned(ptr %base) {
13567
13567
define <8 x i16> @mgather_strided_2xSEW(ptr %base) {
13568
13568
; RV32-LABEL: mgather_strided_2xSEW:
13569
13569
; RV32: # %bb.0:
13570
- ; RV32-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
13571
- ; RV32-NEXT: vid.v v8
13572
- ; RV32-NEXT: vsll.vi v9, v8, 3
13573
- ; RV32-NEXT: vsetvli zero, zero, e32, m1, ta, ma
13574
- ; RV32-NEXT: vluxei8.v v8, (a0), v9
13570
+ ; RV32-NEXT: li a1, 8
13571
+ ; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
13572
+ ; RV32-NEXT: vlse32.v v8, (a0), a1
13575
13573
; RV32-NEXT: ret
13576
13574
;
13577
13575
; RV64V-LABEL: mgather_strided_2xSEW:
13578
13576
; RV64V: # %bb.0:
13579
- ; RV64V-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
13580
- ; RV64V-NEXT: vid.v v8
13581
- ; RV64V-NEXT: vsll.vi v9, v8, 3
13582
- ; RV64V-NEXT: vsetvli zero, zero, e32, m1, ta, ma
13583
- ; RV64V-NEXT: vluxei8.v v8, (a0), v9
13577
+ ; RV64V-NEXT: li a1, 8
13578
+ ; RV64V-NEXT: vsetivli zero, 4, e32, m1, ta, ma
13579
+ ; RV64V-NEXT: vlse32.v v8, (a0), a1
13584
13580
; RV64V-NEXT: ret
13585
13581
;
13586
13582
; RV64ZVE32F-LABEL: mgather_strided_2xSEW:
@@ -13684,22 +13680,18 @@ define <8 x i16> @mgather_strided_2xSEW(ptr %base) {
13684
13680
define <8 x i16> @mgather_strided_2xSEW_with_offset(ptr %base) {
13685
13681
; RV32-LABEL: mgather_strided_2xSEW_with_offset:
13686
13682
; RV32: # %bb.0:
13687
- ; RV32-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
13688
- ; RV32-NEXT: vid.v v8
13689
- ; RV32-NEXT: vsll.vi v8, v8, 3
13690
- ; RV32-NEXT: vadd.vi v9, v8, 4
13691
- ; RV32-NEXT: vsetvli zero, zero, e32, m1, ta, ma
13692
- ; RV32-NEXT: vluxei8.v v8, (a0), v9
13683
+ ; RV32-NEXT: addi a0, a0, 4
13684
+ ; RV32-NEXT: li a1, 8
13685
+ ; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
13686
+ ; RV32-NEXT: vlse32.v v8, (a0), a1
13693
13687
; RV32-NEXT: ret
13694
13688
;
13695
13689
; RV64V-LABEL: mgather_strided_2xSEW_with_offset:
13696
13690
; RV64V: # %bb.0:
13697
- ; RV64V-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
13698
- ; RV64V-NEXT: vid.v v8
13699
- ; RV64V-NEXT: vsll.vi v8, v8, 3
13700
- ; RV64V-NEXT: vadd.vi v9, v8, 4
13701
- ; RV64V-NEXT: vsetvli zero, zero, e32, m1, ta, ma
13702
- ; RV64V-NEXT: vluxei8.v v8, (a0), v9
13691
+ ; RV64V-NEXT: addi a0, a0, 4
13692
+ ; RV64V-NEXT: li a1, 8
13693
+ ; RV64V-NEXT: vsetivli zero, 4, e32, m1, ta, ma
13694
+ ; RV64V-NEXT: vlse32.v v8, (a0), a1
13703
13695
; RV64V-NEXT: ret
13704
13696
;
13705
13697
; RV64ZVE32F-LABEL: mgather_strided_2xSEW_with_offset:
@@ -13804,20 +13796,18 @@ define <8 x i16> @mgather_strided_2xSEW_with_offset(ptr %base) {
13804
13796
define <8 x i16> @mgather_reverse_unit_strided_2xSEW(ptr %base) {
13805
13797
; RV32-LABEL: mgather_reverse_unit_strided_2xSEW:
13806
13798
; RV32: # %bb.0:
13807
- ; RV32-NEXT: lui a1, 65858
13808
- ; RV32-NEXT: addi a1, a1, -2020
13799
+ ; RV32-NEXT: addi a0, a0, 28
13800
+ ; RV32-NEXT: li a1, -4
13809
13801
; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
13810
- ; RV32-NEXT: vmv.s.x v9, a1
13811
- ; RV32-NEXT: vluxei8.v v8, (a0), v9
13802
+ ; RV32-NEXT: vlse32.v v8, (a0), a1
13812
13803
; RV32-NEXT: ret
13813
13804
;
13814
13805
; RV64V-LABEL: mgather_reverse_unit_strided_2xSEW:
13815
13806
; RV64V: # %bb.0:
13816
- ; RV64V-NEXT: lui a1, 65858
13817
- ; RV64V-NEXT: addiw a1, a1, -2020
13807
+ ; RV64V-NEXT: addi a0, a0, 28
13808
+ ; RV64V-NEXT: li a1, -4
13818
13809
; RV64V-NEXT: vsetivli zero, 4, e32, m1, ta, ma
13819
- ; RV64V-NEXT: vmv.s.x v9, a1
13820
- ; RV64V-NEXT: vluxei8.v v8, (a0), v9
13810
+ ; RV64V-NEXT: vlse32.v v8, (a0), a1
13821
13811
; RV64V-NEXT: ret
13822
13812
;
13823
13813
; RV64ZVE32F-LABEL: mgather_reverse_unit_strided_2xSEW:
@@ -13922,20 +13912,18 @@ define <8 x i16> @mgather_reverse_unit_strided_2xSEW(ptr %base) {
13922
13912
define <8 x i16> @mgather_reverse_strided_2xSEW(ptr %base) {
13923
13913
; RV32-LABEL: mgather_reverse_strided_2xSEW:
13924
13914
; RV32: # %bb.0:
13925
- ; RV32-NEXT: lui a1, 16577
13926
- ; RV32-NEXT: addi a1, a1, 1052
13915
+ ; RV32-NEXT: addi a0, a0, 28
13916
+ ; RV32-NEXT: li a1, -8
13927
13917
; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
13928
- ; RV32-NEXT: vmv.s.x v9, a1
13929
- ; RV32-NEXT: vluxei8.v v8, (a0), v9
13918
+ ; RV32-NEXT: vlse32.v v8, (a0), a1
13930
13919
; RV32-NEXT: ret
13931
13920
;
13932
13921
; RV64V-LABEL: mgather_reverse_strided_2xSEW:
13933
13922
; RV64V: # %bb.0:
13934
- ; RV64V-NEXT: lui a1, 16577
13935
- ; RV64V-NEXT: addiw a1, a1, 1052
13923
+ ; RV64V-NEXT: addi a0, a0, 28
13924
+ ; RV64V-NEXT: li a1, -8
13936
13925
; RV64V-NEXT: vsetivli zero, 4, e32, m1, ta, ma
13937
- ; RV64V-NEXT: vmv.s.x v9, a1
13938
- ; RV64V-NEXT: vluxei8.v v8, (a0), v9
13926
+ ; RV64V-NEXT: vlse32.v v8, (a0), a1
13939
13927
; RV64V-NEXT: ret
13940
13928
;
13941
13929
; RV64ZVE32F-LABEL: mgather_reverse_strided_2xSEW:
@@ -14386,20 +14374,16 @@ define <8 x i16> @mgather_gather_2xSEW_unaligned2(ptr %base) {
14386
14374
define <8 x i16> @mgather_gather_4xSEW(ptr %base) {
14387
14375
; RV32V-LABEL: mgather_gather_4xSEW:
14388
14376
; RV32V: # %bb.0:
14389
- ; RV32V-NEXT: vsetivli zero, 2, e8, mf8, ta, ma
14390
- ; RV32V-NEXT: vid.v v8
14391
- ; RV32V-NEXT: vsll.vi v9, v8, 4
14392
- ; RV32V-NEXT: vsetvli zero, zero, e64, m1, ta, ma
14393
- ; RV32V-NEXT: vluxei8.v v8, (a0), v9
14377
+ ; RV32V-NEXT: li a1, 16
14378
+ ; RV32V-NEXT: vsetivli zero, 2, e64, m1, ta, ma
14379
+ ; RV32V-NEXT: vlse64.v v8, (a0), a1
14394
14380
; RV32V-NEXT: ret
14395
14381
;
14396
14382
; RV64V-LABEL: mgather_gather_4xSEW:
14397
14383
; RV64V: # %bb.0:
14398
- ; RV64V-NEXT: vsetivli zero, 2, e8, mf8, ta, ma
14399
- ; RV64V-NEXT: vid.v v8
14400
- ; RV64V-NEXT: vsll.vi v9, v8, 4
14401
- ; RV64V-NEXT: vsetvli zero, zero, e64, m1, ta, ma
14402
- ; RV64V-NEXT: vluxei8.v v8, (a0), v9
14384
+ ; RV64V-NEXT: li a1, 16
14385
+ ; RV64V-NEXT: vsetivli zero, 2, e64, m1, ta, ma
14386
+ ; RV64V-NEXT: vlse64.v v8, (a0), a1
14403
14387
; RV64V-NEXT: ret
14404
14388
;
14405
14389
; RV32ZVE32F-LABEL: mgather_gather_4xSEW:
0 commit comments