================ @@ -112,42 +104,46 @@ entry: define i32 @bcmp_size_2(ptr %s1, ptr %s2) nounwind optsize { ; CHECK-ALIGNED-RV32-LABEL: bcmp_size_2: ; CHECK-ALIGNED-RV32: # %bb.0: # %entry -; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 -; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; CHECK-ALIGNED-RV32-NEXT: li a2, 2 -; CHECK-ALIGNED-RV32-NEXT: call bcmp -; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload -; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 +; CHECK-ALIGNED-RV32-NEXT: lbu a2, 1(a0) ---------------- wangpc-pp wrote:
This seems to be more complicated than what I was thinking. For this case, we generate i16 loads/compares, and then we expand them since unaligned loads are illegal. We may expand memcmp to byte loop directly when there is no unaligned access. https://github.com/llvm/llvm-project/pull/107548 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits