@@ -2449,82 +2449,72 @@ define i32 @memcmp_size_3(ptr %s1, ptr %s2) nounwind optsize {
2449
2449
;
2450
2450
; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_3:
2451
2451
; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry
2452
- ; CHECK-UNALIGNED-RV32-ZBB-NEXT: lh a2, 0(a0)
2453
- ; CHECK-UNALIGNED-RV32-ZBB-NEXT: lh a3, 0(a1)
2454
- ; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2
2455
- ; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3
2456
- ; CHECK-UNALIGNED-RV32-ZBB-NEXT: srli a2, a2, 16
2457
- ; CHECK-UNALIGNED-RV32-ZBB-NEXT: srli a3, a3, 16
2458
- ; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB24_2
2459
- ; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.1: # %loadbb1
2460
- ; CHECK-UNALIGNED-RV32-ZBB-NEXT: lbu a0, 2(a0)
2461
- ; CHECK-UNALIGNED-RV32-ZBB-NEXT: lbu a1, 2(a1)
2462
- ; CHECK-UNALIGNED-RV32-ZBB-NEXT: sub a0, a0, a1
2463
- ; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret
2464
- ; CHECK-UNALIGNED-RV32-ZBB-NEXT: .LBB24_2: # %res_block
2465
- ; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a2, a3
2466
- ; CHECK-UNALIGNED-RV32-ZBB-NEXT: neg a0, a0
2467
- ; CHECK-UNALIGNED-RV32-ZBB-NEXT: ori a0, a0, 1
2452
+ ; CHECK-UNALIGNED-RV32-ZBB-NEXT: lbu a2, 2(a0)
2453
+ ; CHECK-UNALIGNED-RV32-ZBB-NEXT: lhu a0, 0(a0)
2454
+ ; CHECK-UNALIGNED-RV32-ZBB-NEXT: lbu a3, 2(a1)
2455
+ ; CHECK-UNALIGNED-RV32-ZBB-NEXT: lhu a1, 0(a1)
2456
+ ; CHECK-UNALIGNED-RV32-ZBB-NEXT: slli a2, a2, 16
2457
+ ; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a0, a0, a2
2458
+ ; CHECK-UNALIGNED-RV32-ZBB-NEXT: slli a3, a3, 16
2459
+ ; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a1, a1, a3
2460
+ ; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a0, a0
2461
+ ; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a1, a1
2462
+ ; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a2, a1, a0
2463
+ ; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a0, a1
2464
+ ; CHECK-UNALIGNED-RV32-ZBB-NEXT: sub a0, a2, a0
2468
2465
; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret
2469
2466
;
2470
2467
; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_3:
2471
2468
; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry
2472
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lh a2, 0(a0)
2473
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lh a3, 0(a1)
2474
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2
2475
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3
2476
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a2, a2, 48
2477
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a3, a3, 48
2478
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB24_2
2479
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.1: # %loadbb1
2480
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a0, 2(a0)
2481
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a1, 2(a1)
2482
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a0, a1
2483
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret
2484
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: .LBB24_2: # %res_block
2485
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a2, a3
2486
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: neg a0, a0
2487
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: ori a0, a0, 1
2469
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a2, 2(a0)
2470
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lhu a0, 0(a0)
2471
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a3, 2(a1)
2472
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lhu a1, 0(a1)
2473
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: slli a2, a2, 16
2474
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a0, a2
2475
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: slli a3, a3, 16
2476
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a1, a1, a3
2477
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0
2478
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1
2479
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a0, a0, 32
2480
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a1, a1, 32
2481
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a2, a1, a0
2482
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a0, a1
2483
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a2, a0
2488
2484
; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret
2489
2485
;
2490
2486
; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_3:
2491
2487
; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry
2492
- ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lh a2, 0(a0)
2493
- ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lh a3, 0(a1)
2494
- ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2
2495
- ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3
2496
- ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: srli a2, a2, 16
2497
- ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: srli a3, a3, 16
2498
- ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB24_2
2499
- ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.1: # %loadbb1
2488
+ ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lhu a2, 0(a0)
2500
2489
; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lbu a0, 2(a0)
2490
+ ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lhu a3, 0(a1)
2501
2491
; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lbu a1, 2(a1)
2502
- ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sub a0, a0, a1
2503
- ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret
2504
- ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: .LBB24_2: # %res_block
2505
- ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a2, a3
2506
- ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: neg a0, a0
2507
- ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ori a0, a0, 1
2492
+ ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: pack a0, a2, a0
2493
+ ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: pack a1, a3, a1
2494
+ ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a0, a0
2495
+ ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a1, a1
2496
+ ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a2, a1, a0
2497
+ ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a0, a1
2498
+ ; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sub a0, a2, a0
2508
2499
; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret
2509
2500
;
2510
2501
; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_3:
2511
2502
; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry
2512
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lh a2, 0(a0)
2513
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lh a3, 0(a1)
2514
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2
2515
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3
2516
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a2, a2, 48
2517
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a3, a3, 48
2518
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB24_2
2519
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.1: # %loadbb1
2520
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lbu a0, 2(a0)
2521
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lbu a1, 2(a1)
2522
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a0, a1
2523
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret
2524
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: .LBB24_2: # %res_block
2525
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a2, a3
2526
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: neg a0, a0
2527
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ori a0, a0, 1
2503
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lbu a2, 2(a0)
2504
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lhu a0, 0(a0)
2505
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lbu a3, 2(a1)
2506
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lhu a1, 0(a1)
2507
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: slli a2, a2, 16
2508
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, a0, a2
2509
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: slli a3, a3, 16
2510
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a1, a1, a3
2511
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0
2512
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1
2513
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a0, a0, 32
2514
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a1, a1, 32
2515
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a2, a1, a0
2516
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a0, a1
2517
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a2, a0
2528
2518
; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret
2529
2519
;
2530
2520
; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_3:
@@ -2845,22 +2835,19 @@ define i32 @memcmp_size_5(ptr %s1, ptr %s2) nounwind optsize {
2845
2835
;
2846
2836
; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_5:
2847
2837
; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry
2848
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a2, 0(a0)
2849
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a3, 0(a1)
2850
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2
2851
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3
2852
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a2, a2, 32
2853
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a3, a3, 32
2854
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB26_2
2855
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.1: # %loadbb1
2856
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a0, 4(a0)
2857
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a1, 4(a1)
2858
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a0, a1
2859
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret
2860
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: .LBB26_2: # %res_block
2861
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a2, a3
2862
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: neg a0, a0
2863
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: ori a0, a0, 1
2838
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a2, 4(a0)
2839
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lwu a0, 0(a0)
2840
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a3, 4(a1)
2841
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lwu a1, 0(a1)
2842
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: slli a2, a2, 32
2843
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a0, a2
2844
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: slli a3, a3, 32
2845
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a1, a1, a3
2846
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0
2847
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1
2848
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a2, a1, a0
2849
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a0, a1
2850
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a2, a0
2864
2851
; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret
2865
2852
;
2866
2853
; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_5:
@@ -2883,22 +2870,17 @@ define i32 @memcmp_size_5(ptr %s1, ptr %s2) nounwind optsize {
2883
2870
;
2884
2871
; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_5:
2885
2872
; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry
2886
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a2, 0(a0)
2887
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a3, 0(a1)
2888
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2
2889
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3
2890
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a2, a2, 32
2891
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a3, a3, 32
2892
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB26_2
2893
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.1: # %loadbb1
2873
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lwu a2, 0(a0)
2894
2874
; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lbu a0, 4(a0)
2875
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lwu a3, 0(a1)
2895
2876
; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lbu a1, 4(a1)
2896
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a0, a1
2897
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret
2898
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: .LBB26_2: # %res_block
2899
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a2, a3
2900
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: neg a0, a0
2901
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ori a0, a0, 1
2877
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: pack a0, a2, a0
2878
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: pack a1, a3, a1
2879
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0
2880
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1
2881
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a2, a1, a0
2882
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a0, a1
2883
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a2, a0
2902
2884
; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret
2903
2885
;
2904
2886
; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_5:
@@ -3052,28 +3034,19 @@ define i32 @memcmp_size_6(ptr %s1, ptr %s2) nounwind optsize {
3052
3034
;
3053
3035
; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_6:
3054
3036
; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry
3055
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a2, 0(a0)
3056
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a3, 0(a1)
3057
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2
3058
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3
3059
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a2, a2, 32
3060
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a3, a3, 32
3061
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB27_3
3062
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.1: # %loadbb1
3063
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lh a0, 4(a0)
3064
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lh a1, 4(a1)
3065
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a0
3066
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a1
3067
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a2, a2, 48
3068
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a3, a3, 48
3069
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB27_3
3070
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.2:
3071
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: li a0, 0
3072
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret
3073
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: .LBB27_3: # %res_block
3074
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a2, a3
3075
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: neg a0, a0
3076
- ; CHECK-UNALIGNED-RV64-ZBB-NEXT: ori a0, a0, 1
3037
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lhu a2, 4(a0)
3038
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lwu a0, 0(a0)
3039
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lhu a3, 4(a1)
3040
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: lwu a1, 0(a1)
3041
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: slli a2, a2, 32
3042
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a0, a2
3043
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: slli a3, a3, 32
3044
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a1, a1, a3
3045
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0
3046
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1
3047
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a2, a1, a0
3048
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a0, a1
3049
+ ; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a2, a0
3077
3050
; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret
3078
3051
;
3079
3052
; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_6:
@@ -3102,28 +3075,17 @@ define i32 @memcmp_size_6(ptr %s1, ptr %s2) nounwind optsize {
3102
3075
;
3103
3076
; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_6:
3104
3077
; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry
3105
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a2, 0(a0)
3106
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a3, 0(a1)
3107
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2
3108
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3
3109
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a2, a2, 32
3110
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a3, a3, 32
3111
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB27_3
3112
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.1: # %loadbb1
3113
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lh a0, 4(a0)
3114
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lh a1, 4(a1)
3115
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a0
3116
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a1
3117
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a2, a2, 48
3118
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a3, a3, 48
3119
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB27_3
3120
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.2:
3121
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: li a0, 0
3122
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret
3123
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: .LBB27_3: # %res_block
3124
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a2, a3
3125
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: neg a0, a0
3126
- ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ori a0, a0, 1
3078
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lwu a2, 0(a0)
3079
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lhu a0, 4(a0)
3080
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lwu a3, 0(a1)
3081
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lhu a1, 4(a1)
3082
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: pack a0, a2, a0
3083
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: pack a1, a3, a1
3084
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0
3085
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1
3086
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a2, a1, a0
3087
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a0, a1
3088
+ ; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a2, a0
3127
3089
; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret
3128
3090
;
3129
3091
; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_6:
0 commit comments