Sean Perry 27b5dc422c
Add target-byteorder for cases where endian in target triple is what matters (#107915)
I came across the subtly when setting up lit for z/OS and running it on
a Linux on Power machine. Linux on Power is little endian. This was
resulting in all of these tests being run even though the target triple
was z/OS which is big endian. The lit should really be checking if the
target is little endian not the host. The previous way didn't handle
cross compilation while running lit.
2024-09-23 13:00:44 -04:00

33 lines
935 B
LLVM

; Avoid `!DL->isLittleEndian() && !CLI->enableBigEndian()` missmatch on PPC64BE.
; REQUIRES: target-byteorder-little-endian
; -global-isel=1 is unsupported.
; XFAIL: target=loongarch{{.*}}
; XFAIL: target=nvptx{{.*}}
; XFAIL: target=sparc{{.*}}
; XFAIL: target=hexagon-{{.*}}
; RUN: llc < %s -O3 -global-isel=0 -fast-isel=0
; RUN: llc < %s -O3 -global-isel=1 -fast-isel=0
; RUN: llc < %s -O3 -global-isel=0 -fast-isel=1
; RUN: llc < %s -O0 -global-isel=0 -fast-isel=0
; RUN: llc < %s -O0 -global-isel=1 -fast-isel=0
; RUN: llc < %s -O0 -global-isel=0 -fast-isel=1
define i1 @test_runtime() local_unnamed_addr {
entry:
%allow = call i1 @llvm.allow.runtime.check(metadata !"test_check")
ret i1 %allow
}
declare i1 @llvm.allow.runtime.check(metadata) nounwind
define i1 @test_ubsan() local_unnamed_addr {
entry:
%allow = call i1 @llvm.allow.ubsan.check(i8 7)
ret i1 %allow
}
declare i1 @llvm.allow.ubsan.check(i8) nounwind