test: modernise ARM CodeGen tests

Replace the use of grep with FileCheck.  Tidy up some of the tests.  A
few of the tests have been left as weak as previously, though some have
been made more stringent.

llvm-svn: 290616
This commit is contained in:
Saleem Abdulrasool 2016-12-27 18:35:19 +00:00
parent b222549dc5
commit 0ce0dc250c
14 changed files with 1612 additions and 1538 deletions

View File

@ -1,52 +1,53 @@
; REQUIRES: asserts
; RUN: llc < %s -mtriple=arm-apple-darwin -relocation-model=pic \
; RUN: -mattr=+v6 | grep r9
; RUN: llc < %s -mtriple=arm-apple-darwin -relocation-model=pic \
; RUN: -mattr=+v6,+reserve-r9 -ifcvt-limit=0 -stats 2>&1 | grep asm-printer
; | grep 35
; RUN: llc -mtriple arm-apple-darwin -relocation-model pic -mattr=+v6 -filetype asm -o - %s | FileCheck -check-prefix CHECK-R9 %s
; RUN: llc -mtriple arm-apple-darwin -relocation-model pic -mattr=+v6,+reserve-r9 -ifcvt-limit=0 -stats -o /dev/null %s 2>&1 | FileCheck -check-prefix CHECK-ASM-PRINTER %s
define void @test(i32 %tmp56222, i32 %tmp36224, i32 %tmp46223, i32 %i.0196.0.ph, i32 %tmp8, i32* %tmp1011, i32** %tmp1, i32* %d2.1.out, i32* %d3.1.out, i32* %d0.1.out, i32* %d1.1.out) {
newFuncRoot:
br label %bb74
bb78.exitStub: ; preds = %bb74
bb78.exitStub:
store i32 %d2.1, i32* %d2.1.out
store i32 %d3.1, i32* %d3.1.out
store i32 %d0.1, i32* %d0.1.out
store i32 %d1.1, i32* %d1.1.out
ret void
bb74: ; preds = %bb26, %newFuncRoot
%fp.1.rec = phi i32 [ 0, %newFuncRoot ], [ %tmp71.rec, %bb26 ] ; <i32> [#uses=3]
%fm.1.in = phi i32* [ %tmp71, %bb26 ], [ %tmp1011, %newFuncRoot ] ; <i32*> [#uses=1]
%d0.1 = phi i32 [ %tmp44, %bb26 ], [ 8192, %newFuncRoot ] ; <i32> [#uses=2]
%d1.1 = phi i32 [ %tmp54, %bb26 ], [ 8192, %newFuncRoot ] ; <i32> [#uses=2]
%d2.1 = phi i32 [ %tmp64, %bb26 ], [ 8192, %newFuncRoot ] ; <i32> [#uses=2]
%d3.1 = phi i32 [ %tmp69, %bb26 ], [ 8192, %newFuncRoot ] ; <i32> [#uses=2]
%fm.1 = load i32, i32* %fm.1.in ; <i32> [#uses=4]
icmp eq i32 %fp.1.rec, %tmp8 ; <i1>:0 [#uses=1]
bb74:
%fp.1.rec = phi i32 [ 0, %newFuncRoot ], [ %tmp71.rec, %bb26 ]
%fm.1.in = phi i32* [ %tmp71, %bb26 ], [ %tmp1011, %newFuncRoot ]
%d0.1 = phi i32 [ %tmp44, %bb26 ], [ 8192, %newFuncRoot ]
%d1.1 = phi i32 [ %tmp54, %bb26 ], [ 8192, %newFuncRoot ]
%d2.1 = phi i32 [ %tmp64, %bb26 ], [ 8192, %newFuncRoot ]
%d3.1 = phi i32 [ %tmp69, %bb26 ], [ 8192, %newFuncRoot ]
%fm.1 = load i32, i32* %fm.1.in
icmp eq i32 %fp.1.rec, %tmp8
br i1 %0, label %bb78.exitStub, label %bb26
bb26: ; preds = %bb74
%tmp28 = getelementptr i32*, i32** %tmp1, i32 %fp.1.rec ; <i32**> [#uses=1]
%tmp30 = load i32*, i32** %tmp28 ; <i32*> [#uses=4]
%tmp33 = getelementptr i32, i32* %tmp30, i32 %i.0196.0.ph ; <i32*> [#uses=1]
%tmp34 = load i32, i32* %tmp33 ; <i32> [#uses=1]
%tmp38 = getelementptr i32, i32* %tmp30, i32 %tmp36224 ; <i32*> [#uses=1]
%tmp39 = load i32, i32* %tmp38 ; <i32> [#uses=1]
%tmp42 = mul i32 %tmp34, %fm.1 ; <i32> [#uses=1]
%tmp44 = add i32 %tmp42, %d0.1 ; <i32> [#uses=1]
%tmp48 = getelementptr i32, i32* %tmp30, i32 %tmp46223 ; <i32*> [#uses=1]
%tmp49 = load i32, i32* %tmp48 ; <i32> [#uses=1]
%tmp52 = mul i32 %tmp39, %fm.1 ; <i32> [#uses=1]
%tmp54 = add i32 %tmp52, %d1.1 ; <i32> [#uses=1]
%tmp58 = getelementptr i32, i32* %tmp30, i32 %tmp56222 ; <i32*> [#uses=1]
%tmp59 = load i32, i32* %tmp58 ; <i32> [#uses=1]
%tmp62 = mul i32 %tmp49, %fm.1 ; <i32> [#uses=1]
%tmp64 = add i32 %tmp62, %d2.1 ; <i32> [#uses=1]
%tmp67 = mul i32 %tmp59, %fm.1 ; <i32> [#uses=1]
%tmp69 = add i32 %tmp67, %d3.1 ; <i32> [#uses=1]
%tmp71.rec = add i32 %fp.1.rec, 1 ; <i32> [#uses=2]
%tmp71 = getelementptr i32, i32* %tmp1011, i32 %tmp71.rec ; <i32*> [#uses=1]
bb26:
%tmp28 = getelementptr i32*, i32** %tmp1, i32 %fp.1.rec
%tmp30 = load i32*, i32** %tmp28
%tmp33 = getelementptr i32, i32* %tmp30, i32 %i.0196.0.ph
%tmp34 = load i32, i32* %tmp33
%tmp38 = getelementptr i32, i32* %tmp30, i32 %tmp36224
%tmp39 = load i32, i32* %tmp38
%tmp42 = mul i32 %tmp34, %fm.1
%tmp44 = add i32 %tmp42, %d0.1
%tmp48 = getelementptr i32, i32* %tmp30, i32 %tmp46223
%tmp49 = load i32, i32* %tmp48
%tmp52 = mul i32 %tmp39, %fm.1
%tmp54 = add i32 %tmp52, %d1.1
%tmp58 = getelementptr i32, i32* %tmp30, i32 %tmp56222
%tmp59 = load i32, i32* %tmp58
%tmp62 = mul i32 %tmp49, %fm.1
%tmp64 = add i32 %tmp62, %d2.1
%tmp67 = mul i32 %tmp59, %fm.1
%tmp69 = add i32 %tmp67, %d3.1
%tmp71.rec = add i32 %fp.1.rec, 1
%tmp71 = getelementptr i32, i32* %tmp1011, i32 %tmp71.rec
br label %bb74
}
; CHECK-R9: r9
; CHECK-ASM-PRINTER: asm-printer

View File

@ -1,16 +1,15 @@
; RUN: llc < %s -mtriple=arm-apple-darwin -relocation-model=pic | \
; RUN: not grep LPC9
; RUN: llc -mtriple arm-apple-darwin -relocation-model pic -filetype asm -o - %s | FileCheck %s
%struct.B = type { i32 }
%struct.anon = type { void (%struct.B*)*, i32 }
@str = internal constant [7 x i8] c"i, %d\0A\00" ; <[7 x i8]*> [#uses=1]
@str1 = internal constant [7 x i8] c"j, %d\0A\00" ; <[7 x i8]*> [#uses=1]
%struct.B = type { i32 }
%struct.anon = type { void (%struct.B*)*, i32 }
@str = internal constant [7 x i8] c"i, %d\0A\00"
@str1 = internal constant [7 x i8] c"j, %d\0A\00"
define internal void @_ZN1B1iEv(%struct.B* %this) {
entry:
%tmp1 = getelementptr %struct.B, %struct.B* %this, i32 0, i32 0 ; <i32*> [#uses=1]
%tmp2 = load i32, i32* %tmp1 ; <i32> [#uses=1]
%tmp4 = tail call i32 (i8*, ...) @printf( i8* getelementptr ([7 x i8], [7 x i8]* @str, i32 0, i32 0), i32 %tmp2 ) ; <i32> [#uses=0]
%tmp1 = getelementptr %struct.B, %struct.B* %this, i32 0, i32 0
%tmp2 = load i32, i32* %tmp1
%tmp4 = tail call i32 (i8*, ...) @printf(i8* getelementptr ([7 x i8], [7 x i8]* @str, i32 0, i32 0), i32 %tmp2)
ret void
}
@ -18,82 +17,85 @@ declare i32 @printf(i8*, ...)
define internal void @_ZN1B1jEv(%struct.B* %this) {
entry:
%tmp1 = getelementptr %struct.B, %struct.B* %this, i32 0, i32 0 ; <i32*> [#uses=1]
%tmp2 = load i32, i32* %tmp1 ; <i32> [#uses=1]
%tmp4 = tail call i32 (i8*, ...) @printf( i8* getelementptr ([7 x i8], [7 x i8]* @str1, i32 0, i32 0), i32 %tmp2 ) ; <i32> [#uses=0]
%tmp1 = getelementptr %struct.B, %struct.B* %this, i32 0, i32 0
%tmp2 = load i32, i32* %tmp1
%tmp4 = tail call i32 (i8*, ...) @printf(i8* getelementptr ([7 x i8], [7 x i8]* @str1, i32 0, i32 0), i32 %tmp2)
ret void
}
define i32 @main() {
entry:
%b.i29 = alloca %struct.B, align 4 ; <%struct.B*> [#uses=3]
%b.i1 = alloca %struct.B, align 4 ; <%struct.B*> [#uses=3]
%b.i = alloca %struct.B, align 4 ; <%struct.B*> [#uses=3]
%tmp2.i = getelementptr %struct.B, %struct.B* %b.i, i32 0, i32 0 ; <i32*> [#uses=1]
%b.i29 = alloca %struct.B, align 4
%b.i1 = alloca %struct.B, align 4
%b.i = alloca %struct.B, align 4
%tmp2.i = getelementptr %struct.B, %struct.B* %b.i, i32 0, i32 0
store i32 4, i32* %tmp2.i
br i1 icmp eq (i64 and (i64 zext (i32 ptrtoint (void (%struct.B*)* @_ZN1B1iEv to i32) to i64), i64 4294967296), i64 0), label %_Z3fooiM1BFvvE.exit, label %cond_true.i
cond_true.i: ; preds = %entry
%b2.i = bitcast %struct.B* %b.i to i8* ; <i8*> [#uses=1]
%ctg23.i = getelementptr i8, i8* %b2.i, i32 ashr (i32 trunc (i64 lshr (i64 zext (i32 ptrtoint (void (%struct.B*)* @_ZN1B1iEv to i32) to i64), i64 32) to i32), i32 1) ; <i8*> [#uses=1]
%tmp121314.i = bitcast i8* %ctg23.i to i32 (...)*** ; <i32 (...)***> [#uses=1]
%tmp15.i = load i32 (...)**, i32 (...)*** %tmp121314.i ; <i32 (...)**> [#uses=1]
%tmp151.i = bitcast i32 (...)** %tmp15.i to i8* ; <i8*> [#uses=1]
%ctg2.i = getelementptr i8, i8* %tmp151.i, i32 ptrtoint (void (%struct.B*)* @_ZN1B1iEv to i32) ; <i8*> [#uses=1]
%tmp2021.i = bitcast i8* %ctg2.i to i32 (...)** ; <i32 (...)**> [#uses=1]
%tmp22.i = load i32 (...)*, i32 (...)** %tmp2021.i ; <i32 (...)*> [#uses=1]
%tmp2223.i = bitcast i32 (...)* %tmp22.i to void (%struct.B*)* ; <void (%struct.B*)*> [#uses=1]
cond_true.i:
%b2.i = bitcast %struct.B* %b.i to i8*
%ctg23.i = getelementptr i8, i8* %b2.i, i32 ashr (i32 trunc (i64 lshr (i64 zext (i32 ptrtoint (void (%struct.B*)* @_ZN1B1iEv to i32) to i64), i64 32) to i32), i32 1)
%tmp121314.i = bitcast i8* %ctg23.i to i32 (...)***
%tmp15.i = load i32 (...)**, i32 (...)*** %tmp121314.i
%tmp151.i = bitcast i32 (...)** %tmp15.i to i8*
%ctg2.i = getelementptr i8, i8* %tmp151.i, i32 ptrtoint (void (%struct.B*)* @_ZN1B1iEv to i32)
%tmp2021.i = bitcast i8* %ctg2.i to i32 (...)**
%tmp22.i = load i32 (...)*, i32 (...)** %tmp2021.i
%tmp2223.i = bitcast i32 (...)* %tmp22.i to void (%struct.B*)*
br label %_Z3fooiM1BFvvE.exit
_Z3fooiM1BFvvE.exit: ; preds = %cond_true.i, %entry
%iftmp.2.0.i = phi void (%struct.B*)* [ %tmp2223.i, %cond_true.i ], [ inttoptr (i32 ptrtoint (void (%struct.B*)* @_ZN1B1iEv to i32) to void (%struct.B*)*), %entry ] ; <void (%struct.B*)*> [#uses=1]
%b4.i = bitcast %struct.B* %b.i to i8* ; <i8*> [#uses=1]
%ctg25.i = getelementptr i8, i8* %b4.i, i32 ashr (i32 trunc (i64 lshr (i64 zext (i32 ptrtoint (void (%struct.B*)* @_ZN1B1iEv to i32) to i64), i64 32) to i32), i32 1) ; <i8*> [#uses=1]
%tmp3031.i = bitcast i8* %ctg25.i to %struct.B* ; <%struct.B*> [#uses=1]
call void %iftmp.2.0.i( %struct.B* %tmp3031.i )
%tmp2.i30 = getelementptr %struct.B, %struct.B* %b.i29, i32 0, i32 0 ; <i32*> [#uses=1]
_Z3fooiM1BFvvE.exit:
%iftmp.2.0.i = phi void (%struct.B*)* [ %tmp2223.i, %cond_true.i ], [ inttoptr (i32 ptrtoint (void (%struct.B*)* @_ZN1B1iEv to i32) to void (%struct.B*)*), %entry ]
%b4.i = bitcast %struct.B* %b.i to i8*
%ctg25.i = getelementptr i8, i8* %b4.i, i32 ashr (i32 trunc (i64 lshr (i64 zext (i32 ptrtoint (void (%struct.B*)* @_ZN1B1iEv to i32) to i64), i64 32) to i32), i32 1)
%tmp3031.i = bitcast i8* %ctg25.i to %struct.B*
call void %iftmp.2.0.i(%struct.B* %tmp3031.i)
%tmp2.i30 = getelementptr %struct.B, %struct.B* %b.i29, i32 0, i32 0
store i32 6, i32* %tmp2.i30
br i1 icmp eq (i64 and (i64 zext (i32 ptrtoint (void (%struct.B*)* @_ZN1B1jEv to i32) to i64), i64 4294967296), i64 0), label %_Z3fooiM1BFvvE.exit56, label %cond_true.i46
cond_true.i46: ; preds = %_Z3fooiM1BFvvE.exit
%b2.i35 = bitcast %struct.B* %b.i29 to i8* ; <i8*> [#uses=1]
%ctg23.i36 = getelementptr i8, i8* %b2.i35, i32 ashr (i32 trunc (i64 lshr (i64 zext (i32 ptrtoint (void (%struct.B*)* @_ZN1B1jEv to i32) to i64), i64 32) to i32), i32 1) ; <i8*> [#uses=1]
%tmp121314.i37 = bitcast i8* %ctg23.i36 to i32 (...)*** ; <i32 (...)***> [#uses=1]
%tmp15.i38 = load i32 (...)**, i32 (...)*** %tmp121314.i37 ; <i32 (...)**> [#uses=1]
%tmp151.i41 = bitcast i32 (...)** %tmp15.i38 to i8* ; <i8*> [#uses=1]
%ctg2.i42 = getelementptr i8, i8* %tmp151.i41, i32 ptrtoint (void (%struct.B*)* @_ZN1B1jEv to i32) ; <i8*> [#uses=1]
%tmp2021.i43 = bitcast i8* %ctg2.i42 to i32 (...)** ; <i32 (...)**> [#uses=1]
%tmp22.i44 = load i32 (...)*, i32 (...)** %tmp2021.i43 ; <i32 (...)*> [#uses=1]
%tmp2223.i45 = bitcast i32 (...)* %tmp22.i44 to void (%struct.B*)* ; <void (%struct.B*)*> [#uses=1]
cond_true.i46:
%b2.i35 = bitcast %struct.B* %b.i29 to i8*
%ctg23.i36 = getelementptr i8, i8* %b2.i35, i32 ashr (i32 trunc (i64 lshr (i64 zext (i32 ptrtoint (void (%struct.B*)* @_ZN1B1jEv to i32) to i64), i64 32) to i32), i32 1)
%tmp121314.i37 = bitcast i8* %ctg23.i36 to i32 (...)***
%tmp15.i38 = load i32 (...)**, i32 (...)*** %tmp121314.i37
%tmp151.i41 = bitcast i32 (...)** %tmp15.i38 to i8*
%ctg2.i42 = getelementptr i8, i8* %tmp151.i41, i32 ptrtoint (void (%struct.B*)* @_ZN1B1jEv to i32)
%tmp2021.i43 = bitcast i8* %ctg2.i42 to i32 (...)**
%tmp22.i44 = load i32 (...)*, i32 (...)** %tmp2021.i43
%tmp2223.i45 = bitcast i32 (...)* %tmp22.i44 to void (%struct.B*)*
br label %_Z3fooiM1BFvvE.exit56
_Z3fooiM1BFvvE.exit56: ; preds = %cond_true.i46, %_Z3fooiM1BFvvE.exit
%iftmp.2.0.i49 = phi void (%struct.B*)* [ %tmp2223.i45, %cond_true.i46 ], [ inttoptr (i32 ptrtoint (void (%struct.B*)* @_ZN1B1jEv to i32) to void (%struct.B*)*), %_Z3fooiM1BFvvE.exit ] ; <void (%struct.B*)*> [#uses=1]
%b4.i53 = bitcast %struct.B* %b.i29 to i8* ; <i8*> [#uses=1]
%ctg25.i54 = getelementptr i8, i8* %b4.i53, i32 ashr (i32 trunc (i64 lshr (i64 zext (i32 ptrtoint (void (%struct.B*)* @_ZN1B1jEv to i32) to i64), i64 32) to i32), i32 1) ; <i8*> [#uses=1]
%tmp3031.i55 = bitcast i8* %ctg25.i54 to %struct.B* ; <%struct.B*> [#uses=1]
call void %iftmp.2.0.i49( %struct.B* %tmp3031.i55 )
%tmp2.i2 = getelementptr %struct.B, %struct.B* %b.i1, i32 0, i32 0 ; <i32*> [#uses=1]
_Z3fooiM1BFvvE.exit56:
%iftmp.2.0.i49 = phi void (%struct.B*)* [ %tmp2223.i45, %cond_true.i46 ], [ inttoptr (i32 ptrtoint (void (%struct.B*)* @_ZN1B1jEv to i32) to void (%struct.B*)*), %_Z3fooiM1BFvvE.exit ]
%b4.i53 = bitcast %struct.B* %b.i29 to i8*
%ctg25.i54 = getelementptr i8, i8* %b4.i53, i32 ashr (i32 trunc (i64 lshr (i64 zext (i32 ptrtoint (void (%struct.B*)* @_ZN1B1jEv to i32) to i64), i64 32) to i32), i32 1)
%tmp3031.i55 = bitcast i8* %ctg25.i54 to %struct.B*
call void %iftmp.2.0.i49(%struct.B* %tmp3031.i55)
%tmp2.i2 = getelementptr %struct.B, %struct.B* %b.i1, i32 0, i32 0
store i32 -1, i32* %tmp2.i2
br i1 icmp eq (i64 and (i64 zext (i32 ptrtoint (void (%struct.B*)* @_ZN1B1iEv to i32) to i64), i64 4294967296), i64 0), label %_Z3fooiM1BFvvE.exit28, label %cond_true.i18
cond_true.i18: ; preds = %_Z3fooiM1BFvvE.exit56
%b2.i7 = bitcast %struct.B* %b.i1 to i8* ; <i8*> [#uses=1]
%ctg23.i8 = getelementptr i8, i8* %b2.i7, i32 ashr (i32 trunc (i64 lshr (i64 zext (i32 ptrtoint (void (%struct.B*)* @_ZN1B1iEv to i32) to i64), i64 32) to i32), i32 1) ; <i8*> [#uses=1]
%tmp121314.i9 = bitcast i8* %ctg23.i8 to i32 (...)*** ; <i32 (...)***> [#uses=1]
%tmp15.i10 = load i32 (...)**, i32 (...)*** %tmp121314.i9 ; <i32 (...)**> [#uses=1]
%tmp151.i13 = bitcast i32 (...)** %tmp15.i10 to i8* ; <i8*> [#uses=1]
%ctg2.i14 = getelementptr i8, i8* %tmp151.i13, i32 ptrtoint (void (%struct.B*)* @_ZN1B1iEv to i32) ; <i8*> [#uses=1]
%tmp2021.i15 = bitcast i8* %ctg2.i14 to i32 (...)** ; <i32 (...)**> [#uses=1]
%tmp22.i16 = load i32 (...)*, i32 (...)** %tmp2021.i15 ; <i32 (...)*> [#uses=1]
%tmp2223.i17 = bitcast i32 (...)* %tmp22.i16 to void (%struct.B*)* ; <void (%struct.B*)*> [#uses=1]
cond_true.i18:
%b2.i7 = bitcast %struct.B* %b.i1 to i8*
%ctg23.i8 = getelementptr i8, i8* %b2.i7, i32 ashr (i32 trunc (i64 lshr (i64 zext (i32 ptrtoint (void (%struct.B*)* @_ZN1B1iEv to i32) to i64), i64 32) to i32), i32 1)
%tmp121314.i9 = bitcast i8* %ctg23.i8 to i32 (...)***
%tmp15.i10 = load i32 (...)**, i32 (...)*** %tmp121314.i9
%tmp151.i13 = bitcast i32 (...)** %tmp15.i10 to i8*
%ctg2.i14 = getelementptr i8, i8* %tmp151.i13, i32 ptrtoint (void (%struct.B*)* @_ZN1B1iEv to i32)
%tmp2021.i15 = bitcast i8* %ctg2.i14 to i32 (...)**
%tmp22.i16 = load i32 (...)*, i32 (...)** %tmp2021.i15
%tmp2223.i17 = bitcast i32 (...)* %tmp22.i16 to void (%struct.B*)*
br label %_Z3fooiM1BFvvE.exit28
_Z3fooiM1BFvvE.exit28: ; preds = %cond_true.i18, %_Z3fooiM1BFvvE.exit56
%iftmp.2.0.i21 = phi void (%struct.B*)* [ %tmp2223.i17, %cond_true.i18 ], [ inttoptr (i32 ptrtoint (void (%struct.B*)* @_ZN1B1iEv to i32) to void (%struct.B*)*), %_Z3fooiM1BFvvE.exit56 ] ; <void (%struct.B*)*> [#uses=1]
%b4.i25 = bitcast %struct.B* %b.i1 to i8* ; <i8*> [#uses=1]
%ctg25.i26 = getelementptr i8, i8* %b4.i25, i32 ashr (i32 trunc (i64 lshr (i64 zext (i32 ptrtoint (void (%struct.B*)* @_ZN1B1iEv to i32) to i64), i64 32) to i32), i32 1) ; <i8*> [#uses=1]
%tmp3031.i27 = bitcast i8* %ctg25.i26 to %struct.B* ; <%struct.B*> [#uses=1]
call void %iftmp.2.0.i21( %struct.B* %tmp3031.i27 )
_Z3fooiM1BFvvE.exit28:
%iftmp.2.0.i21 = phi void (%struct.B*)* [ %tmp2223.i17, %cond_true.i18 ], [ inttoptr (i32 ptrtoint (void (%struct.B*)* @_ZN1B1iEv to i32) to void (%struct.B*)*), %_Z3fooiM1BFvvE.exit56 ]
%b4.i25 = bitcast %struct.B* %b.i1 to i8*
%ctg25.i26 = getelementptr i8, i8* %b4.i25, i32 ashr (i32 trunc (i64 lshr (i64 zext (i32 ptrtoint (void (%struct.B*)* @_ZN1B1iEv to i32) to i64), i64 32) to i32), i32 1)
%tmp3031.i27 = bitcast i8* %ctg25.i26 to %struct.B*
call void %iftmp.2.0.i21(%struct.B* %tmp3031.i27)
ret i32 0
}
; CHECK-NOT: LPC9

View File

@ -1,13 +1,16 @@
; RUN: llc < %s -mtriple=arm-apple-darwin -mattr=+v6 -relocation-model=pic | grep comm
; RUN: llc -mtriple arm-apple-darwin -mattr=+v6 -relocation-model pic -filetype asm -o - %s | FileCheck %s
%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
%struct.__gcov_var = type { %struct.FILE*, i32, i32, i32, i32, i32, i32, [1025 x i32] }
%struct.__sFILEX = type opaque
%struct.__sbuf = type { i8*, i32 }
@__gcov_var = common global %struct.__gcov_var zeroinitializer ; <%struct.__gcov_var*> [#uses=1]
%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
%struct.__gcov_var = type { %struct.FILE*, i32, i32, i32, i32, i32, i32, [1025 x i32] }
%struct.__sFILEX = type opaque
%struct.__sbuf = type { i8*, i32 }
@__gcov_var = common global %struct.__gcov_var zeroinitializer
define i32 @__gcov_close() nounwind {
entry:
load i32, i32* getelementptr (%struct.__gcov_var, %struct.__gcov_var* @__gcov_var, i32 0, i32 5), align 4 ; <i32>:0 [#uses=1]
load i32, i32* getelementptr (%struct.__gcov_var, %struct.__gcov_var* @__gcov_var, i32 0, i32 5), align 4
ret i32 %0
}
; CHECK: comm

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
; RUN: llc < %s -mattr=+neon | not grep fldmfdd
; RUN: llc -mtriple thumbv7---elf -mattr=+neon -filetype asm -o - %s | FileCheck %s
target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:32"
target triple = "thumbv7-elf"
@ -12,16 +13,19 @@ declare <2 x i32> @llvm.arm.neon.vpadd.v2i32(<2 x i32>, <2 x i32>) nounwind read
define void @_ZN6squish10ClusterFit9Compress3EPv(%quuz* %this, i8* %block) {
entry:
%0 = lshr <4 x i32> zeroinitializer, <i32 31, i32 31, i32 31, i32 31> ; <<4 x i32>> [#uses=1]
%1 = shufflevector <4 x i32> %0, <4 x i32> undef, <2 x i32> <i32 2, i32 3> ; <<2 x i32>> [#uses=1]
%2 = call <2 x i32> @llvm.arm.neon.vpadd.v2i32(<2 x i32> undef, <2 x i32> %1) nounwind ; <<2 x i32>> [#uses=1]
%3 = extractelement <2 x i32> %2, i32 0 ; <i32> [#uses=1]
%not..i = icmp eq i32 %3, undef ; <i1> [#uses=1]
%0 = lshr <4 x i32> zeroinitializer, <i32 31, i32 31, i32 31, i32 31>
%1 = shufflevector <4 x i32> %0, <4 x i32> undef, <2 x i32> <i32 2, i32 3>
%2 = call <2 x i32> @llvm.arm.neon.vpadd.v2i32(<2 x i32> undef, <2 x i32> %1) nounwind
%3 = extractelement <2 x i32> %2, i32 0
%not..i = icmp eq i32 %3, undef
br i1 %not..i, label %return, label %bb221
bb221: ; preds = %bb221, %entry
bb221:
br label %bb221
return: ; preds = %entry
return:
ret void
}
; CHECK-NOT: fldmfdd

View File

@ -1,4 +1,5 @@
; RUN: llc < %s -mattr=+neon | not grep fldmfdd
; RUN: llc -mtriple thumbv7---elf -mattr=+neon -filetype asm -o - %s | FileCheck %s
target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:32"
target triple = "thumbv7-elf"
@ -12,24 +13,27 @@ define void @aaaa(%quuz* %this, i8* %block) {
entry:
br i1 undef, label %bb.nph269, label %bb201
bb.nph269: ; preds = %entry
bb.nph269:
br label %bb12
bb12: ; preds = %bb194, %bb.nph269
%0 = fmul <4 x float> undef, undef ; <<4 x float>> [#uses=1]
%1 = shufflevector <4 x float> %0, <4 x float> undef, <2 x i32> <i32 2, i32 3> ; <<2 x float>> [#uses=1]
%2 = shufflevector <2 x float> %1, <2 x float> undef, <4 x i32> zeroinitializer ; <<4 x float>> [#uses=1]
%3 = fadd <4 x float> undef, %2 ; <<4 x float>> [#uses=1]
bb12:
%0 = fmul <4 x float> undef, undef
%1 = shufflevector <4 x float> %0, <4 x float> undef, <2 x i32> <i32 2, i32 3>
%2 = shufflevector <2 x float> %1, <2 x float> undef, <4 x i32> zeroinitializer
%3 = fadd <4 x float> undef, %2
br i1 undef, label %bb194, label %bb186
bb186: ; preds = %bb12
bb186:
br label %bb194
bb194: ; preds = %bb186, %bb12
%besterror.0.0 = phi <4 x float> [ %3, %bb186 ], [ undef, %bb12 ] ; <<4 x float>> [#uses=0]
%indvar.next294 = add i32 undef, 1 ; <i32> [#uses=0]
bb194:
%besterror.0.0 = phi <4 x float> [ %3, %bb186 ], [ undef, %bb12 ]
%indvar.next294 = add i32 undef, 1
br label %bb12
bb201: ; preds = %entry
bb201:
ret void
}
; CHECK-NOT: fldmfdd

View File

@ -1,4 +1,4 @@
; RUN: llc -O0 -mtriple=arm-apple-darwin < %s | grep DW_OP_breg
; RUN: llc -mtriple arm-apple-darwin -O0 -filetype asm -o - %s | FileCheck %s
; Use DW_OP_breg in variable's location expression if the variable is in a stack slot.
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:64"
@ -8,43 +8,43 @@ target triple = "arm-apple-darwin"
define i32 @_Z3fooi4SVal(i32 %i, %struct.SVal* noalias %location) nounwind ssp !dbg !17 {
entry:
%"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
%"alloca point" = bitcast i32 0 to i32
call void @llvm.dbg.value(metadata i32 %i, i64 0, metadata !23, metadata !DIExpression()), !dbg !24
call void @llvm.dbg.value(metadata %struct.SVal* %location, i64 0, metadata !25, metadata !DIExpression()), !dbg !24
%0 = icmp ne i32 %i, 0, !dbg !27 ; <i1> [#uses=1]
%0 = icmp ne i32 %i, 0, !dbg !27
br i1 %0, label %bb, label %bb1, !dbg !27
bb: ; preds = %entry
%1 = getelementptr inbounds %struct.SVal, %struct.SVal* %location, i32 0, i32 1, !dbg !29 ; <i32*> [#uses=1]
%2 = load i32, i32* %1, align 8, !dbg !29 ; <i32> [#uses=1]
%3 = add i32 %2, %i, !dbg !29 ; <i32> [#uses=1]
bb:
%1 = getelementptr inbounds %struct.SVal, %struct.SVal* %location, i32 0, i32 1, !dbg !29
%2 = load i32, i32* %1, align 8, !dbg !29
%3 = add i32 %2, %i, !dbg !29
br label %bb2, !dbg !29
bb1: ; preds = %entry
%4 = getelementptr inbounds %struct.SVal, %struct.SVal* %location, i32 0, i32 1, !dbg !30 ; <i32*> [#uses=1]
%5 = load i32, i32* %4, align 8, !dbg !30 ; <i32> [#uses=1]
%6 = sub i32 %5, 1, !dbg !30 ; <i32> [#uses=1]
bb1:
%4 = getelementptr inbounds %struct.SVal, %struct.SVal* %location, i32 0, i32 1, !dbg !30
%5 = load i32, i32* %4, align 8, !dbg !30
%6 = sub i32 %5, 1, !dbg !30
br label %bb2, !dbg !30
bb2: ; preds = %bb1, %bb
%.0 = phi i32 [ %3, %bb ], [ %6, %bb1 ] ; <i32> [#uses=1]
bb2:
%.0 = phi i32 [ %3, %bb ], [ %6, %bb1 ]
br label %return, !dbg !29
return: ; preds = %bb2
return:
ret i32 %.0, !dbg !29
}
define linkonce_odr void @_ZN4SValC1Ev(%struct.SVal* %this) nounwind ssp align 2 !dbg !16 {
entry:
%"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
%"alloca point" = bitcast i32 0 to i32
call void @llvm.dbg.value(metadata %struct.SVal* %this, i64 0, metadata !31, metadata !DIExpression()), !dbg !34
%0 = getelementptr inbounds %struct.SVal, %struct.SVal* %this, i32 0, i32 0, !dbg !34 ; <i8**> [#uses=1]
%0 = getelementptr inbounds %struct.SVal, %struct.SVal* %this, i32 0, i32 0, !dbg !34
store i8* null, i8** %0, align 8, !dbg !34
%1 = getelementptr inbounds %struct.SVal, %struct.SVal* %this, i32 0, i32 1, !dbg !34 ; <i32*> [#uses=1]
%1 = getelementptr inbounds %struct.SVal, %struct.SVal* %this, i32 0, i32 1, !dbg !34
store i32 0, i32* %1, align 8, !dbg !34
br label %return, !dbg !34
return: ; preds = %entry
return:
ret void, !dbg !35
}
@ -52,26 +52,26 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
define i32 @main() nounwind ssp !dbg !20 {
entry:
%0 = alloca %struct.SVal ; <%struct.SVal*> [#uses=3]
%v = alloca %struct.SVal ; <%struct.SVal*> [#uses=4]
%"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
%0 = alloca %struct.SVal
%v = alloca %struct.SVal
%"alloca point" = bitcast i32 0 to i32
call void @llvm.dbg.declare(metadata %struct.SVal* %v, metadata !38, metadata !DIExpression()), !dbg !41
call void @_ZN4SValC1Ev(%struct.SVal* %v) nounwind, !dbg !41
%1 = getelementptr inbounds %struct.SVal, %struct.SVal* %v, i32 0, i32 1, !dbg !42 ; <i32*> [#uses=1]
%1 = getelementptr inbounds %struct.SVal, %struct.SVal* %v, i32 0, i32 1, !dbg !42
store i32 1, i32* %1, align 8, !dbg !42
%2 = getelementptr inbounds %struct.SVal, %struct.SVal* %0, i32 0, i32 0, !dbg !43 ; <i8**> [#uses=1]
%3 = getelementptr inbounds %struct.SVal, %struct.SVal* %v, i32 0, i32 0, !dbg !43 ; <i8**> [#uses=1]
%4 = load i8*, i8** %3, align 8, !dbg !43 ; <i8*> [#uses=1]
%2 = getelementptr inbounds %struct.SVal, %struct.SVal* %0, i32 0, i32 0, !dbg !43
%3 = getelementptr inbounds %struct.SVal, %struct.SVal* %v, i32 0, i32 0, !dbg !43
%4 = load i8*, i8** %3, align 8, !dbg !43
store i8* %4, i8** %2, align 8, !dbg !43
%5 = getelementptr inbounds %struct.SVal, %struct.SVal* %0, i32 0, i32 1, !dbg !43 ; <i32*> [#uses=1]
%6 = getelementptr inbounds %struct.SVal, %struct.SVal* %v, i32 0, i32 1, !dbg !43 ; <i32*> [#uses=1]
%7 = load i32, i32* %6, align 8, !dbg !43 ; <i32> [#uses=1]
%5 = getelementptr inbounds %struct.SVal, %struct.SVal* %0, i32 0, i32 1, !dbg !43
%6 = getelementptr inbounds %struct.SVal, %struct.SVal* %v, i32 0, i32 1, !dbg !43
%7 = load i32, i32* %6, align 8, !dbg !43
store i32 %7, i32* %5, align 8, !dbg !43
%8 = call i32 @_Z3fooi4SVal(i32 2, %struct.SVal* noalias %0) nounwind, !dbg !43 ; <i32> [#uses=0]
%8 = call i32 @_Z3fooi4SVal(i32 2, %struct.SVal* noalias %0) nounwind, !dbg !43
call void @llvm.dbg.value(metadata i32 %8, i64 0, metadata !44, metadata !DIExpression()), !dbg !43
br label %return, !dbg !45
return: ; preds = %entry
return:
ret i32 0, !dbg !45
}
@ -129,3 +129,6 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnon
!47 = !{}
!48 = !DIFile(filename: "small.cc", directory: "/Users/manav/R8248330")
!49 = !{i32 1, !"Debug Info Version", i32 3}
; CHECK: @ DW_OP_breg

View File

@ -1,9 +1,12 @@
; RUN: llc < %s -mtriple=arm-linux-gnueabi | not grep r3
; RUN: llc -mtriple arm-linux-gnueabi -filetype asm -o - %s | FileCheck %s
; PR4059
declare i32 @g(double)
define i32 @f(i64 %z, i32 %a, double %b) {
%tmp = call i32 @g(double %b)
ret i32 %tmp
}
declare i32 @g(double)
; CHECK-NOT: r3

View File

@ -1,9 +1,12 @@
; RUN: llc < %s -mtriple=arm-linux-gnueabi | not grep r3
; RUN: llc -mtriple arm-linux-gnueabi -filetype asm -o - %s | FileCheck %s
; PR4058
declare i32 @g(i64)
define i32 @f(i64 %z, i32 %a, i64 %b) {
%tmp = call i32 @g(i64 %b)
ret i32 %tmp
}
declare i32 @g(i64)
; CHECK-NOT: r3

View File

@ -1,16 +1,21 @@
; RUN: llc < %s -mtriple=arm-apple-darwin | grep moveq
; RUN: llc < %s -mtriple=armv7-apple-darwin -mcpu=cortex-a8 | FileCheck %s
; RUN: llc -mtriple arm-apple-darwin -filetype asm -o - %s | FileCheck -check-prefix CHECK-ARMv4 %s
; RUN: llc -mtriple armv7-apple-darwin -mcpu=cortex-a8 -filetype asm -o - %s | FileCheck -check-prefix CHECK-ARMv7 %s
define i32 @f7(float %a, float %b) {
entry:
; CHECK-LABEL: f7:
; CHECK: vcmpe.f32
; CHECK: vmrs APSR_nzcv, fpscr
; CHECK: movweq
; CHECK-NOT: vmrs
; CHECK: movwvs
%tmp = fcmp ueq float %a,%b
%retval = select i1 %tmp, i32 666, i32 42
ret i32 %retval
}
; CHECK-ARMv4-LABEL: f7:
; CHECK-ARMv4: moveq r6, #1
; CHECK-ARMv4: moveq r0, #42
; CHECK-ARMv7-LABEL: f7:
; CHECK-ARMv7: vcmpe.f32
; CHECK-ARMv7: vmrs APSR_nzcv, fpscr
; CHECK-ARMv7: movweq
; CHECK-ARMv7-NOT: vmrs
; CHECK-ARMv7: movwvs

View File

@ -1,15 +1,17 @@
; RUN: llc < %s -mtriple=arm-linux-gnueabi | grep powidf2
; RUN: llc -mtriple arm-unknown-linux-gnueabi -filetype asm -o - %s | FileCheck %s
; PR1287
; ModuleID = '<stdin>'
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64"
target triple = "arm-unknown-linux-gnueabi"
declare double @llvm.powi.f64(double, i32)
define double @_ZSt3powdi(double %__x, i32 %__i) {
entry:
%tmp3 = call double @llvm.powi.f64( double %__x, i32 %__i )
%tmp3 = call double @llvm.powi.f64(double %__x, i32 %__i)
ret double %tmp3
}
declare double @llvm.powi.f64(double, i32)
; CHECK: bl __powidf2

View File

@ -1,10 +1,12 @@
; RUN: llc < %s -march=arm -mtriple=arm-linux-gnueabi | \
; RUN: grep "__aeabi_read_tp"
; RUN: llc -mtriple arm-linux-gnueabi -filetype asm -o - %s | FileCheck %s
declare i8* @llvm.thread.pointer()
define i8* @test() {
entry:
%tmp1 = call i8* @llvm.thread.pointer( ) ; <i8*> [#uses=0]
%tmp1 = call i8* @llvm.thread.pointer()
ret i8* %tmp1
}
declare i8* @llvm.thread.pointer()
; CHECK: bl __aeabi_read_tp

View File

@ -1,16 +1,12 @@
; RUN: llc < %s -march=arm -mtriple=arm-linux-gnueabi | \
; RUN: grep "tbss"
; RUN: llc < %s -march=arm -mtriple=arm-linux-gnueabi | \
; RUN: FileCheck %s -check-prefix=CHECK -check-prefix=NOEMU
; RUN: llc < %s -emulated-tls -march=arm -mtriple=arm-linux-gnueabi | \
; RUN: FileCheck %s -check-prefix=CHECK -check-prefix=EMU
; RUN: llc -mtriple arm-linux-gnueabi -filetype asm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix NOEMU
; RUN: llc -mtriple arm-linux-gnueabi -emulated-tls -filetype asm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix EMU
%struct.anon = type { i32, i32 }
@teste = internal thread_local global %struct.anon zeroinitializer ; <%struct.anon*> [#uses=1]
@teste = internal thread_local global %struct.anon zeroinitializer
define i32 @main() {
entry:
%tmp2 = load i32, i32* getelementptr (%struct.anon, %struct.anon* @teste, i32 0, i32 0), align 8 ; <i32> [#uses=1]
%tmp2 = load i32, i32* getelementptr (%struct.anon, %struct.anon* @teste, i32 0, i32 0), align 8
ret i32 %tmp2
}
@ -32,3 +28,4 @@ entry:
; CHECK-NOT: teste:
; CHECK-NOT: __emutls_t.teste

View File

@ -1,74 +1,104 @@
; RUN: llc < %s -mtriple=armv6-apple-darwin | \
; RUN: grep uxt | count 10
; RUN: llc -mtriple armv6-apple-darwin -filetype asm -o - %s | FileCheck %s
define i32 @test1(i32 %x) {
%tmp1 = and i32 %x, 16711935 ; <i32> [#uses=1]
%tmp1 = and i32 %x, 16711935
ret i32 %tmp1
}
; CHECK-LABEL: test1:
; CHECK: uxt
define i32 @test2(i32 %x) {
%tmp1 = lshr i32 %x, 8 ; <i32> [#uses=1]
%tmp2 = and i32 %tmp1, 16711935 ; <i32> [#uses=1]
%tmp1 = lshr i32 %x, 8
%tmp2 = and i32 %tmp1, 16711935
ret i32 %tmp2
}
; CHECK-LABEL: test2:
; CHECK: uxt
define i32 @test3(i32 %x) {
%tmp1 = lshr i32 %x, 8 ; <i32> [#uses=1]
%tmp2 = and i32 %tmp1, 16711935 ; <i32> [#uses=1]
%tmp1 = lshr i32 %x, 8
%tmp2 = and i32 %tmp1, 16711935
ret i32 %tmp2
}
; CHECK-LABEL: test3:
; CHECK: uxt
define i32 @test4(i32 %x) {
%tmp1 = lshr i32 %x, 8 ; <i32> [#uses=1]
%tmp6 = and i32 %tmp1, 16711935 ; <i32> [#uses=1]
%tmp1 = lshr i32 %x, 8
%tmp6 = and i32 %tmp1, 16711935
ret i32 %tmp6
}
; CHECK-LABEL: test4:
; CHECK: uxt
define i32 @test5(i32 %x) {
%tmp1 = lshr i32 %x, 8 ; <i32> [#uses=1]
%tmp2 = and i32 %tmp1, 16711935 ; <i32> [#uses=1]
%tmp1 = lshr i32 %x, 8
%tmp2 = and i32 %tmp1, 16711935
ret i32 %tmp2
}
; CHECK-LABEL: test5:
; CHECK: uxt
define i32 @test6(i32 %x) {
%tmp1 = lshr i32 %x, 16 ; <i32> [#uses=1]
%tmp2 = and i32 %tmp1, 255 ; <i32> [#uses=1]
%tmp4 = shl i32 %x, 16 ; <i32> [#uses=1]
%tmp5 = and i32 %tmp4, 16711680 ; <i32> [#uses=1]
%tmp6 = or i32 %tmp2, %tmp5 ; <i32> [#uses=1]
%tmp1 = lshr i32 %x, 16
%tmp2 = and i32 %tmp1, 255
%tmp4 = shl i32 %x, 16
%tmp5 = and i32 %tmp4, 16711680
%tmp6 = or i32 %tmp2, %tmp5
ret i32 %tmp6
}
; CHECK-LABEL: test6:
; CHECK: uxt
define i32 @test7(i32 %x) {
%tmp1 = lshr i32 %x, 16 ; <i32> [#uses=1]
%tmp2 = and i32 %tmp1, 255 ; <i32> [#uses=1]
%tmp4 = shl i32 %x, 16 ; <i32> [#uses=1]
%tmp5 = and i32 %tmp4, 16711680 ; <i32> [#uses=1]
%tmp6 = or i32 %tmp2, %tmp5 ; <i32> [#uses=1]
%tmp1 = lshr i32 %x, 16
%tmp2 = and i32 %tmp1, 255
%tmp4 = shl i32 %x, 16
%tmp5 = and i32 %tmp4, 16711680
%tmp6 = or i32 %tmp2, %tmp5
ret i32 %tmp6
}
; CHECK-LABEL: test7:
; CHECK: uxt
define i32 @test8(i32 %x) {
%tmp1 = shl i32 %x, 8 ; <i32> [#uses=1]
%tmp2 = and i32 %tmp1, 16711680 ; <i32> [#uses=1]
%tmp5 = lshr i32 %x, 24 ; <i32> [#uses=1]
%tmp6 = or i32 %tmp2, %tmp5 ; <i32> [#uses=1]
%tmp1 = shl i32 %x, 8
%tmp2 = and i32 %tmp1, 16711680
%tmp5 = lshr i32 %x, 24
%tmp6 = or i32 %tmp2, %tmp5
ret i32 %tmp6
}
; CHECK-LABEL: test8:
; CHECK: uxt
define i32 @test9(i32 %x) {
%tmp1 = lshr i32 %x, 24 ; <i32> [#uses=1]
%tmp4 = shl i32 %x, 8 ; <i32> [#uses=1]
%tmp5 = and i32 %tmp4, 16711680 ; <i32> [#uses=1]
%tmp6 = or i32 %tmp5, %tmp1 ; <i32> [#uses=1]
%tmp1 = lshr i32 %x, 24
%tmp4 = shl i32 %x, 8
%tmp5 = and i32 %tmp4, 16711680
%tmp6 = or i32 %tmp5, %tmp1
ret i32 %tmp6
}
; CHECK-LABEL: test9:
; CHECK: uxt
define i32 @test10(i32 %p0) {
%tmp1 = lshr i32 %p0, 7 ; <i32> [#uses=1]
%tmp2 = and i32 %tmp1, 16253176 ; <i32> [#uses=2]
%tmp4 = lshr i32 %tmp2, 5 ; <i32> [#uses=1]
%tmp5 = and i32 %tmp4, 458759 ; <i32> [#uses=1]
%tmp7 = or i32 %tmp5, %tmp2 ; <i32> [#uses=1]
%tmp1 = lshr i32 %p0, 7
%tmp2 = and i32 %tmp1, 16253176
%tmp4 = lshr i32 %tmp2, 5
%tmp5 = and i32 %tmp4, 458759
%tmp7 = or i32 %tmp5, %tmp2
ret i32 %tmp7
}
; CHECK-LABEL: test10:
; CHECK: uxt