Imported Upstream version 5.18.0.167

Former-commit-id: 289509151e0fee68a1b591a20c9f109c3c789d3a
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2018-10-20 08:25:10 +00:00
parent e19d552987
commit b084638f15
28489 changed files with 184 additions and 3866856 deletions

View File

@ -1,6 +0,0 @@
; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32--
define void @test() {
%tr1 = lshr i32 1, 0 ; <i32> [#uses=0]
ret void
}

View File

@ -1,7 +0,0 @@
; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32--
define void @main() {
%tr4 = shl i64 1, 0 ; <i64> [#uses=0]
ret void
}

View File

@ -1,9 +0,0 @@
; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32--
define void @main() {
%shamt = add i8 0, 1 ; <i8> [#uses=1]
%shift.upgrd.1 = zext i8 %shamt to i64 ; <i64> [#uses=1]
%tr2 = ashr i64 1, %shift.upgrd.1 ; <i64> [#uses=0]
ret void
}

View File

@ -1,4 +0,0 @@
; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32-- | not grep .comm.*X,0
@X = linkonce global { } zeroinitializer ; <{ }*> [#uses=0]

View File

@ -1,8 +0,0 @@
; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32--
define i32 @main() {
%setle = icmp sle i64 1, 0 ; <i1> [#uses=1]
%select = select i1 true, i1 %setle, i1 true ; <i1> [#uses=0]
ret i32 0
}

View File

@ -1,5 +0,0 @@
; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32--
define i64 @test() {
ret i64 undef
}

View File

@ -1,13 +0,0 @@
; this should not crash the ppc backend
; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32--
define i32 @test(i32 %j.0.0.i) {
%tmp.85.i = and i32 %j.0.0.i, 7 ; <i32> [#uses=1]
%tmp.161278.i = bitcast i32 %tmp.85.i to i32 ; <i32> [#uses=1]
%tmp.5.i77.i = lshr i32 %tmp.161278.i, 3 ; <i32> [#uses=1]
ret i32 %tmp.5.i77.i
}

View File

@ -1,11 +0,0 @@
; This function should have exactly one call to fixdfdi, no more!
; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32-- -mattr=-64bit | \
; RUN: grep "bl .*fixdfdi" | count 1
define double @test2(double %tmp.7705) {
%mem_tmp.2.0.in = fptosi double %tmp.7705 to i64 ; <i64> [#uses=1]
%mem_tmp.2.0 = sitofp i64 %mem_tmp.2.0.in to double ; <double> [#uses=1]
ret double %mem_tmp.2.0
}

View File

@ -1,11 +0,0 @@
; This was erroneously being turned into an rlwinm instruction.
; The sign bit does matter in this case.
; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32-- | grep srawi
define i32 @test(i32 %X) {
%Y = and i32 %X, -2 ; <i32> [#uses=1]
%Z = ashr i32 %Y, 11 ; <i32> [#uses=1]
ret i32 %Z
}

View File

@ -1,18 +0,0 @@
; RUN: llc -verify-machineinstrs < %s
target datalayout = "E-p:32:32"
target triple = "powerpc-apple-darwin8.2.0"
define void @bar(i32 %G, i32 %E, i32 %F, i32 %A, i32 %B, i32 %C, i32 %D, i8* %fmt, ...) {
%ap = alloca i8* ; <i8**> [#uses=2]
%va.upgrd.1 = bitcast i8** %ap to i8* ; <i8*> [#uses=1]
call void @llvm.va_start( i8* %va.upgrd.1 )
%tmp.1 = load i8*, i8** %ap ; <i8*> [#uses=1]
%tmp.0 = call double @foo( i8* %tmp.1 ) ; <double> [#uses=0]
ret void
}
declare void @llvm.va_start(i8*)
declare double @foo(i8*)

View File

@ -1,10 +0,0 @@
; RUN: llc -verify-machineinstrs < %s | not grep ", f1"
target datalayout = "E-p:32:32"
target triple = "powerpc-apple-darwin8.2.0"
; Dead argument should reserve an FP register.
define double @bar(double %DEAD, double %X, double %Y) {
%tmp.2 = fadd double %X, %Y ; <double> [#uses=1]
ret double %tmp.2
}

View File

@ -1,20 +0,0 @@
; RUN: llc -verify-machineinstrs < %s
; REQUIRES: default_triple
define void @iterative_hash_host_wide_int() {
%zero = alloca i32 ; <i32*> [#uses=2]
%b = alloca i32 ; <i32*> [#uses=1]
store i32 0, i32* %zero
%tmp = load i32, i32* %zero ; <i32> [#uses=1]
%tmp5 = bitcast i32 %tmp to i32 ; <i32> [#uses=1]
%tmp6.u = add i32 %tmp5, 32 ; <i32> [#uses=1]
%tmp6 = bitcast i32 %tmp6.u to i32 ; <i32> [#uses=1]
%tmp7 = load i64, i64* null ; <i64> [#uses=1]
%tmp6.upgrd.1 = trunc i32 %tmp6 to i8 ; <i8> [#uses=1]
%shift.upgrd.2 = zext i8 %tmp6.upgrd.1 to i64 ; <i64> [#uses=1]
%tmp8 = ashr i64 %tmp7, %shift.upgrd.2 ; <i64> [#uses=1]
%tmp8.upgrd.3 = trunc i64 %tmp8 to i32 ; <i32> [#uses=1]
store i32 %tmp8.upgrd.3, i32* %b
unreachable
}

View File

@ -1,9 +0,0 @@
; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32--
define double @CalcSpeed(float %tmp127) {
%tmp145 = fpext float %tmp127 to double ; <double> [#uses=1]
%tmp150 = call double asm "frsqrte $0,$1", "=f,f"( double %tmp145 ) ; <double> [#uses=1]
ret double %tmp150
}

View File

@ -1,10 +0,0 @@
; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc-apple-darwin8 -mcpu=g5 | \
; RUN: grep "vspltish v.*, 10"
define void @test(<8 x i16>* %P) {
%tmp = load <8 x i16>, <8 x i16>* %P ; <<8 x i16>> [#uses=1]
%tmp1 = add <8 x i16> %tmp, < i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10 > ; <<8 x i16>> [#uses=1]
store <8 x i16> %tmp1, <8 x i16>* %P
ret void
}

View File

@ -1,58 +0,0 @@
; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32-- -mcpu=g5
; END.
define void @test(i8* %stack) {
entry:
%tmp9 = icmp eq i32 0, 0 ; <i1> [#uses=1]
%tmp30 = icmp eq i32 0, 0 ; <i1> [#uses=1]
br i1 %tmp30, label %cond_next54, label %cond_true31
cond_true860: ; preds = %bb855
%tmp879 = tail call <4 x float> @llvm.ppc.altivec.vmaddfp( <4 x float> zeroinitializer, <4 x float> zeroinitializer, <4 x float> zeroinitializer ) ; <<4 x float>> [#uses=1]
%tmp880 = bitcast <4 x float> %tmp879 to <4 x i32> ; <<4 x i32>> [#uses=2]
%tmp883 = shufflevector <4 x i32> %tmp880, <4 x i32> undef, <4 x i32> < i32 1, i32 1, i32 1, i32 1 > ; <<4 x i32>> [#uses=1]
%tmp883.upgrd.1 = bitcast <4 x i32> %tmp883 to <4 x float> ; <<4 x float>> [#uses=1]
%tmp885 = shufflevector <4 x i32> %tmp880, <4 x i32> undef, <4 x i32> < i32 2, i32 2, i32 2, i32 2 > ; <<4 x i32>> [#uses=1]
%tmp885.upgrd.2 = bitcast <4 x i32> %tmp885 to <4 x float> ; <<4 x float>> [#uses=1]
br label %cond_next905
cond_true31: ; preds = %entry
ret void
cond_next54: ; preds = %entry
br i1 %tmp9, label %cond_false385, label %bb279
bb279: ; preds = %cond_next54
ret void
cond_false385: ; preds = %cond_next54
%tmp388 = icmp eq i32 0, 0 ; <i1> [#uses=1]
br i1 %tmp388, label %cond_next463, label %cond_true389
cond_true389: ; preds = %cond_false385
ret void
cond_next463: ; preds = %cond_false385
%tmp1208107 = icmp ugt i8* null, %stack ; <i1> [#uses=1]
br i1 %tmp1208107, label %cond_true1209.preheader, label %bb1212
cond_true498: ; preds = %cond_true1209.preheader
ret void
cond_true519: ; preds = %cond_true1209.preheader
%bothcond = or i1 false, false ; <i1> [#uses=1]
br i1 %bothcond, label %bb855, label %bb980
cond_false548: ; preds = %cond_true1209.preheader
ret void
bb855: ; preds = %cond_true519
%tmp859 = icmp eq i32 0, 0 ; <i1> [#uses=1]
br i1 %tmp859, label %cond_true860, label %cond_next905
cond_next905: ; preds = %bb855, %cond_true860
%vfpw2.4 = phi <4 x float> [ %tmp885.upgrd.2, %cond_true860 ], [ undef, %bb855 ] ; <<4 x float>> [#uses=0]
%vfpw1.4 = phi <4 x float> [ %tmp883.upgrd.1, %cond_true860 ], [ undef, %bb855 ] ; <<4 x float>> [#uses=0]
%tmp930 = bitcast <4 x float> zeroinitializer to <4 x i32> ; <<4 x i32>> [#uses=0]
ret void
bb980: ; preds = %cond_true519
ret void
cond_true1209.preheader: ; preds = %cond_next463
%tmp496 = and i32 0, 12288 ; <i32> [#uses=1]
switch i32 %tmp496, label %cond_false548 [
i32 0, label %cond_true498
i32 4096, label %cond_true519
]
bb1212: ; preds = %cond_next463
ret void
}
declare <4 x float> @llvm.ppc.altivec.vmaddfp(<4 x float>, <4 x float>, <4 x float>)

View File

@ -1,55 +0,0 @@
; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32--
; END.
%struct.attr_desc = type { i8*, %struct.attr_desc*, %struct.attr_value*, %struct.attr_value*, i32 }
%struct.attr_value = type { %struct.rtx_def*, %struct.attr_value*, %struct.insn_ent*, i32, i32 }
%struct.insn_def = type { %struct.insn_def*, %struct.rtx_def*, i32, i32, i32, i32, i32 }
%struct.insn_ent = type { %struct.insn_ent*, %struct.insn_def* }
%struct.rtx_def = type { i16, i8, i8, %struct.u }
%struct.u = type { [1 x i64] }
define void @find_attr() {
entry:
%tmp26 = icmp eq %struct.attr_desc* null, null ; <i1> [#uses=1]
br i1 %tmp26, label %bb30, label %cond_true27
cond_true27: ; preds = %entry
ret void
bb30: ; preds = %entry
%tmp67 = icmp eq %struct.attr_desc* null, null ; <i1> [#uses=1]
br i1 %tmp67, label %cond_next92, label %cond_true68
cond_true68: ; preds = %bb30
ret void
cond_next92: ; preds = %bb30
%tmp173 = getelementptr %struct.attr_desc, %struct.attr_desc* null, i32 0, i32 4 ; <i32*> [#uses=2]
%tmp174 = load i32, i32* %tmp173 ; <i32> [#uses=1]
%tmp177 = and i32 %tmp174, -9 ; <i32> [#uses=1]
store i32 %tmp177, i32* %tmp173
%tmp180 = getelementptr %struct.attr_desc, %struct.attr_desc* null, i32 0, i32 4 ; <i32*> [#uses=1]
%tmp181 = load i32, i32* %tmp180 ; <i32> [#uses=1]
%tmp185 = getelementptr %struct.attr_desc, %struct.attr_desc* null, i32 0, i32 4 ; <i32*> [#uses=2]
%tmp186 = load i32, i32* %tmp185 ; <i32> [#uses=1]
%tmp183187 = shl i32 %tmp181, 1 ; <i32> [#uses=1]
%tmp188 = and i32 %tmp183187, 16 ; <i32> [#uses=1]
%tmp190 = and i32 %tmp186, -17 ; <i32> [#uses=1]
%tmp191 = or i32 %tmp190, %tmp188 ; <i32> [#uses=1]
store i32 %tmp191, i32* %tmp185
%tmp193 = getelementptr %struct.attr_desc, %struct.attr_desc* null, i32 0, i32 4 ; <i32*> [#uses=1]
%tmp194 = load i32, i32* %tmp193 ; <i32> [#uses=1]
%tmp198 = getelementptr %struct.attr_desc, %struct.attr_desc* null, i32 0, i32 4 ; <i32*> [#uses=2]
%tmp199 = load i32, i32* %tmp198 ; <i32> [#uses=1]
%tmp196200 = shl i32 %tmp194, 2 ; <i32> [#uses=1]
%tmp201 = and i32 %tmp196200, 64 ; <i32> [#uses=1]
%tmp203 = and i32 %tmp199, -65 ; <i32> [#uses=1]
%tmp204 = or i32 %tmp203, %tmp201 ; <i32> [#uses=1]
store i32 %tmp204, i32* %tmp198
%tmp206 = getelementptr %struct.attr_desc, %struct.attr_desc* null, i32 0, i32 4 ; <i32*> [#uses=1]
%tmp207 = load i32, i32* %tmp206 ; <i32> [#uses=1]
%tmp211 = getelementptr %struct.attr_desc, %struct.attr_desc* null, i32 0, i32 4 ; <i32*> [#uses=2]
%tmp212 = load i32, i32* %tmp211 ; <i32> [#uses=1]
%tmp209213 = shl i32 %tmp207, 1 ; <i32> [#uses=1]
%tmp214 = and i32 %tmp209213, 128 ; <i32> [#uses=1]
%tmp216 = and i32 %tmp212, -129 ; <i32> [#uses=1]
%tmp217 = or i32 %tmp216, %tmp214 ; <i32> [#uses=1]
store i32 %tmp217, i32* %tmp211
ret void
}

View File

@ -1,33 +0,0 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64le-unknown-linux-gnu | FileCheck %s
@lens = external global i8* ; <i8**> [#uses=1]
@vals = external global i32* ; <i32**> [#uses=1]
define i32 @test(i32 %i) {
; CHECK-LABEL: test:
; CHECK: # %bb.0:
; CHECK-NEXT: addis 4, 2, .LC0@toc@ha
; CHECK-NEXT: extsw 3, 3
; CHECK-NEXT: addis 5, 2, .LC1@toc@ha
; CHECK-NEXT: ld 4, .LC0@toc@l(4)
; CHECK-NEXT: ld 4, 0(4)
; CHECK-NEXT: lbzx 3, 4, 3
; CHECK-NEXT: ld 4, .LC1@toc@l(5)
; CHECK-NEXT: subfic 3, 3, 1
; CHECK-NEXT: extsw 3, 3
; CHECK-NEXT: ld 4, 0(4)
; CHECK-NEXT: sldi 3, 3, 2
; CHECK-NEXT: lwzx 3, 4, 3
; CHECK-NEXT: blr
%tmp = load i8*, i8** @lens ; <i8*> [#uses=1]
%tmp1 = getelementptr i8, i8* %tmp, i32 %i ; <i8*> [#uses=1]
%tmp.upgrd.1 = load i8, i8* %tmp1 ; <i8> [#uses=1]
%tmp2 = zext i8 %tmp.upgrd.1 to i32 ; <i32> [#uses=1]
%tmp3 = load i32*, i32** @vals ; <i32*> [#uses=1]
%tmp5 = sub i32 1, %tmp2 ; <i32> [#uses=1]
%tmp6 = getelementptr i32, i32* %tmp3, i32 %tmp5 ; <i32*> [#uses=1]
%tmp7 = load i32, i32* %tmp6 ; <i32> [#uses=1]
ret i32 %tmp7
}

View File

@ -1,11 +0,0 @@
; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32--
define void @img2buf(i32 %symbol_size_in_bytes, i16* %ui16) nounwind {
%tmp93 = load i16, i16* null ; <i16> [#uses=1]
%tmp99 = call i16 @llvm.bswap.i16( i16 %tmp93 ) ; <i16> [#uses=1]
store i16 %tmp99, i16* %ui16
ret void
}
declare i16 @llvm.bswap.i16(i16)

View File

@ -1,8 +0,0 @@
; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32-- -mcpu=g5 | grep vsldoi
; RUN: llc -verify-machineinstrs < %s -mtriple=ppc32-- -mcpu=g5 | not grep vor
define <4 x float> @func(<4 x float> %fp0, <4 x float> %fp1) {
%tmp76 = shufflevector <4 x float> %fp0, <4 x float> %fp1, <4 x i32> < i32 0, i32 1, i32 2, i32 7 > ; <<4 x float>> [#uses=1]
ret <4 x float> %tmp76
}

View File

@ -1,31 +0,0 @@
; RUN: llc -verify-machineinstrs < %s
; REQUIRES: default_triple
%struct..0anon = type { i32 }
%struct.rtx_def = type { i16, i8, i8, [1 x %struct..0anon] }
define fastcc void @immed_double_const(i32 %i0, i32 %i1) {
entry:
%tmp1 = load i32, i32* null ; <i32> [#uses=1]
switch i32 %tmp1, label %bb103 [
i32 1, label %bb
i32 3, label %bb
]
bb: ; preds = %entry, %entry
%tmp14 = icmp sgt i32 0, 31 ; <i1> [#uses=1]
br i1 %tmp14, label %cond_next77, label %cond_next17
cond_next17: ; preds = %bb
ret void
cond_next77: ; preds = %bb
%tmp79.not = icmp ne i32 %i1, 0 ; <i1> [#uses=1]
%tmp84 = icmp slt i32 %i0, 0 ; <i1> [#uses=2]
%bothcond1 = or i1 %tmp79.not, %tmp84 ; <i1> [#uses=1]
br i1 %bothcond1, label %bb88, label %bb99
bb88: ; preds = %cond_next77
%bothcond2 = and i1 false, %tmp84 ; <i1> [#uses=0]
ret void
bb99: ; preds = %cond_next77
ret void
bb103: ; preds = %entry
ret void
}

Some files were not shown because too many files have changed in this diff Show More