; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6 ; RUN: opt -passes=expand-memcmp -mtriple=riscv64-unknown-elf -mattr=+unaligned-scalar-mem -S < %s | llc -mtriple=riscv64-unknown-elf -mattr=+unaligned-scalar-mem -O1 | FileCheck %s @.str.45 = constant [4 x i8] c" 16\00" @.str.47 = constant [4 x i8] c"-0E\00" declare i32 @memcmp(ptr, ptr, i64) define i1 @test() { ; CHECK-LABEL: test: ; CHECK: # %bb.0: # %domemcmp23 ; CHECK-NEXT: addi sp, sp, -64 ; CHECK-NEXT: .cfi_def_cfa_offset 64 ; CHECK-NEXT: .cfi_remember_state ; CHECK-NEXT: lui a0, 3 ; CHECK-NEXT: sb zero, 0(zero) ; CHECK-NEXT: li a1, 54 ; CHECK-NEXT: addi a2, a0, 288 ; CHECK-NEXT: sh a2, 0(sp) ; CHECK-NEXT: sb a1, 2(sp) ; CHECK-NEXT: bnez zero, .LBB0_2 ; CHECK-NEXT: # %bb.1: # %assertPassed44 ; CHECK-NEXT: lh a1, 0(zero) ; CHECK-NEXT: lbu a2, 2(zero) ; CHECK-NEXT: addi a0, a0, 45 ; CHECK-NEXT: xor a0, a1, a0 ; CHECK-NEXT: xori a1, a2, 69 ; CHECK-NEXT: or a0, a0, a1 ; CHECK-NEXT: slli a0, a0, 48 ; CHECK-NEXT: seqz a0, a0 ; CHECK-NEXT: addi sp, sp, 64 ; CHECK-NEXT: .cfi_def_cfa_offset 0 ; CHECK-NEXT: ret ; CHECK-NEXT: .LBB0_2: # %assertFailed45 domemcmp23: %buffer = alloca [64 x i8], align 1 store i8 0, ptr null, align 4294967296 %0 = getelementptr i8, ptr %buffer, i64 1 store i8 49, ptr %0, align 1 %1 = getelementptr i8, ptr %buffer, i64 2 store i8 32, ptr %buffer, align 1 store i8 54, ptr %1, align 1 %2 = call i32 @memcmp(ptr %buffer, ptr @.str.45, i64 3) %3 = icmp eq i32 %2, 0 br i1 %3, label %assertPassed44, label %assertFailed45 assertPassed44: %4 = call i32 @memcmp(ptr null, ptr @.str.47, i64 3) %5 = icmp eq i32 %4, 0 ret i1 %5 assertFailed45: unreachable }