Skip to content

Commit 0a29827

Browse files
committed
[RISCV] Add a negative case for strided load matching
This covers the bug identified in review of pr 65777.
1 parent d01f559 commit 0a29827

File tree

1 file changed

+142
-68
lines changed

1 file changed

+142
-68
lines changed

llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-gather.ll

Lines changed: 142 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -13294,22 +13294,96 @@ define <4 x i32> @mgather_unit_stride_load_wide_idx(ptr %base) {
1329413294
ret <4 x i32> %v
1329513295
}
1329613296

13297+
; This looks like a strided load (at i8), but isn't at index type.
13298+
define <4 x i32> @mgather_narrow_edge_case(ptr %base) {
13299+
; RV32-LABEL: mgather_narrow_edge_case:
13300+
; RV32: # %bb.0:
13301+
; RV32-NEXT: li a1, -512
13302+
; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
13303+
; RV32-NEXT: vmv.v.i v0, 5
13304+
; RV32-NEXT: vmv.v.x v8, a1
13305+
; RV32-NEXT: vmerge.vim v8, v8, 0, v0
13306+
; RV32-NEXT: vluxei32.v v8, (a0), v8
13307+
; RV32-NEXT: ret
13308+
;
13309+
; RV64V-LABEL: mgather_narrow_edge_case:
13310+
; RV64V: # %bb.0:
13311+
; RV64V-NEXT: li a1, -512
13312+
; RV64V-NEXT: vsetivli zero, 4, e64, m2, ta, ma
13313+
; RV64V-NEXT: vmv.v.x v8, a1
13314+
; RV64V-NEXT: vsetivli zero, 1, e8, mf8, ta, ma
13315+
; RV64V-NEXT: vmv.v.i v0, 5
13316+
; RV64V-NEXT: vsetivli zero, 4, e64, m2, ta, ma
13317+
; RV64V-NEXT: vmerge.vim v10, v8, 0, v0
13318+
; RV64V-NEXT: vsetvli zero, zero, e32, m1, ta, ma
13319+
; RV64V-NEXT: vluxei64.v v8, (a0), v10
13320+
; RV64V-NEXT: ret
13321+
;
13322+
; RV64ZVE32F-LABEL: mgather_narrow_edge_case:
13323+
; RV64ZVE32F: # %bb.0:
13324+
; RV64ZVE32F-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
13325+
; RV64ZVE32F-NEXT: vmset.m v8
13326+
; RV64ZVE32F-NEXT: vmv.x.s a1, v8
13327+
; RV64ZVE32F-NEXT: # implicit-def: $v8
13328+
; RV64ZVE32F-NEXT: bnez zero, .LBB106_2
13329+
; RV64ZVE32F-NEXT: # %bb.1: # %cond.load
13330+
; RV64ZVE32F-NEXT: vsetivli zero, 4, e32, m1, ta, ma
13331+
; RV64ZVE32F-NEXT: vlse32.v v8, (a0), zero
13332+
; RV64ZVE32F-NEXT: .LBB106_2: # %else
13333+
; RV64ZVE32F-NEXT: andi a3, a1, 2
13334+
; RV64ZVE32F-NEXT: addi a2, a0, -512
13335+
; RV64ZVE32F-NEXT: bnez a3, .LBB106_6
13336+
; RV64ZVE32F-NEXT: # %bb.3: # %else2
13337+
; RV64ZVE32F-NEXT: andi a3, a1, 4
13338+
; RV64ZVE32F-NEXT: bnez a3, .LBB106_7
13339+
; RV64ZVE32F-NEXT: .LBB106_4: # %else5
13340+
; RV64ZVE32F-NEXT: andi a1, a1, 8
13341+
; RV64ZVE32F-NEXT: bnez a1, .LBB106_8
13342+
; RV64ZVE32F-NEXT: .LBB106_5: # %else8
13343+
; RV64ZVE32F-NEXT: ret
13344+
; RV64ZVE32F-NEXT: .LBB106_6: # %cond.load1
13345+
; RV64ZVE32F-NEXT: lw a3, 0(a2)
13346+
; RV64ZVE32F-NEXT: vsetivli zero, 2, e32, m1, tu, ma
13347+
; RV64ZVE32F-NEXT: vmv.s.x v9, a3
13348+
; RV64ZVE32F-NEXT: vslideup.vi v8, v9, 1
13349+
; RV64ZVE32F-NEXT: andi a3, a1, 4
13350+
; RV64ZVE32F-NEXT: beqz a3, .LBB106_4
13351+
; RV64ZVE32F-NEXT: .LBB106_7: # %cond.load4
13352+
; RV64ZVE32F-NEXT: lw a0, 0(a0)
13353+
; RV64ZVE32F-NEXT: vsetivli zero, 3, e32, m1, tu, ma
13354+
; RV64ZVE32F-NEXT: vmv.s.x v9, a0
13355+
; RV64ZVE32F-NEXT: vslideup.vi v8, v9, 2
13356+
; RV64ZVE32F-NEXT: andi a1, a1, 8
13357+
; RV64ZVE32F-NEXT: beqz a1, .LBB106_5
13358+
; RV64ZVE32F-NEXT: .LBB106_8: # %cond.load7
13359+
; RV64ZVE32F-NEXT: lw a0, 0(a2)
13360+
; RV64ZVE32F-NEXT: vsetivli zero, 4, e32, m1, ta, ma
13361+
; RV64ZVE32F-NEXT: vmv.s.x v9, a0
13362+
; RV64ZVE32F-NEXT: vslideup.vi v8, v9, 3
13363+
; RV64ZVE32F-NEXT: ret
13364+
%head = insertelement <4 x i1> poison, i1 true, i32 0
13365+
%allones = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
13366+
%ptrs = getelementptr inbounds i32, ptr %base, <4 x i8> <i8 0, i8 128, i8 0, i8 128>
13367+
%v = call <4 x i32> @llvm.masked.gather.v4i32.v4p0(<4 x ptr> %ptrs, i32 4, <4 x i1> %allones, <4 x i32> poison)
13368+
ret <4 x i32> %v
13369+
}
13370+
1329713371

1329813372
; TODO: Recognize as strided load with SEW=32
1329913373
define <8 x i16> @mgather_strided_2xSEW(ptr %base) {
1330013374
; RV32-LABEL: mgather_strided_2xSEW:
1330113375
; RV32: # %bb.0:
13302-
; RV32-NEXT: lui a1, %hi(.LCPI106_0)
13303-
; RV32-NEXT: addi a1, a1, %lo(.LCPI106_0)
13376+
; RV32-NEXT: lui a1, %hi(.LCPI107_0)
13377+
; RV32-NEXT: addi a1, a1, %lo(.LCPI107_0)
1330413378
; RV32-NEXT: vsetivli zero, 8, e16, m1, ta, ma
1330513379
; RV32-NEXT: vle32.v v10, (a1)
1330613380
; RV32-NEXT: vluxei32.v v8, (a0), v10
1330713381
; RV32-NEXT: ret
1330813382
;
1330913383
; RV64V-LABEL: mgather_strided_2xSEW:
1331013384
; RV64V: # %bb.0:
13311-
; RV64V-NEXT: lui a1, %hi(.LCPI106_0)
13312-
; RV64V-NEXT: addi a1, a1, %lo(.LCPI106_0)
13385+
; RV64V-NEXT: lui a1, %hi(.LCPI107_0)
13386+
; RV64V-NEXT: addi a1, a1, %lo(.LCPI107_0)
1331313387
; RV64V-NEXT: vsetivli zero, 8, e16, m1, ta, ma
1331413388
; RV64V-NEXT: vle64.v v12, (a1)
1331513389
; RV64V-NEXT: vluxei64.v v8, (a0), v12
@@ -13321,84 +13395,84 @@ define <8 x i16> @mgather_strided_2xSEW(ptr %base) {
1332113395
; RV64ZVE32F-NEXT: vmset.m v8
1332213396
; RV64ZVE32F-NEXT: vmv.x.s a1, v8
1332313397
; RV64ZVE32F-NEXT: # implicit-def: $v8
13324-
; RV64ZVE32F-NEXT: beqz zero, .LBB106_9
13398+
; RV64ZVE32F-NEXT: beqz zero, .LBB107_9
1332513399
; RV64ZVE32F-NEXT: # %bb.1: # %else
1332613400
; RV64ZVE32F-NEXT: andi a2, a1, 2
13327-
; RV64ZVE32F-NEXT: bnez a2, .LBB106_10
13328-
; RV64ZVE32F-NEXT: .LBB106_2: # %else2
13401+
; RV64ZVE32F-NEXT: bnez a2, .LBB107_10
13402+
; RV64ZVE32F-NEXT: .LBB107_2: # %else2
1332913403
; RV64ZVE32F-NEXT: andi a2, a1, 4
13330-
; RV64ZVE32F-NEXT: bnez a2, .LBB106_11
13331-
; RV64ZVE32F-NEXT: .LBB106_3: # %else5
13404+
; RV64ZVE32F-NEXT: bnez a2, .LBB107_11
13405+
; RV64ZVE32F-NEXT: .LBB107_3: # %else5
1333213406
; RV64ZVE32F-NEXT: andi a2, a1, 8
13333-
; RV64ZVE32F-NEXT: bnez a2, .LBB106_12
13334-
; RV64ZVE32F-NEXT: .LBB106_4: # %else8
13407+
; RV64ZVE32F-NEXT: bnez a2, .LBB107_12
13408+
; RV64ZVE32F-NEXT: .LBB107_4: # %else8
1333513409
; RV64ZVE32F-NEXT: andi a2, a1, 16
13336-
; RV64ZVE32F-NEXT: bnez a2, .LBB106_13
13337-
; RV64ZVE32F-NEXT: .LBB106_5: # %else11
13410+
; RV64ZVE32F-NEXT: bnez a2, .LBB107_13
13411+
; RV64ZVE32F-NEXT: .LBB107_5: # %else11
1333813412
; RV64ZVE32F-NEXT: andi a2, a1, 32
13339-
; RV64ZVE32F-NEXT: bnez a2, .LBB106_14
13340-
; RV64ZVE32F-NEXT: .LBB106_6: # %else14
13413+
; RV64ZVE32F-NEXT: bnez a2, .LBB107_14
13414+
; RV64ZVE32F-NEXT: .LBB107_6: # %else14
1334113415
; RV64ZVE32F-NEXT: andi a2, a1, 64
13342-
; RV64ZVE32F-NEXT: bnez a2, .LBB106_15
13343-
; RV64ZVE32F-NEXT: .LBB106_7: # %else17
13416+
; RV64ZVE32F-NEXT: bnez a2, .LBB107_15
13417+
; RV64ZVE32F-NEXT: .LBB107_7: # %else17
1334413418
; RV64ZVE32F-NEXT: andi a1, a1, -128
13345-
; RV64ZVE32F-NEXT: bnez a1, .LBB106_16
13346-
; RV64ZVE32F-NEXT: .LBB106_8: # %else20
13419+
; RV64ZVE32F-NEXT: bnez a1, .LBB107_16
13420+
; RV64ZVE32F-NEXT: .LBB107_8: # %else20
1334713421
; RV64ZVE32F-NEXT: ret
13348-
; RV64ZVE32F-NEXT: .LBB106_9: # %cond.load
13422+
; RV64ZVE32F-NEXT: .LBB107_9: # %cond.load
1334913423
; RV64ZVE32F-NEXT: vlse16.v v8, (a0), zero
1335013424
; RV64ZVE32F-NEXT: andi a2, a1, 2
13351-
; RV64ZVE32F-NEXT: beqz a2, .LBB106_2
13352-
; RV64ZVE32F-NEXT: .LBB106_10: # %cond.load1
13425+
; RV64ZVE32F-NEXT: beqz a2, .LBB107_2
13426+
; RV64ZVE32F-NEXT: .LBB107_10: # %cond.load1
1335313427
; RV64ZVE32F-NEXT: addi a2, a0, 2
1335413428
; RV64ZVE32F-NEXT: lh a2, 0(a2)
1335513429
; RV64ZVE32F-NEXT: vsetvli zero, zero, e16, m1, ta, ma
1335613430
; RV64ZVE32F-NEXT: vmv.s.x v9, a2
1335713431
; RV64ZVE32F-NEXT: vsetivli zero, 2, e16, m1, tu, ma
1335813432
; RV64ZVE32F-NEXT: vslideup.vi v8, v9, 1
1335913433
; RV64ZVE32F-NEXT: andi a2, a1, 4
13360-
; RV64ZVE32F-NEXT: beqz a2, .LBB106_3
13361-
; RV64ZVE32F-NEXT: .LBB106_11: # %cond.load4
13434+
; RV64ZVE32F-NEXT: beqz a2, .LBB107_3
13435+
; RV64ZVE32F-NEXT: .LBB107_11: # %cond.load4
1336213436
; RV64ZVE32F-NEXT: addi a2, a0, 8
1336313437
; RV64ZVE32F-NEXT: lh a2, 0(a2)
1336413438
; RV64ZVE32F-NEXT: vsetivli zero, 3, e16, m1, tu, ma
1336513439
; RV64ZVE32F-NEXT: vmv.s.x v9, a2
1336613440
; RV64ZVE32F-NEXT: vslideup.vi v8, v9, 2
1336713441
; RV64ZVE32F-NEXT: andi a2, a1, 8
13368-
; RV64ZVE32F-NEXT: beqz a2, .LBB106_4
13369-
; RV64ZVE32F-NEXT: .LBB106_12: # %cond.load7
13442+
; RV64ZVE32F-NEXT: beqz a2, .LBB107_4
13443+
; RV64ZVE32F-NEXT: .LBB107_12: # %cond.load7
1337013444
; RV64ZVE32F-NEXT: addi a2, a0, 10
1337113445
; RV64ZVE32F-NEXT: lh a2, 0(a2)
1337213446
; RV64ZVE32F-NEXT: vsetivli zero, 4, e16, m1, tu, ma
1337313447
; RV64ZVE32F-NEXT: vmv.s.x v9, a2
1337413448
; RV64ZVE32F-NEXT: vslideup.vi v8, v9, 3
1337513449
; RV64ZVE32F-NEXT: andi a2, a1, 16
13376-
; RV64ZVE32F-NEXT: beqz a2, .LBB106_5
13377-
; RV64ZVE32F-NEXT: .LBB106_13: # %cond.load10
13450+
; RV64ZVE32F-NEXT: beqz a2, .LBB107_5
13451+
; RV64ZVE32F-NEXT: .LBB107_13: # %cond.load10
1337813452
; RV64ZVE32F-NEXT: addi a2, a0, 16
1337913453
; RV64ZVE32F-NEXT: lh a2, 0(a2)
1338013454
; RV64ZVE32F-NEXT: vsetivli zero, 5, e16, m1, tu, ma
1338113455
; RV64ZVE32F-NEXT: vmv.s.x v9, a2
1338213456
; RV64ZVE32F-NEXT: vslideup.vi v8, v9, 4
1338313457
; RV64ZVE32F-NEXT: andi a2, a1, 32
13384-
; RV64ZVE32F-NEXT: beqz a2, .LBB106_6
13385-
; RV64ZVE32F-NEXT: .LBB106_14: # %cond.load13
13458+
; RV64ZVE32F-NEXT: beqz a2, .LBB107_6
13459+
; RV64ZVE32F-NEXT: .LBB107_14: # %cond.load13
1338613460
; RV64ZVE32F-NEXT: addi a2, a0, 18
1338713461
; RV64ZVE32F-NEXT: lh a2, 0(a2)
1338813462
; RV64ZVE32F-NEXT: vsetivli zero, 6, e16, m1, tu, ma
1338913463
; RV64ZVE32F-NEXT: vmv.s.x v9, a2
1339013464
; RV64ZVE32F-NEXT: vslideup.vi v8, v9, 5
1339113465
; RV64ZVE32F-NEXT: andi a2, a1, 64
13392-
; RV64ZVE32F-NEXT: beqz a2, .LBB106_7
13393-
; RV64ZVE32F-NEXT: .LBB106_15: # %cond.load16
13466+
; RV64ZVE32F-NEXT: beqz a2, .LBB107_7
13467+
; RV64ZVE32F-NEXT: .LBB107_15: # %cond.load16
1339413468
; RV64ZVE32F-NEXT: addi a2, a0, 24
1339513469
; RV64ZVE32F-NEXT: lh a2, 0(a2)
1339613470
; RV64ZVE32F-NEXT: vsetivli zero, 7, e16, m1, tu, ma
1339713471
; RV64ZVE32F-NEXT: vmv.s.x v9, a2
1339813472
; RV64ZVE32F-NEXT: vslideup.vi v8, v9, 6
1339913473
; RV64ZVE32F-NEXT: andi a1, a1, -128
13400-
; RV64ZVE32F-NEXT: beqz a1, .LBB106_8
13401-
; RV64ZVE32F-NEXT: .LBB106_16: # %cond.load19
13474+
; RV64ZVE32F-NEXT: beqz a1, .LBB107_8
13475+
; RV64ZVE32F-NEXT: .LBB107_16: # %cond.load19
1340213476
; RV64ZVE32F-NEXT: addi a0, a0, 26
1340313477
; RV64ZVE32F-NEXT: lh a0, 0(a0)
1340413478
; RV64ZVE32F-NEXT: vsetivli zero, 8, e16, m1, ta, ma
@@ -13416,17 +13490,17 @@ define <8 x i16> @mgather_strided_2xSEW(ptr %base) {
1341613490
define <8 x i16> @mgather_gather_2xSEW(ptr %base) {
1341713491
; RV32-LABEL: mgather_gather_2xSEW:
1341813492
; RV32: # %bb.0:
13419-
; RV32-NEXT: lui a1, %hi(.LCPI107_0)
13420-
; RV32-NEXT: addi a1, a1, %lo(.LCPI107_0)
13493+
; RV32-NEXT: lui a1, %hi(.LCPI108_0)
13494+
; RV32-NEXT: addi a1, a1, %lo(.LCPI108_0)
1342113495
; RV32-NEXT: vsetivli zero, 8, e16, m1, ta, ma
1342213496
; RV32-NEXT: vle32.v v10, (a1)
1342313497
; RV32-NEXT: vluxei32.v v8, (a0), v10
1342413498
; RV32-NEXT: ret
1342513499
;
1342613500
; RV64V-LABEL: mgather_gather_2xSEW:
1342713501
; RV64V: # %bb.0:
13428-
; RV64V-NEXT: lui a1, %hi(.LCPI107_0)
13429-
; RV64V-NEXT: addi a1, a1, %lo(.LCPI107_0)
13502+
; RV64V-NEXT: lui a1, %hi(.LCPI108_0)
13503+
; RV64V-NEXT: addi a1, a1, %lo(.LCPI108_0)
1343013504
; RV64V-NEXT: vsetivli zero, 8, e16, m1, ta, ma
1343113505
; RV64V-NEXT: vle64.v v12, (a1)
1343213506
; RV64V-NEXT: vluxei64.v v8, (a0), v12
@@ -13438,84 +13512,84 @@ define <8 x i16> @mgather_gather_2xSEW(ptr %base) {
1343813512
; RV64ZVE32F-NEXT: vmset.m v8
1343913513
; RV64ZVE32F-NEXT: vmv.x.s a1, v8
1344013514
; RV64ZVE32F-NEXT: # implicit-def: $v8
13441-
; RV64ZVE32F-NEXT: beqz zero, .LBB107_9
13515+
; RV64ZVE32F-NEXT: beqz zero, .LBB108_9
1344213516
; RV64ZVE32F-NEXT: # %bb.1: # %else
1344313517
; RV64ZVE32F-NEXT: andi a2, a1, 2
13444-
; RV64ZVE32F-NEXT: bnez a2, .LBB107_10
13445-
; RV64ZVE32F-NEXT: .LBB107_2: # %else2
13518+
; RV64ZVE32F-NEXT: bnez a2, .LBB108_10
13519+
; RV64ZVE32F-NEXT: .LBB108_2: # %else2
1344613520
; RV64ZVE32F-NEXT: andi a2, a1, 4
13447-
; RV64ZVE32F-NEXT: bnez a2, .LBB107_11
13448-
; RV64ZVE32F-NEXT: .LBB107_3: # %else5
13521+
; RV64ZVE32F-NEXT: bnez a2, .LBB108_11
13522+
; RV64ZVE32F-NEXT: .LBB108_3: # %else5
1344913523
; RV64ZVE32F-NEXT: andi a2, a1, 8
13450-
; RV64ZVE32F-NEXT: bnez a2, .LBB107_12
13451-
; RV64ZVE32F-NEXT: .LBB107_4: # %else8
13524+
; RV64ZVE32F-NEXT: bnez a2, .LBB108_12
13525+
; RV64ZVE32F-NEXT: .LBB108_4: # %else8
1345213526
; RV64ZVE32F-NEXT: andi a2, a1, 16
13453-
; RV64ZVE32F-NEXT: bnez a2, .LBB107_13
13454-
; RV64ZVE32F-NEXT: .LBB107_5: # %else11
13527+
; RV64ZVE32F-NEXT: bnez a2, .LBB108_13
13528+
; RV64ZVE32F-NEXT: .LBB108_5: # %else11
1345513529
; RV64ZVE32F-NEXT: andi a2, a1, 32
13456-
; RV64ZVE32F-NEXT: bnez a2, .LBB107_14
13457-
; RV64ZVE32F-NEXT: .LBB107_6: # %else14
13530+
; RV64ZVE32F-NEXT: bnez a2, .LBB108_14
13531+
; RV64ZVE32F-NEXT: .LBB108_6: # %else14
1345813532
; RV64ZVE32F-NEXT: andi a2, a1, 64
13459-
; RV64ZVE32F-NEXT: bnez a2, .LBB107_15
13460-
; RV64ZVE32F-NEXT: .LBB107_7: # %else17
13533+
; RV64ZVE32F-NEXT: bnez a2, .LBB108_15
13534+
; RV64ZVE32F-NEXT: .LBB108_7: # %else17
1346113535
; RV64ZVE32F-NEXT: andi a1, a1, -128
13462-
; RV64ZVE32F-NEXT: bnez a1, .LBB107_16
13463-
; RV64ZVE32F-NEXT: .LBB107_8: # %else20
13536+
; RV64ZVE32F-NEXT: bnez a1, .LBB108_16
13537+
; RV64ZVE32F-NEXT: .LBB108_8: # %else20
1346413538
; RV64ZVE32F-NEXT: ret
13465-
; RV64ZVE32F-NEXT: .LBB107_9: # %cond.load
13539+
; RV64ZVE32F-NEXT: .LBB108_9: # %cond.load
1346613540
; RV64ZVE32F-NEXT: vlse16.v v8, (a0), zero
1346713541
; RV64ZVE32F-NEXT: andi a2, a1, 2
13468-
; RV64ZVE32F-NEXT: beqz a2, .LBB107_2
13469-
; RV64ZVE32F-NEXT: .LBB107_10: # %cond.load1
13542+
; RV64ZVE32F-NEXT: beqz a2, .LBB108_2
13543+
; RV64ZVE32F-NEXT: .LBB108_10: # %cond.load1
1347013544
; RV64ZVE32F-NEXT: addi a2, a0, 2
1347113545
; RV64ZVE32F-NEXT: lh a2, 0(a2)
1347213546
; RV64ZVE32F-NEXT: vsetvli zero, zero, e16, m1, ta, ma
1347313547
; RV64ZVE32F-NEXT: vmv.s.x v9, a2
1347413548
; RV64ZVE32F-NEXT: vsetivli zero, 2, e16, m1, tu, ma
1347513549
; RV64ZVE32F-NEXT: vslideup.vi v8, v9, 1
1347613550
; RV64ZVE32F-NEXT: andi a2, a1, 4
13477-
; RV64ZVE32F-NEXT: beqz a2, .LBB107_3
13478-
; RV64ZVE32F-NEXT: .LBB107_11: # %cond.load4
13551+
; RV64ZVE32F-NEXT: beqz a2, .LBB108_3
13552+
; RV64ZVE32F-NEXT: .LBB108_11: # %cond.load4
1347913553
; RV64ZVE32F-NEXT: addi a2, a0, 4
1348013554
; RV64ZVE32F-NEXT: lh a2, 0(a2)
1348113555
; RV64ZVE32F-NEXT: vsetivli zero, 3, e16, m1, tu, ma
1348213556
; RV64ZVE32F-NEXT: vmv.s.x v9, a2
1348313557
; RV64ZVE32F-NEXT: vslideup.vi v8, v9, 2
1348413558
; RV64ZVE32F-NEXT: andi a2, a1, 8
13485-
; RV64ZVE32F-NEXT: beqz a2, .LBB107_4
13486-
; RV64ZVE32F-NEXT: .LBB107_12: # %cond.load7
13559+
; RV64ZVE32F-NEXT: beqz a2, .LBB108_4
13560+
; RV64ZVE32F-NEXT: .LBB108_12: # %cond.load7
1348713561
; RV64ZVE32F-NEXT: addi a2, a0, 6
1348813562
; RV64ZVE32F-NEXT: lh a2, 0(a2)
1348913563
; RV64ZVE32F-NEXT: vsetivli zero, 4, e16, m1, tu, ma
1349013564
; RV64ZVE32F-NEXT: vmv.s.x v9, a2
1349113565
; RV64ZVE32F-NEXT: vslideup.vi v8, v9, 3
1349213566
; RV64ZVE32F-NEXT: andi a2, a1, 16
13493-
; RV64ZVE32F-NEXT: beqz a2, .LBB107_5
13494-
; RV64ZVE32F-NEXT: .LBB107_13: # %cond.load10
13567+
; RV64ZVE32F-NEXT: beqz a2, .LBB108_5
13568+
; RV64ZVE32F-NEXT: .LBB108_13: # %cond.load10
1349513569
; RV64ZVE32F-NEXT: addi a2, a0, 16
1349613570
; RV64ZVE32F-NEXT: lh a2, 0(a2)
1349713571
; RV64ZVE32F-NEXT: vsetivli zero, 5, e16, m1, tu, ma
1349813572
; RV64ZVE32F-NEXT: vmv.s.x v9, a2
1349913573
; RV64ZVE32F-NEXT: vslideup.vi v8, v9, 4
1350013574
; RV64ZVE32F-NEXT: andi a2, a1, 32
13501-
; RV64ZVE32F-NEXT: beqz a2, .LBB107_6
13502-
; RV64ZVE32F-NEXT: .LBB107_14: # %cond.load13
13575+
; RV64ZVE32F-NEXT: beqz a2, .LBB108_6
13576+
; RV64ZVE32F-NEXT: .LBB108_14: # %cond.load13
1350313577
; RV64ZVE32F-NEXT: addi a2, a0, 18
1350413578
; RV64ZVE32F-NEXT: lh a2, 0(a2)
1350513579
; RV64ZVE32F-NEXT: vsetivli zero, 6, e16, m1, tu, ma
1350613580
; RV64ZVE32F-NEXT: vmv.s.x v9, a2
1350713581
; RV64ZVE32F-NEXT: vslideup.vi v8, v9, 5
1350813582
; RV64ZVE32F-NEXT: andi a2, a1, 64
13509-
; RV64ZVE32F-NEXT: beqz a2, .LBB107_7
13510-
; RV64ZVE32F-NEXT: .LBB107_15: # %cond.load16
13583+
; RV64ZVE32F-NEXT: beqz a2, .LBB108_7
13584+
; RV64ZVE32F-NEXT: .LBB108_15: # %cond.load16
1351113585
; RV64ZVE32F-NEXT: addi a2, a0, 20
1351213586
; RV64ZVE32F-NEXT: lh a2, 0(a2)
1351313587
; RV64ZVE32F-NEXT: vsetivli zero, 7, e16, m1, tu, ma
1351413588
; RV64ZVE32F-NEXT: vmv.s.x v9, a2
1351513589
; RV64ZVE32F-NEXT: vslideup.vi v8, v9, 6
1351613590
; RV64ZVE32F-NEXT: andi a1, a1, -128
13517-
; RV64ZVE32F-NEXT: beqz a1, .LBB107_8
13518-
; RV64ZVE32F-NEXT: .LBB107_16: # %cond.load19
13591+
; RV64ZVE32F-NEXT: beqz a1, .LBB108_8
13592+
; RV64ZVE32F-NEXT: .LBB108_16: # %cond.load19
1351913593
; RV64ZVE32F-NEXT: addi a0, a0, 22
1352013594
; RV64ZVE32F-NEXT: lh a0, 0(a0)
1352113595
; RV64ZVE32F-NEXT: vsetivli zero, 8, e16, m1, ta, ma

0 commit comments

Comments
 (0)