
The LIT test cases were migrated with the script provided by Nikita Popov. No manual changes were made. Committed without review since no functional changes, after consultation with uweigand.
29 lines
952 B
LLVM
29 lines
952 B
LLVM
; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -O3 -stop-before=finalize-isel \
|
|
; RUN: | FileCheck %s
|
|
;
|
|
; Check that an i1 in memory used in a comparison is loaded correctly.
|
|
|
|
@bPtr = external dso_local local_unnamed_addr global ptr, align 8
|
|
@c = external hidden unnamed_addr global i1, align 4
|
|
|
|
define i64 @main() {
|
|
; CHECK-LABEL: bb.0.entry:
|
|
; CHECK: %1:addr64bit = LARL @c
|
|
; CHECK: %2:gr64bit = LLGC %1, 0, $noreg :: (dereferenceable load (s8) from @c, align 4)
|
|
; CHECK-NEXT: %4:gr64bit = IMPLICIT_DEF
|
|
; CHECK-NEXT: %3:gr64bit = RISBGN %4, killed %2, 63, 191, 0
|
|
; CHECK-NEXT: %5:gr64bit = LCGR killed %3, implicit-def dead $cc
|
|
; CHECK-NEXT: CGHI killed %5, 1, implicit-def $cc
|
|
entry:
|
|
%0 = load ptr, ptr @bPtr
|
|
store i1 true, ptr @c
|
|
store i32 8, ptr %0
|
|
%.b = load i1, ptr @c
|
|
%conv.i = select i1 %.b, i64 1, i64 3
|
|
%div.i = sdiv i64 -1, %conv.i
|
|
%cmp.i = icmp eq i64 %div.i, 1
|
|
%conv2.i = zext i1 %cmp.i to i64
|
|
ret i64 %conv2.i
|
|
}
|
|
|