blob: 39c36eb6ba80e79a208d2d055114eb33f7a6c7c3 [file]
; 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: addi a1, a0, 288
; CHECK-NEXT: li a2, 54
; CHECK-NEXT: sh a1, 0(sp)
; CHECK-NEXT: sb a2, 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
}