For PR950:

Update the test suite to accommodate the change from signed integer types
to signless integer types. The changes were of only a few kinds:

1. Make sure llvm-upgrade is run on the source which does the bulk of the
   changes automatically.

2. Change things like "grep 'int'" to "grep 'i32'"

3. In several tests bitcasting caused the same name to be reused in the
   same type plane. These had to be manually fixed. The fix was (generally)
   to leave the bitcast and provide the instruction with a new name. This
   should not affect the semantics of the test. In a few cases, the
   bitcasts were known to be superfluous and irrelevant to the test case
   so they were removed.

4. One test case uses a bytecode file which needed to be updated to the
   latest bytecode format.

llvm-svn: 32789
This commit is contained in:
Reid Spencer 2006-12-31 06:02:00 +00:00
parent e63b6518fa
commit deb4d5ab46
117 changed files with 285 additions and 299 deletions

View File

@ -1,4 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -dse | llvm-dis | grep 'store int 0'
; RUN: llvm-upgrade < %s | llvm-as | opt -dse | llvm-dis | grep 'store i32 0'
void %test({int,int }* %P) {
%Q = getelementptr {int,int}* %P, int 1

View File

@ -1,4 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -basicaa -load-vn -gcse -instcombine | llvm-dis | grep 'load int\* %A'
; RUN: llvm-upgrade < %s | llvm-as | opt -basicaa -load-vn -gcse -instcombine | llvm-dis | grep 'load i32\* %A'
declare double* %useit(int*)

View File

@ -1,4 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -basicaa -load-vn -gcse -instcombine | llvm-dis | grep 'ret int 0'
; RUN: llvm-upgrade < %s | llvm-as | opt -basicaa -load-vn -gcse -instcombine | llvm-dis | grep 'ret i32 0'
declare void %foo(int*)
declare void %bar()

View File

@ -1,4 +1,6 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -globalsmodref-aa -load-vn -gcse -instcombine | llvm-dis | grep 'ret int 0'
; RUN: llvm-upgrade < %s | llvm-as | \
; RUN: opt -globalsmodref-aa -load-vn -gcse -instcombine | llvm-dis | \
; RUN: grep 'ret i32 0'
%G = internal global int* null
implementation

View File

@ -1,7 +1,7 @@
; Check to make sure that Value Numbering doesn't merge casts of different
; flavors.
; RUN: llvm-upgrade < %s | llvm-as | opt -load-vn -gcse | llvm-dis | \
; RUN: grep '[sz]ext' | wc -l | grep 2
; RUN: grep '[sz]ext' | wc -l | grep 2
declare void %external(int)

View File

@ -1,6 +1,6 @@
; This file takes about 48 __MINUTES__ to assemble using as. This is WAY too
; long. The type resolution code needs to be sped up a lot.
; RUN: ulimit -t 20; llvm-as < %s
; RUN: ulimit -t 20; llvm-upgrade < %s | llvm-as
%ALL_INTERSECTIONS_METHOD = type int (%OBJECT*, %RAY*, %ISTACK*)*
%BBOX = type { %BBOX_VECT, %BBOX_VECT }

View File

@ -1,4 +1,4 @@
; RUN: (llvm-as < %s 2>&1) | grep Expected
; RUN: llvm-upgrade < %s | llvm-as 2>&1 >/dev/null | grep Expected
; Test the case of a misformed constant initializer
; This should cause an assembler error, not an assertion failure!
%X = constant {int} { float 1.0 }

View File

@ -1,4 +1,4 @@
; Found by inspection of the code
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f 2>&1 | grep "Shift constant expression"
; RUN: llvm-upgrade < %s | llvm-as 2>&1 > /dev/null | grep "Shift constant expression"
global int shr (float 1.0, ubyte 2)

View File

@ -1,4 +1,4 @@
; Found by inspection of the code
; RUN: llvm-as < %s 2>&1 | grep "Illegal"
; RUN: llvm-upgrade < %s | llvm-as 2>&1 > /dev/null | grep "Illegal"
global {} { int 7, float 1.0, int 7, int 8 }

View File

@ -1,9 +1,9 @@
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | grep ' bitcast ('
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | not grep ' bitcast ('
%.Base64_1 = external constant [4 x sbyte]
ubyte %test(sbyte %X) { ; No predecessors!
%X = cast sbyte %X to ubyte ; <ubyte> [#uses=1]
ubyte %test(sbyte %Y) { ; No predecessors!
%X = cast sbyte %Y to ubyte ; <ubyte> [#uses=1]
%tmp.13 = add ubyte %X, cast (sbyte sub (sbyte 0, sbyte cast ([4 x sbyte]* %.Base64_1 to sbyte)) to ubyte) ; <ubyte> [#uses=1]
ret ubyte %tmp.13
}

View File

@ -1,4 +1,5 @@
; RUN: llvm-as < %s 2>&1 | grep 'Reference to an undefined type'
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f 2>&1 | \
; RUN: grep 'Reference to an undefined type'
%d_reduction_0_dparser_gram = global { int (sbyte*, sbyte**, int, int, { %struct.Grammar*, void (\4, %struct.d_loc_t*, sbyte**)*, %struct.D_Scope*, void (\4)*, { int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\8, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }* (\4, int, { int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\9, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }**)*, void ({ int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\8, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }*)*, %struct.d_loc_t, int, int, int, int, int, int, int, int, int, int, int, int }*)*, int (sbyte*, sbyte**, int, int, { %struct.Grammar*, void (\4, %struct.d_loc_t*, sbyte**)*, %struct.D_Scope*, void (\4)*, { int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\8, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }* (\4, int, { int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\9, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }**)*, void ({ int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\8, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }*)*, %struct.d_loc_t, int, int, int, int, int, int, int, int, int, int, int, int }*)** } { int (sbyte*, sbyte**, int, int, { %struct.Grammar*, void (\4, %struct.d_loc_t*, sbyte**)*, %struct.D_Scope*, void (\4)*, { int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\8, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }* (\4, int, { int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\9, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }**)*, void ({ int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\8, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }*)*, %struct.d_loc_t, int, int, int, int, int, int, int, int, int, int, int, int }*)* null, int (sbyte*, sbyte**, int, int, { %struct.Grammar*, void (\4, %struct.d_loc_t*, sbyte**)*, %struct.D_Scope*, void (\4)*, { int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\8, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }* (\4, int, { int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\9, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }**)*, void ({ int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\8, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }*)*, %struct.d_loc_t, int, int, int, int, int, int, int, int, int, int, int, int }*)** null }

View File

@ -1,5 +1,5 @@
;; The bytecode writer was trying to treat undef values as ConstantArray's when
;; they looked like strings.
;; RUN: llvm-as < %s -o /dev/null -f
;; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
%G = internal global [8 x sbyte] undef

View File

@ -1,6 +1,6 @@
// XFAIL: llvmgcc3
// RUN: %llvmgxx -O0 -emit-llvm -S -g -o - %s | grep 'uint 1,' &&
// RUN: %llvmgxx -O0 -emit-llvm -S -g -o - %s | grep 'uint 2,'
// RUN: %llvmgxx -O0 -emit-llvm -S -g -o - %s | grep 'i32 1,' &&
// RUN: %llvmgxx -O0 -emit-llvm -S -g -o - %s | grep 'i32 2,'
class A {
public:

View File

@ -1,4 +1,4 @@
// RUN: %llvmgcc %s -S -g -o - | grep 'llvm.dbg.stoppoint.*uint 14'
// RUN: %llvmgcc %s -S -g -o - | grep 'llvm.dbg.stoppoint.*i32 14'
// PR664: ensure that line #'s are emitted for declarations

View File

@ -1,5 +1,5 @@
// RUN: %llvmgcc -S %s -o - | grep 'llvm.ctlz.i32(uint' &&
// RUN: %llvmgcc -S %s -o - | not grep 'llvm.ctlz.i32(int'
// RUN: %llvmgcc -S %s -o - | grep 'llvm.ctlz.i32(i32'
// RUNMEIFWEHADSIGNEDTYPES: %llvmgcc -S %s -o - | not grep 'llvm.ctlz.i32(i32'
unsigned t2(unsigned X) {
return __builtin_clz(X);

View File

@ -1,4 +1,4 @@
// RUN: %llvmgcc %s -S -o - | gccas | llvm-dis | grep nate | grep 'global int 0'
// RUN: %llvmgcc %s -S -o - | gccas | llvm-dis | grep nate | grep 'global i32 0'
struct X { int *XX; int Y;};

View File

@ -3,14 +3,14 @@
implementation ; Functions:
void %f(int %a, ...) {
void %f(int %a_arg, ...) {
entry:
%a = cast int %a to uint ; <uint> [#uses=1]
%a = cast int %a_arg to uint ; <uint> [#uses=1]
%l1 = alloca sbyte*, align 4 ; <sbyte**> [#uses=5]
%l2 = alloca sbyte*, align 4 ; <sbyte**> [#uses=4]
%memtmp = alloca sbyte* ; <sbyte**> [#uses=2]
call void %llvm.va_start( sbyte** %l1 )
%tmp22 = seteq int %a, 0 ; <bool> [#uses=1]
%tmp22 = seteq int %a_arg, 0 ; <bool> [#uses=1]
%tmp23 = volatile load sbyte** %l1 ; <sbyte*> [#uses=2]
br bool %tmp22, label %bb8, label %bb

View File

@ -1,11 +1,10 @@
; Make sure this testcase codegens to the bic instruction
; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 'zapnot'
; RUN: llvm-as < %s | llc -march=alpha | grep 'zapnot'
implementation ; Functions:
ushort %foo(long %y) {
define i16 @zext %foo(i64 %y) {
entry:
%tmp.1 = cast long %y to ushort ; <ushort> [#uses=1]
ret ushort %tmp.1
%tmp.1 = trunc i64 %y to i16 ; <ushort> [#uses=1]
ret i16 %tmp.1
}

View File

@ -1,6 +1,6 @@
; RUN: llvm-upgrade < %s | llvm-as | llc
float %t(long %u) {
%u = cast long %u to ulong ; <ulong> [#uses=1]
float %t(long %u_arg) {
%u = cast long %u_arg to ulong ; <ulong> [#uses=1]
%tmp5 = add ulong %u, 9007199254740991 ; <ulong> [#uses=1]
%tmp = setgt ulong %tmp5, 18014398509481982 ; <bool> [#uses=1]
br bool %tmp, label %T, label %F

View File

@ -239,19 +239,19 @@ cond_next1834: ; preds = %bb1808
ret void
bb1876: ; preds = %bb1808
%tmp1877 = load int* %which_alternative ; <int> [#uses=4]
%tmp1877 = cast int %tmp1877 to uint ; <uint> [#uses=1]
%tmp1877signed = load int* %which_alternative ; <int> [#uses=4]
%tmp1877 = cast int %tmp1877signed to uint ; <uint> [#uses=1]
%bothcond699 = setlt uint %tmp1877, 2 ; <bool> [#uses=1]
%tmp1888 = seteq int %tmp1877, 2 ; <bool> [#uses=1]
%tmp1888 = seteq int %tmp1877signed, 2 ; <bool> [#uses=1]
%bothcond700 = or bool %bothcond699, %tmp1888 ; <bool> [#uses=1]
%bothcond700.not = xor bool %bothcond700, true ; <bool> [#uses=1]
%tmp1894 = seteq int %tmp1877, 3 ; <bool> [#uses=1]
%tmp1894 = seteq int %tmp1877signed, 3 ; <bool> [#uses=1]
%bothcond701 = or bool %tmp1894, %bothcond700.not ; <bool> [#uses=1]
%bothcond702 = or bool %bothcond701, false ; <bool> [#uses=1]
br bool %bothcond702, label %UnifiedReturnBlock, label %cond_next1902
cond_next1902: ; preds = %bb1876
switch int %tmp1877, label %cond_next1937 [
switch int %tmp1877signed, label %cond_next1937 [
int 0, label %bb1918
int 1, label %bb1918
int 2, label %bb1918

View File

@ -19,7 +19,6 @@ bb: ; preds = %bb, %entry
]
bb7: ; preds = %bb, %bb
%tmp = cast sbyte %tmp to ubyte ; <ubyte> [#uses=1]
tail call void %foo( ubyte %tmp )
ret sbyte* %tmp2
}

View File

@ -1,16 +1,16 @@
; RUN: llvm-upgrade < %s | llvm-as | llc
void %iterative_hash_host_wide_int() {
%zero = alloca int ; <int*> [#uses=2]
%b = alloca uint ; <uint*> [#uses=1]
%zero = alloca int ; <int*> [#uses=2]
%b = alloca uint ; <uint*> [#uses=1]
store int 0, int* %zero
%tmp = load int* %zero ; <int> [#uses=1]
%tmp = load int* %zero ; <int> [#uses=1]
%tmp5 = cast int %tmp to uint ; <uint> [#uses=1]
%tmp6 = add uint %tmp5, 32 ; <uint> [#uses=1]
%tmp6 = cast uint %tmp6 to int ; <int> [#uses=1]
%tmp7 = load long* null ; <long> [#uses=1]
%tmp6.u = add uint %tmp5, 32 ; <uint> [#uses=1]
%tmp6 = cast uint %tmp6.u to int ; <int> [#uses=1]
%tmp7 = load long* null ; <long> [#uses=1]
%tmp6 = cast int %tmp6 to ubyte ; <ubyte> [#uses=1]
%tmp8 = shr long %tmp7, ubyte %tmp6 ; <long> [#uses=1]
%tmp8 = shr long %tmp7, ubyte %tmp6 ; <long> [#uses=1]
%tmp8 = cast long %tmp8 to uint ; <uint> [#uses=1]
store uint %tmp8, uint* %b
unreachable

View File

@ -10,7 +10,8 @@ void %test(ubyte* %P) {
ret void
}
ushort %test2(ushort %crc) { ; No and's should be needed for the ushorts here.
ushort @zext %test2(ushort @zext %crc) {
; No and's should be needed for the ushorts here.
%tmp.1 = shr ushort %crc, ubyte 1
%tmp.7 = xor ushort %tmp.1, 40961
ret ushort %tmp.7

View File

@ -9,10 +9,10 @@ implementation ; Functions:
void %foo(int %W, int %X, int %Y, int %Z) {
entry:
%X = cast int %X to uint ; <uint> [#uses=1]
%Y = cast int %Y to uint ; <uint> [#uses=1]
%Z = cast int %Z to uint ; <uint> [#uses=1]
%W = cast int %W to uint ; <uint> [#uses=1]
%X.u = cast int %X to uint ; <uint> [#uses=1]
%Y.u = cast int %Y to uint ; <uint> [#uses=1]
%Z.u = cast int %Z to uint ; <uint> [#uses=1]
%W.u = cast int %W to uint ; <uint> [#uses=1]
%tmp1 = and int %W, 1 ; <int> [#uses=1]
%tmp1 = seteq int %tmp1, 0 ; <bool> [#uses=1]
br bool %tmp1, label %cond_false, label %bb5
@ -21,7 +21,7 @@ bb: ; preds = %bb5, %bb
%indvar77 = phi uint [ %indvar.next78, %bb ], [ 0, %bb5 ] ; <uint> [#uses=1]
%tmp2 = tail call int (...)* %bar( ) ; <int> [#uses=0]
%indvar.next78 = add uint %indvar77, 1 ; <uint> [#uses=2]
%exitcond79 = seteq uint %indvar.next78, %X ; <bool> [#uses=1]
%exitcond79 = seteq uint %indvar.next78, %X.u ; <bool> [#uses=1]
br bool %exitcond79, label %cond_next48, label %bb
bb5: ; preds = %entry
@ -37,7 +37,7 @@ bb12: ; preds = %bb16, %bb12
%indvar72 = phi uint [ %indvar.next73, %bb12 ], [ 0, %bb16 ] ; <uint> [#uses=1]
%tmp13 = tail call int (...)* %bar( ) ; <int> [#uses=0]
%indvar.next73 = add uint %indvar72, 1 ; <uint> [#uses=2]
%exitcond74 = seteq uint %indvar.next73, %Y ; <bool> [#uses=1]
%exitcond74 = seteq uint %indvar.next73, %Y.u ; <bool> [#uses=1]
br bool %exitcond74, label %cond_next48, label %bb12
bb16: ; preds = %cond_false
@ -53,7 +53,7 @@ bb25: ; preds = %bb29, %bb25
%indvar67 = phi uint [ %indvar.next68, %bb25 ], [ 0, %bb29 ] ; <uint> [#uses=1]
%tmp26 = tail call int (...)* %bar( ) ; <int> [#uses=0]
%indvar.next68 = add uint %indvar67, 1 ; <uint> [#uses=2]
%exitcond69 = seteq uint %indvar.next68, %Z ; <bool> [#uses=1]
%exitcond69 = seteq uint %indvar.next68, %Z.u ; <bool> [#uses=1]
br bool %exitcond69, label %cond_next48, label %bb25
bb29: ; preds = %cond_false20
@ -72,9 +72,8 @@ bb38: ; preds = %bb42
bb42: ; preds = %cond_false33, %bb38
%indvar = phi uint [ %indvar.next, %bb38 ], [ 0, %cond_false33 ] ; <uint> [#uses=3]
%indvar = cast uint %indvar to int ; <int> [#uses=1]
%W_addr.0 = sub int %W, %indvar ; <int> [#uses=1]
%exitcond = seteq uint %indvar, %W ; <bool> [#uses=1]
%exitcond = seteq uint %indvar, %W.u ; <bool> [#uses=1]
br bool %exitcond, label %cond_next48, label %bb38
cond_next48: ; preds = %bb, %bb12, %bb25, %bb42, %cond_false33, %bb29, %bb16, %bb5

View File

@ -7,12 +7,11 @@ implementation ; Functions:
int %rotlw(uint %x, int %sh) {
entry:
%tmp.3 = cast int %sh to ubyte ; <ubyte> [#uses=1]
%x = cast uint %x to int ; <int> [#uses=1]
%x.s = cast uint %x to int ; <int> [#uses=1]
%tmp.7 = sub int 32, %sh ; <int> [#uses=1]
%tmp.9 = cast int %tmp.7 to ubyte ; <ubyte> [#uses=1]
%tmp.10 = shr uint %x, ubyte %tmp.9 ; <uint> [#uses=1]
%tmp.4 = shl int %x, ubyte %tmp.3 ; <int> [#uses=1]
%tmp.10 = cast uint %tmp.10 to int ; <int> [#uses=1]
%tmp.4 = shl int %x.s, ubyte %tmp.3 ; <int> [#uses=1]
%tmp.12 = or int %tmp.10, %tmp.4 ; <int> [#uses=1]
ret int %tmp.12
}
@ -23,19 +22,17 @@ entry:
%tmp.4 = shr uint %x, ubyte %tmp.3 ; <uint> [#uses=1]
%tmp.7 = sub int 32, %sh ; <int> [#uses=1]
%tmp.9 = cast int %tmp.7 to ubyte ; <ubyte> [#uses=1]
%x = cast uint %x to int ; <int> [#uses=1]
%tmp.4 = cast uint %tmp.4 to int ; <int> [#uses=1]
%tmp.10 = shl int %x, ubyte %tmp.9 ; <int> [#uses=1]
%x.s = cast uint %x to int ; <int> [#uses=1]
%tmp.10 = shl int %x.s, ubyte %tmp.9 ; <int> [#uses=1]
%tmp.12 = or int %tmp.4, %tmp.10 ; <int> [#uses=1]
ret int %tmp.12
}
int %rotlwi(uint %x) {
entry:
%x = cast uint %x to int ; <int> [#uses=1]
%x.s = cast uint %x to int ; <int> [#uses=1]
%tmp.7 = shr uint %x, ubyte 27 ; <uint> [#uses=1]
%tmp.3 = shl int %x, ubyte 5 ; <int> [#uses=1]
%tmp.7 = cast uint %tmp.7 to int ; <int> [#uses=1]
%tmp.3 = shl int %x.s, ubyte 5 ; <int> [#uses=1]
%tmp.9 = or int %tmp.3, %tmp.7 ; <int> [#uses=1]
ret int %tmp.9
}
@ -43,9 +40,8 @@ entry:
int %rotrwi(uint %x) {
entry:
%tmp.3 = shr uint %x, ubyte 5 ; <uint> [#uses=1]
%x = cast uint %x to int ; <int> [#uses=1]
%tmp.3 = cast uint %tmp.3 to int ; <int> [#uses=1]
%tmp.7 = shl int %x, ubyte 27 ; <int> [#uses=1]
%x.s = cast uint %x to int ; <int> [#uses=1]
%tmp.7 = shl int %x.s, ubyte 27 ; <int> [#uses=1]
%tmp.9 = or int %tmp.3, %tmp.7 ; <int> [#uses=1]
ret int %tmp.9
}

View File

@ -1,15 +1,14 @@
; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 &&
; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | not grep 'extsh\|rlwinm'
declare short %foo()
declare short @sext %foo()
int %test1(short %X) {
int %test1(short @sext %X) {
%Y = cast short %X to int ;; dead
ret int %Y
}
int %test2(ushort %X) {
int %test2(ushort @zext %X) {
%Y = cast ushort %X to int
%Z = and int %Y, 65535 ;; dead
ret int %Z
@ -48,8 +47,7 @@ uint %test6(uint* %P) {
ret uint %tmp.2
}
ushort %test7(float %a) {
ushort @zext %test7(float %a) {
%tmp.1 = cast float %a to ushort
ret ushort %tmp.1
}

View File

@ -62,10 +62,10 @@ void %splat_h(short %tmp, <16 x ubyte>* %dst) {
void %spltish(<16 x ubyte>* %A, <16 x ubyte>* %B) {
; Gets converted to 16 x ubyte
%tmp = load <16 x ubyte>* %B
%tmp = cast <16 x ubyte> %tmp to <16 x sbyte>
%tmp4 = sub <16 x sbyte> %tmp, cast (<8 x short> < short 15, short 15, short 15, short 15, short 15, short 15, short 15, short 15 > to <16 x sbyte>)
%tmp4 = cast <16 x sbyte> %tmp4 to <16 x ubyte>
store <16 x ubyte> %tmp4, <16 x ubyte>* %A
%tmp.s = cast <16 x ubyte> %tmp to <16 x sbyte>
%tmp4 = sub <16 x sbyte> %tmp.s, cast (<8 x short> < short 15, short 15, short 15, short 15, short 15, short 15, short 15, short 15 > to <16 x sbyte>)
%tmp4.u = cast <16 x sbyte> %tmp4 to <16 x ubyte>
store <16 x ubyte> %tmp4.u, <16 x ubyte>* %A
ret void
}

View File

@ -11,10 +11,8 @@ int %compare(sbyte* %a, sbyte* %b) {
%tmp4 = getelementptr ubyte* %tmp, uint %tmp3 ; <ubyte*> [#uses=1]
%tmp7 = load uint* %tmp ; <uint> [#uses=1]
%tmp8 = getelementptr ubyte* %tmp, uint %tmp7 ; <ubyte*> [#uses=1]
%tmp8 = cast ubyte* %tmp8 to sbyte* ; <sbyte*> [#uses=1]
%tmp4 = cast ubyte* %tmp4 to sbyte* ; <sbyte*> [#uses=1]
%tmp = tail call int %memcmp( sbyte* %tmp8, sbyte* %tmp4, uint %tmp ) ; <int> [#uses=1]
ret int %tmp
%result = tail call int %memcmp( sbyte* %tmp8, sbyte* %tmp4, uint %tmp ) ; <int> [#uses=1]
ret int %result
}
declare int %memcmp(sbyte*, sbyte*, uint)

View File

@ -10,8 +10,8 @@ ilog2.exit: ; preds = %entry
%tmp24.i = load int* null ; <int> [#uses=1]
%tmp13.i12.i = tail call double %ldexp( double 0.000000e+00, int 0 ) ; <double> [#uses=1]
%tmp13.i13.i = cast double %tmp13.i12.i to float ; <float> [#uses=1]
%tmp11.i = load int* null ; <int> [#uses=1]
%tmp11.i = cast int %tmp11.i to uint ; <uint> [#uses=1]
%tmp11.s = load int* null ; <int> [#uses=1]
%tmp11.i = cast int %tmp11.s to uint ; <uint> [#uses=1]
%n.i = cast int %tmp24.i to uint ; <uint> [#uses=1]
%tmp13.i7 = mul uint %tmp11.i, %n.i ; <uint> [#uses=1]
%tmp.i8 = tail call sbyte* %calloc( uint %tmp13.i7, uint 4 ) ; <sbyte*> [#uses=0]

View File

@ -5,9 +5,9 @@
implementation ; Functions:
void %foo(int %N) {
void %foo(int %N.in) {
entry:
%N = cast int %N to uint ; <uint> [#uses=1]
%N = cast int %N.in to uint ; <uint> [#uses=1]
br label %cond_true
cond_true: ; preds = %cond_true, %entry

View File

@ -4,10 +4,10 @@
%A = internal global [16 x [16 x int]] zeroinitializer, align 32
void %test(int %row, int %N) {
void %test(int %row, int %N.in) {
entry:
%N = cast int %N to uint
%tmp5 = setgt int %N, 0
%N = cast int %N.in to uint
%tmp5 = setgt int %N.in, 0
br bool %tmp5, label %cond_true, label %return
cond_true:

View File

@ -1,19 +1,21 @@
; An integer truncation to bool should be done with an and instruction to make
; sure only the LSBit survives. Test that this is the case both for a returned
; value and as the operand of a branch.
; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 &&
; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 | grep '\(and\)\|\(test.*\$1\)' | wc -l | grep 6
bool %test1(int %X) {
%Y = trunc int %X to bool
; RUN: llvm-as < %s | llc -march=x86 &&
; RUN: llvm-as < %s | llc -march=x86 | grep '\(and\)\|\(test.*\$1\)' | \
; RUN: wc -l | grep 6
define bool @zext %test1(i32 %X) {
%Y = trunc i32 %X to bool
ret bool %Y
}
bool %test2(int %val, int %mask) {
define bool %test2(i32 %val, i32 %mask) {
entry:
%mask = trunc int %mask to ubyte
%shifted = ashr int %val, ubyte %mask
%anded = and int %shifted, 1
%trunced = trunc int %anded to bool
%mask = trunc i32 %mask to i8
%shifted = ashr i32 %val, i8 %mask
%anded = and i32 %shifted, 1
%trunced = trunc i32 %anded to bool
br bool %trunced, label %ret_true, label %ret_false
ret_true:
ret bool true
@ -21,39 +23,40 @@ ret_false:
ret bool false
}
int %test3(sbyte* %ptr) {
%val = load sbyte* %ptr
%tmp = trunc sbyte %val to bool ; %<bool> [#uses=1]
define i32 %test3(i8* %ptr) {
%val = load i8* %ptr
%tmp = trunc i8 %val to bool
br bool %tmp, label %cond_true, label %cond_false
cond_true:
ret int 21
ret i32 21
cond_false:
ret int 42
ret i32 42
}
int %test4(sbyte* %ptr) {
%tmp = ptrtoint sbyte* %ptr to bool
define i32 %test4(i8* %ptr) {
%tmp = ptrtoint i8* %ptr to bool
br bool %tmp, label %cond_true, label %cond_false
cond_true:
ret int 21
ret i32 21
cond_false:
ret int 42
ret i32 42
}
int %test5(float %f) {
define i32 %test5(float %f) {
%tmp = fptoui float %f to bool
br bool %tmp, label %cond_true, label %cond_false
cond_true:
ret int 21
ret i32 21
cond_false:
ret int 42
ret i32 42
}
int %test6(double %d) {
define i32 %test6(double %d) {
%tmp = fptosi double %d to bool
br bool %tmp, label %cond_true, label %cond_false
cond_true:
ret int 21
ret i32 21
cond_false:
ret int 42
ret i32 42
}

View File

@ -1,7 +1,7 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -scalarrepl -instcombine | \
; RUN: llc -march=x86 -mcpu=yonah &&
; RUN: llc -march=x86 -mcpu=yonah &&
; RUN: llvm-upgrade < %s | llvm-as | opt -scalarrepl -instcombine | \
; RUN: llc -march=x86 -mcpu=yonah | not grep sub.*esp
; RUN: llc -march=x86 -mcpu=yonah | not grep sub.*esp
; This checks that various insert/extract idiom work without going to the
; stack.

View File

@ -1,4 +1,4 @@
; RUN: llvm-as -f %s -o %t.bc
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
; RUN: lli %t.bc > /dev/null
int %main() {

View File

@ -1,4 +1,4 @@
; RUN: llvm-as -f %s -o %t.bc
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
; RUN: lli %t.bc > /dev/null
target endian = little

View File

@ -1,4 +1,4 @@
; RUN: llvm-as -f %s -o %t.bc
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
; RUN: lli %t.bc > /dev/null
; Testcase distilled from 256.bzip2.

View File

@ -1,4 +1,4 @@
; RUN: llvm-as -f %s -o %t.bc
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
; RUN: lli %t.bc > /dev/null
; This testcase failed to work because two variable sized allocas confused the

View File

@ -1,4 +1,4 @@
; RUN: llvm-as -f %s -o %t.bc
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
; RUN: lli %t.bc > /dev/null
; This testcase exposes a bug in the local register allocator where it runs out

View File

@ -1,4 +1,4 @@
; RUN: llvm-as -f %s -o %t.bc
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
; RUN: lli %t.bc > /dev/null
%.LC0 = internal global [12 x sbyte] c"Hello World\00"

View File

@ -1,4 +1,4 @@
; RUN: llvm-as -f %s -o %t.bc
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
; RUN: lli %t.bc > /dev/null

View File

@ -1,4 +1,4 @@
; RUN: llvm-as -f %s -o %t.bc
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
; RUN: lli %t.bc > /dev/null

View File

@ -1,4 +1,4 @@
; RUN: llvm-as -f %s -o %t.bc
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
; RUN: lli %t.bc > /dev/null
implementation

View File

@ -1,4 +1,4 @@
; RUN: llvm-as -f %s -o %t.bc
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
; RUN: lli %t.bc > /dev/null

View File

@ -1,4 +1,4 @@
; RUN: llvm-as -f %s -o %t.bc
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
; RUN: lli %t.bc > /dev/null

View File

@ -1,4 +1,4 @@
; RUN: llvm-as -f %s -o %t.bc
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
; RUN: lli %t.bc > /dev/null

View File

@ -1,16 +1,16 @@
; RUN: llvm-as -f %s -o %t.bc
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
; RUN: lli %t.bc > /dev/null
; test return instructions
void %test() { ret void }
sbyte %test() { ret sbyte 1 }
ubyte %test() { ret ubyte 1 }
short %test() { ret short -1 }
ushort %test() { ret ushort 65535 }
void %test1() { ret void }
sbyte %test2() { ret sbyte 1 }
ubyte %test3() { ret ubyte 1 }
short %test4() { ret short -1 }
ushort %test5() { ret ushort 65535 }
int %main() { ret int 0 }
uint %test() { ret uint 4 }
long %test() { ret long 0 }
ulong %test() { ret ulong 0 }
float %test() { ret float 1.0 }
double %test() { ret double 2.0 }
uint %test6() { ret uint 4 }
long %test7() { ret long 0 }
ulong %test8() { ret ulong 0 }
float %test9() { ret float 1.0 }
double %test10() { ret double 2.0 }

View File

@ -6,35 +6,35 @@ int %main() {
%shamt = add ubyte 0, 1
; Left shifts...
%t1 = shl int 1, ubyte %shamt
%t2 = shl int 1, ubyte 4
%t1.s = shl int 1, ubyte %shamt
%t2.s = shl int 1, ubyte 4
%t1 = shl uint 1, ubyte %shamt
%t2 = shl uint 1, ubyte 5
;%t1 = shl long 1, ubyte %shamt
%t2 = shl long 1, ubyte 4
%t2.s = shl long 1, ubyte 4
;%t1 = shl ulong 1, ubyte %shamt
%t2 = shl ulong 1, ubyte 5
; Right shifts...
%tr1 = shr int 1, ubyte %shamt
%tr2 = shr int 1, ubyte 4
%tr1.s = shr int 1, ubyte %shamt
%tr2.s = shr int 1, ubyte 4
%tr1 = shr uint 1, ubyte %shamt
%tr2 = shr uint 1, ubyte 5
;%tr1 = shr long 1, ubyte %shamt
%tr1 = shr long 1, ubyte 4
%tr2 = shr long 1, ubyte %shamt
%tr3 = shl long 1, ubyte 4
%tr4 = shl long 1, ubyte %shamt
%tr1.l = shr long 1, ubyte 4
%tr2.l = shr long 1, ubyte %shamt
%tr3.l = shl long 1, ubyte 4
%tr4.l = shl long 1, ubyte %shamt
;%t1 = shr ulong 1, ubyte %shamt
%tr1 = shr ulong 1, ubyte 5
%tr2 = shr ulong 1, ubyte %shamt
%tr3 = shl ulong 1, ubyte 5
%tr4 = shl ulong 1, ubyte %shamt
%tr1.u = shr ulong 1, ubyte 5
%tr2.u = shr ulong 1, ubyte %shamt
%tr3.u = shl ulong 1, ubyte 5
%tr4.u = shl ulong 1, ubyte %shamt
ret int 0
}

View File

@ -1,4 +1,4 @@
; RUN: llvm-as < %s > %t.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.bc
; RUN: echo | llvm-as > %t.tmp.bc
; RUN: llvm-link %t.tmp.bc %t.bc

View File

@ -1,7 +1,7 @@
; This fails linking when it is linked with an empty file as the first object file
; RUN: llvm-as > %t1.bc < /dev/null
; RUN: llvm-as < %s > %t2.bc
; RUN: llvm-upgrade < %s | llvm-as > %t2.bc
; RUN: llvm-link %t[12].bc
%work = global int (int, int)* %zip

View File

@ -1,7 +1,7 @@
; This fails linking when it is linked with an empty file as the first object file
; RUN: llvm-as > %t.LinkTest.bc < /dev/null
; RUN: llvm-as < %s > %t.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.bc
; RUN: llvm-link %t.LinkTest.bc %t.bc
%work = global int 4

View File

@ -1,7 +1,7 @@
; This one fails because the LLVM runtime is allowing two null pointers of
; the same type to be created!
; RUN: echo "%T = type int" | llvm-as > %t.2.bc
; RUN: echo "%T = type int" | llvm-upgrade | llvm-as > %t.2.bc
; RUN: llvm-upgrade < %s | llvm-as -f > %t.1.bc
; RUN: llvm-link %t.[12].bc

View File

@ -1,8 +1,8 @@
; This one fails because the LLVM runtime is allowing two null pointers of
; the same type to be created!
; RUN: echo "%S = type { %T*} %T = type opaque" | llvm-as > %t.2.bc
; RUN: llvm-as < %s > %t.1.bc
; RUN: echo "%S = type { %T*} %T = type opaque" | llvm-upgrade | llvm-as > %t.2.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc
; RUN: llvm-link %t.[12].bc
%S = type { %T* }

View File

@ -1,5 +1,5 @@
; RUN: echo "%T = type opaque" | llvm-as > %t.2.bc
; RUN: llvm-as < %s > %t.1.bc
; RUN: echo "%T = type opaque" | llvm-upgrade | llvm-as > %t.2.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc
; RUN: llvm-link %t.[12].bc
%T = type opaque

View File

@ -1,5 +1,5 @@
; RUN: echo "%T = type int" | llvm-as > %t.1.bc
; RUN: llvm-as < %s > %t.2.bc
; RUN: echo "%T = type int" | llvm-upgrade | llvm-as > %t.1.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.2.bc
; RUN: llvm-link %t.[12].bc
%T = type opaque

View File

@ -1,6 +1,6 @@
; RUN: llvm-as < %s > %t.out1.bc
; RUN: echo "%S = type { int, int* }" | llvm-as > %t.out2.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.out1.bc
; RUN: echo "%S = type { int, int* }" | llvm-upgrade | llvm-as > %t.out2.bc
; RUN: llvm-link %t.out[12].bc
%T = type opaque

View File

@ -1,5 +1,5 @@
; RUN: llvm-as < %s > %t.out1.bc
; RUN: echo "%S = external global { int, opaque* } declare void %F(opaque*)" | llvm-as > %t.out2.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.out1.bc
; RUN: echo "%S = external global { int, opaque* } declare void %F(opaque*)" | llvm-upgrade | llvm-as > %t.out2.bc
; RUN: llvm-link %t.out[12].bc | llvm-dis | not grep opaque
; After linking this testcase, there should be no opaque types left. The two

View File

@ -1,8 +1,8 @@
; It's a bad idea to go recursively traipsing through types without a safety
; net.
; RUN: llvm-as < %s > %t.out1.bc
; RUN: echo "%S = type { %S*, int* }" | llvm-as > %t.out2.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.out1.bc
; RUN: echo "%S = type { %S*, int* }" | llvm-upgrade | llvm-as > %t.out2.bc
; RUN: llvm-link %t.out[12].bc
%S = type { %S*, opaque* }

View File

@ -1,5 +1,5 @@
; RUN: llvm-as < %s > %t.out1.bc
; RUN: echo "%S = type [8 x int] external global %S " | llvm-as > %t.out2.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.out1.bc
; RUN: echo "%S = type [8 x int] external global %S " | llvm-upgrade | llvm-as > %t.out2.bc
; RUN: llvm-link %t.out[12].bc | llvm-dis | grep %S | grep '{'
%S = type { int }

View File

@ -1,8 +1,8 @@
; The linker should merge link-once globals into strong external globals,
; just like it does for weak symbols!
; RUN: echo "%X = global int 7" | llvm-as > %t.2.bc
; RUN: llvm-as < %s > %t.1.bc
; RUN: echo "%X = global int 7" | llvm-upgrade | llvm-as > %t.2.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc
; RUN: llvm-link %t.[12].bc
%X = linkonce global int 7

View File

@ -1,5 +1,5 @@
; RUN: llvm-as < %s > %t.out2.bc
; RUN: echo "%me = global int* null" | llvm-as > %t.out1.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.out2.bc
; RUN: echo "%me = global int* null" | llvm-upgrade | llvm-as > %t.out1.bc
; RUN: llvm-link %t.out[12].bc -o /dev/null -f
%me = weak global int * null

View File

@ -1,8 +1,8 @@
; Test that a prototype can be marked const, and the definition is allowed
; to be nonconst.
; RUN: echo "%X = external constant int" | llvm-as > %t.2.bc
; RUN: llvm-as < %s > %t.1.bc
; RUN: llvm-link %t.[12].bc | llvm-dis | grep 'global int 7'
; RUN: echo "%X = external constant int" | llvm-upgrade | llvm-as > %t.2.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc
; RUN: llvm-link %t.[12].bc | llvm-dis | grep 'global i32 7'
%X = global int 7

View File

@ -1,8 +1,8 @@
; Test that a prototype can be marked const, and the definition is allowed
; to be nonconst.
; RUN: echo "%X = global int 7" | llvm-as > %t.2.bc
; RUN: llvm-as < %s > %t.1.bc
; RUN: llvm-link %t.[12].bc | llvm-dis | grep 'global int 7'
; RUN: echo "%X = global int 7" | llvm-upgrade | llvm-as > %t.2.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc
; RUN: llvm-link %t.[12].bc | llvm-dis | grep 'global i32 7'
%X = external constant int

View File

@ -1,5 +1,5 @@
; RUN: echo "%G = appending global [0 x int] zeroinitializer" | llvm-as > %t.out2.bc
; RUN: llvm-as < %s > %t.out1.bc
; RUN: echo "%G = appending global [0 x int] zeroinitializer" | llvm-upgrade | llvm-as > %t.out2.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.out1.bc
; RUN: llvm-link %t.out[12].bc | llvm-dis | grep '%G ='
; When linked, the globals should be merged, and the result should still

View File

@ -1,4 +1,4 @@
; RUN: llvm-as %s -f -o %s.bc ; llvm-link -f -o %s.linked %s.bc
; RUN: llvm-upgrade < %s | llvm-as -f -o %s.bc ; llvm-link -f -o %s.linked %s.bc
target endian = big
target pointersize = 32

View File

@ -1,7 +1,7 @@
; The linker should choose the largest alignment when linking.
; RUN: echo "%X = global int 7, align 8" | llvm-as > %t.2.bc
; RUN: llvm-as < %s > %t.1.bc
; RUN: echo "%X = global int 7, align 8" | llvm-upgrade | llvm-as > %t.2.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc
; RUN: llvm-link %t.[12].bc | llvm-dis | grep 'align 8'
%X = weak global int 7, align 4

View File

@ -1,7 +1,7 @@
; Test that appending linkage works correctly when arrays are the same size.
; RUN: echo "%X = appending global [1x int] [int 8]" | llvm-as > %t.2.bc
; RUN: llvm-as < %s > %t.1.bc
; RUN: echo "%X = appending global [1x int] [int 8]" | llvm-upgrade | llvm-as > %t.2.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc
; RUN: llvm-link %t.[12].bc | llvm-dis | grep 7 | grep 8
%X = appending global [1 x int] [int 7]

View File

@ -1,7 +1,7 @@
; Test that appending linkage works correctly when arrays are the same size.
; RUN: echo "%X = constant [1x int] [int 8]" | llvm-as > %t.2.bc
; RUN: llvm-upgrade %s | llvm-as > %t.1.bc
; RUN: echo "%X = constant [1x int] [int 8]" | llvm-upgrade | llvm-as > %t.2.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc
; RUN: llvm-link %t.[12].bc | llvm-dis | grep constant
%X = uninitialized global [1 x int]

View File

@ -1,7 +1,7 @@
; Test that appending linkage works correctly when arrays are the same size.
; RUN: echo "%X = external global [1x int]" | llvm-as > %t.2.bc
; RUN: llvm-upgrade %s | llvm-as > %t.1.bc
; RUN: echo "%X = external global [1x int]" | llvm-upgrade | llvm-as > %t.2.bc
; RUN: llvm-upgrade %s -o - | llvm-as > %t.1.bc
; RUN: llvm-link %t.[12].bc | llvm-dis | grep constant
%X = constant [1 x int] [ int 12 ]

View File

@ -1,6 +1,6 @@
; Test that appending linkage works correctly when arrays are the same size.
; RUN: echo "%X = external constant [1x int]" | llvm-as > %t.2.bc
; RUN: echo "%X = external constant [1x int]" | llvm-upgrade | llvm-as > %t.2.bc
; RUN: llvm-upgrade %s | llvm-as > %t.1.bc
; RUN: llvm-link %t.[12].bc | llvm-dis | grep constant

View File

@ -1,8 +1,8 @@
; This fails because the linker renames the non-opaque type not the opaque
; one...
; RUN: echo "%X = linkonce global int 8" | llvm-as > %t.2.bc
; RUN: llvm-as < %s > %t.1.bc
; RUN: echo "%X = linkonce global int 8" | llvm-upgrade | llvm-as > %t.2.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc
; RUN: llvm-link %t.[12].bc | llvm-dis
%X = linkonce global int 7

View File

@ -1,9 +1,9 @@
; RUN: llvm-as < %s > %t.bc
; RUN: llvm-as < `dirname %s`/testlink1.ll > %t2.bc
; RUN: llvm-upgrade < %s | llvm-as > %t.bc
; RUN: llvm-upgrade < `dirname %s`/testlink1.ll | llvm-as > %t2.bc
; RUN: llvm-link %t.bc %t.bc %t2.bc -o %t1.bc -f
; RUN: llvm-dis < %t1.bc |grep "kallsyms_names = extern_weak" &&
; RUN: llvm-dis < %t1.bc |grep "MyVar = external global int" &&
; RUN: llvm-dis < %t1.bc |grep "Inte = global int"
; RUN: llvm-dis < %t1.bc | grep "kallsyms_names = extern_weak" &&
; RUN: llvm-dis < %t1.bc | grep "MyVar = external global i32" &&
; RUN: llvm-dis < %t1.bc | grep "Inte = global i32"
%kallsyms_names = extern_weak global [0 x ubyte]
%MyVar = extern_weak global int

View File

@ -1,4 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -argpromotion | llvm-dis | grep 'load int\* %A'
; RUN: llvm-upgrade < %s | llvm-as | opt -argpromotion | llvm-dis | grep 'load i32\* %A'
implementation

View File

@ -1,4 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis | grep 'uint -1' &&
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis | grep 'i32 -1' &&
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis | not grep zeroinitializer
< 4 x uint> %test() {

View File

@ -1,5 +1,5 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis | grep 'ret int -1' &&
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis | grep 'ret uint 1'
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis | grep 'ret i32 -1' &&
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis | grep 'ret i32 1'
int %test1() {
%A = sext bool true to int

View File

@ -1,4 +1,4 @@
; RUN: llvm-as < %s | llvm-dis &&
; RUN: llvm-as < %s | llvm-dis | grep 0x36A0000000000000
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis &&
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | grep 0x36A0000000000000
%A = global float bitcast (int 1 to float)

View File

@ -1,4 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis | grep -F 'ret int* null' | wc -l | grep 2
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis | grep -F 'ret i32* null' | wc -l | grep 2
int* %test1() {
%X = cast float 0.0 to int*
ret int* %X

View File

@ -1,4 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -dse | llvm-dis | grep 'store int 1234567'
; RUN: llvm-upgrade < %s | llvm-as | opt -dse | llvm-dis | grep 'store i32 1234567'
; Do not delete stores that are only partially killed.

View File

@ -755,22 +755,22 @@ cond_true226.critedge: ; preds = %cond_false210
%tmp.i = load %struct.TType** %DP_TTable ; <%struct.TType*> [#uses=1]
%tmp.i7.b = load bool* %TTSize.b ; <bool> [#uses=1]
%tmp1.i = select bool %tmp.i7.b, uint 60000000, uint 0 ; <uint> [#uses=1]
%tmp.i = getelementptr %struct.TType* %tmp.i, int 0, uint 0 ; <sbyte*> [#uses=1]
call void %llvm.memset.i32( sbyte* %tmp.i, ubyte 0, uint %tmp1.i, uint 4 )
%tmp.i.sb = getelementptr %struct.TType* %tmp.i, int 0, uint 0 ; <sbyte*> [#uses=1]
call void %llvm.memset.i32( sbyte* %tmp.i.sb, ubyte 0, uint %tmp1.i, uint 4 )
%tmp2.i = load %struct.TType** %AS_TTable ; <%struct.TType*> [#uses=1]
%tmp3.i8.b = load bool* %TTSize.b ; <bool> [#uses=1]
%tmp4.i = select bool %tmp3.i8.b, uint 60000000, uint 0 ; <uint> [#uses=1]
%tmp2.i = getelementptr %struct.TType* %tmp2.i, int 0, uint 0 ; <sbyte*> [#uses=1]
call void %llvm.memset.i32( sbyte* %tmp2.i, ubyte 0, uint %tmp4.i, uint 4 )
%tmp.i = load %struct.QTType** %QS_TTable ; <%struct.QTType*> [#uses=1]
%tmp.i.QTT = load %struct.QTType** %QS_TTable ; <%struct.QTType*> [#uses=1]
%tmp5.i9.b = load bool* %TTSize.b ; <bool> [#uses=1]
%tmp6.i10 = select bool %tmp5.i9.b, uint 48000000, uint 0 ; <uint> [#uses=1]
%tmp7.i = getelementptr %struct.QTType* %tmp.i, int 0, uint 0 ; <sbyte*> [#uses=1]
%tmp7.i = getelementptr %struct.QTType* %tmp.i.QTT, int 0, uint 0 ; <sbyte*> [#uses=1]
call void %llvm.memset.i32( sbyte* %tmp7.i, ubyte 0, uint %tmp6.i10, uint 4 )
%tmp.i = load %struct.ECacheType** %ECache ; <%struct.ECacheType*> [#uses=1]
%tmp.i.ECache = load %struct.ECacheType** %ECache ; <%struct.ECacheType*> [#uses=1]
%tmp.i14.b = load bool* %ECacheSize.b ; <bool> [#uses=1]
%tmp1.i16 = select bool %tmp.i14.b, uint 12000000, uint 0 ; <uint> [#uses=1]
%tmp.i17 = cast %struct.ECacheType* %tmp.i to sbyte* ; <sbyte*> [#uses=1]
%tmp.i17 = cast %struct.ECacheType* %tmp.i.ECache to sbyte* ; <sbyte*> [#uses=1]
call void %llvm.memset.i32( sbyte* %tmp.i17, ubyte 0, uint %tmp1.i16, uint 4 )
call void %llvm.memset.i32( sbyte* cast ([300 x int]* %rootlosers to sbyte*), ubyte 0, uint 1200, uint 4 )
%tmp234.b = load bool* %is_pondering.b ; <bool> [#uses=1]
@ -800,12 +800,12 @@ bb260: ; preds = %bb249
%tmp1.b.i = load bool* %PBSize.b ; <bool> [#uses=1]
%tmp1.i1 = select bool %tmp1.b.i, uint 200000, uint 0 ; <uint> [#uses=1]
%tmp.i2 = call sbyte* %calloc( uint %tmp1.i1, uint 44 ) ; <sbyte*> [#uses=1]
%tmp.i = cast sbyte* %tmp.i2 to ubyte* ; <ubyte*> [#uses=1]
store ubyte* %tmp.i, ubyte** %membuff
%tmp.i.ub = cast sbyte* %tmp.i2 to ubyte* ; <ubyte*> [#uses=1]
store ubyte* %tmp.i.ub, ubyte** %membuff
%tmp2.i3 = call sbyte* %calloc( uint 1, uint 44 ) ; <sbyte*> [#uses=3]
%tmp2.i = cast sbyte* %tmp2.i3 to %struct.node_t* ; <%struct.node_t*> [#uses=6]
%tmp.i = getelementptr [512 x %struct.move_s]* null, int 0, int 0 ; <%struct.move_s*> [#uses=3]
call fastcc void %gen( %struct.move_s* %tmp.i )
%tmp.i.move_s = getelementptr [512 x %struct.move_s]* null, int 0, int 0 ; <%struct.move_s*> [#uses=3]
call fastcc void %gen( %struct.move_s* %tmp.i.move_s )
%tmp3.i4 = load int* %numb_moves ; <int> [#uses=4]
%tmp3.i5 = cast int %tmp3.i4 to uint ; <uint> [#uses=0]
store bool false, bool* %alllosers.b
@ -850,8 +850,8 @@ in_check.exit.i: ; preds = %bb260
cond_true43.i: ; preds = %cond_false12.i.i, %cond_true4.i.i
%tmp21.0.ph.i = phi int [ %tmp217.i, %cond_true4.i.i ], [ %tmp2120.i, %cond_false12.i.i ] ; <int> [#uses=1]
%i.0.0.i = cast uint 0 to int ; <int> [#uses=2]
call fastcc void %make( %struct.move_s* %tmp.i, int %i.0.0.i )
%tmp27.i = call fastcc uint %check_legal( %struct.move_s* %tmp.i, int %i.0.0.i, int %tmp21.0.ph.i ) ; <uint> [#uses=1]
call fastcc void %make( %struct.move_s* %tmp.i.move_s, int %i.0.0.i )
%tmp27.i = call fastcc uint %check_legal( %struct.move_s* %tmp.i.move_s, int %i.0.0.i, int %tmp21.0.ph.i ) ; <uint> [#uses=1]
%tmp.i6 = seteq uint %tmp27.i, 0 ; <bool> [#uses=0]
ret void

View File

@ -1,4 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -indvars | llvm-dis | grep 'ret int 152'
; RUN: llvm-upgrade < %s | llvm-as | opt -indvars | llvm-dis | grep 'ret i32 152'
int %main() {
entry:

View File

@ -1,4 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -indvars | llvm-dis | grep 'ret int 27'
; RUN: llvm-upgrade < %s | llvm-as | opt -indvars | llvm-dis | grep 'ret i32 27'
; Make sure to compute the right exit value based on negative strides.
; PR726

View File

@ -1,4 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -indvars -instcombine | llvm-dis | grep 'store int 0'
; RUN: llvm-upgrade < %s | llvm-as | opt -indvars -instcombine | llvm-dis | grep 'store i32 0'
; Test that -indvars can reduce variable stride IVs. If it can reduce variable
; stride iv's, it will make %iv. and %m.0.0 isomorphic to each other without
; cycles, allowing the tmp.21 subtraction to be eliminated.
@ -19,7 +19,7 @@ no_exit.preheader: ; preds = %entry
br label %no_exit
no_exit: ; preds = %no_exit, %no_exit.preheader
%iv. = phi uint [ 0, %no_exit.preheader ], [ %iv..inc, %no_exit ] ; <uint> [#uses=1]
%iv.ui = phi uint [ 0, %no_exit.preheader ], [ %iv..inc.ui, %no_exit ] ; <uint> [#uses=1]
%iv. = phi int [ %tmp.5, %no_exit.preheader ], [ %iv..inc, %no_exit ] ; <int> [#uses=2]
%m.0.0 = phi int [ %tmp.5, %no_exit.preheader ], [ %tmp.24, %no_exit ] ; <int> [#uses=2]
store int 2, int* %tmp.16
@ -27,8 +27,8 @@ no_exit: ; preds = %no_exit, %no_exit.preheader
store int %tmp.21, int* %data
%tmp.24 = add int %m.0.0, %tmp.9 ; <int> [#uses=1]
%iv..inc = add int %tmp.9, %iv. ; <int> [#uses=1]
%iv..inc = add uint %iv., 1 ; <uint> [#uses=2]
%iv..inc1 = cast uint %iv..inc to int ; <int> [#uses=1]
%iv..inc.ui = add uint %iv.ui, 1 ; <uint> [#uses=2]
%iv..inc1 = cast uint %iv..inc.ui to int ; <int> [#uses=1]
%tmp.12 = setlt int %iv..inc1, %tmp.2 ; <bool> [#uses=1]
br bool %tmp.12, label %no_exit, label %return.loopexit

View File

@ -1,4 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | grep 'ret int 1'
; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | grep 'ret i32 1'
; ModuleID = 'short.opt.bc'
implementation ; Functions:

View File

@ -10,7 +10,7 @@ implementation ; Functions:
int %mem_mono_copy_mono(%struct.gx_device* %dev, ubyte* %base, int %sourcex, int %raster, int %x, int %y, int %w, int %h, uint %zero, uint %one) {
entry:
%raster = cast int %raster to uint ; <uint> [#uses=3]
%raster.ui = cast int %raster to uint ; <uint> [#uses=3]
%tmp = seteq uint %one, %zero ; <bool> [#uses=1]
br bool %tmp, label %cond_true, label %cond_next
@ -146,7 +146,6 @@ cond_true249: ; preds = %cond_true249, %cond_true249.preheader
%optr.3.2 = phi ubyte* [ %tmp232, %cond_true249 ], [ %dest.1.0, %cond_true249.preheader ] ; <ubyte*> [#uses=1]
%bptr.3.2 = phi ubyte* [ %tmp226, %cond_true249 ], [ %line.1.0, %cond_true249.preheader ] ; <ubyte*> [#uses=1]
%tmp. = add int %tmp109, %w ; <int> [#uses=1]
%indvar = cast uint %indvar to int ; <int> [#uses=1]
%tmp.58 = mul int %indvar, -8 ; <int> [#uses=1]
%tmp.57 = add int %tmp., -16 ; <int> [#uses=1]
%tmp246.2 = add int %tmp.58, %tmp.57 ; <int> [#uses=1]
@ -236,10 +235,8 @@ cond_true295.us: ; preds = %cond_next280.us, %cond_true295.preheader.split.us
%dest.1.0.us = phi ubyte* [ %tmp286.us, %cond_next280.us ], [ %tmp100, %cond_true295.preheader.split.us ] ; <ubyte*> [#uses=3]
%dest_line.1.0.us = phi ubyte** [ %tmp282.us, %cond_next280.us ], [ %tmp96, %cond_true295.preheader.split.us ] ; <ubyte**> [#uses=1]
%tmp.89 = sub uint 0, %indvar86 ; <uint> [#uses=1]
%tmp.89 = cast uint %tmp.89 to int ; <int> [#uses=1]
%tmp292.0.us = add int %tmp.89, %tmp29222 ; <int> [#uses=1]
%tmp.91 = mul uint %indvar86, %raster ; <uint> [#uses=1]
%tmp.91 = cast uint %tmp.91 to int ; <int> [#uses=1]
%tmp.91 = mul uint %indvar86, %raster.ui ; <uint> [#uses=1]
%tmp104.sum101 = add int %tmp102, %tmp.91 ; <int> [#uses=1]
%line.1.0.us = getelementptr ubyte* %base, int %tmp104.sum101 ; <ubyte*> [#uses=2]
%tmp.us = load ubyte* %line.1.0.us ; <ubyte> [#uses=1]
@ -313,10 +310,8 @@ cond_true295: ; preds = %cond_true295.preheader.split, %cond_next280
%dest.1.0 = phi ubyte* [ %tmp286, %cond_next280 ], [ %tmp100, %cond_true295.preheader.split ] ; <ubyte*> [#uses=4]
%dest_line.1.0 = phi ubyte** [ %tmp282, %cond_next280 ], [ %tmp96, %cond_true295.preheader.split ] ; <ubyte**> [#uses=1]
%tmp.63 = sub uint 0, %indvar60 ; <uint> [#uses=1]
%tmp.63 = cast uint %tmp.63 to int ; <int> [#uses=1]
%tmp292.0 = add int %tmp.63, %tmp29222 ; <int> [#uses=1]
%tmp.65 = mul uint %indvar60, %raster ; <uint> [#uses=1]
%tmp.65 = cast uint %tmp.65 to int ; <int> [#uses=1]
%tmp.65 = mul uint %indvar60, %raster.ui ; <uint> [#uses=1]
%tmp104.sum97 = add int %tmp102, %tmp.65 ; <int> [#uses=1]
%line.1.0 = getelementptr ubyte* %base, int %tmp104.sum97 ; <ubyte*> [#uses=3]
%tmp = load ubyte* %line.1.0 ; <ubyte> [#uses=1]
@ -386,7 +381,6 @@ cond_true398: ; preds = %cond_true398, %cond_true398.preheader
%optr309.3.0 = phi ubyte* [ %optr309.3, %cond_true398 ], [ %optr309.353, %cond_true398.preheader ] ; <ubyte*> [#uses=2]
%optr309.3.in.0 = add uint %indvar66, %optr309.3.in51 ; <uint> [#uses=1]
%tmp.70 = add int %tmp109, %w ; <int> [#uses=1]
%indvar66 = cast uint %indvar66 to int ; <int> [#uses=1]
%tmp.72 = mul int %indvar66, -8 ; <int> [#uses=1]
%tmp.71 = add int %tmp.70, -8 ; <int> [#uses=1]
%count308.3.0 = add int %tmp.72, %tmp.71 ; <int> [#uses=1]
@ -440,7 +434,6 @@ cond_true414: ; preds = %cond_true404
%tmp416 = load ubyte* %tmp410 ; <ubyte> [#uses=1]
%tmp416 = cast ubyte %tmp416 to uint ; <uint> [#uses=1]
%tmp418 = shr uint %tmp416, ubyte %tmp319 ; <uint> [#uses=1]
%tmp418 = cast uint %tmp418 to int ; <int> [#uses=1]
%tmp420 = add int %tmp418, %tmp408 ; <int> [#uses=1]
br label %cond_next422
@ -479,7 +472,6 @@ cond_true457.preheader: ; preds = %cond_false299
%tmp354 = and uint %iftmp.37.0, %mask.1.1 ; <uint> [#uses=1]
%tmp361 = sub int %w, %tmp110 ; <int> [#uses=2]
%tmp39755 = setgt int %tmp361, 7 ; <bool> [#uses=1]
%iftmp.35.0 = cast uint %iftmp.35.0 to int ; <int> [#uses=1]
%tmp426 = cast uint %rmask.0.1 to ubyte ; <ubyte> [#uses=1]
%tmp426not = xor ubyte %tmp426, 255 ; <ubyte> [#uses=1]
%tmp428 = or ubyte %tmp347, %tmp426not ; <ubyte> [#uses=1]
@ -492,10 +484,8 @@ cond_true457: ; preds = %cond_true457.preheader, %cond_next442
%dest.3.0 = phi ubyte* [ %tmp448, %cond_next442 ], [ %tmp100, %cond_true457.preheader ] ; <ubyte*> [#uses=3]
%dest_line.3.0 = phi ubyte** [ %tmp444, %cond_next442 ], [ %tmp96, %cond_true457.preheader ] ; <ubyte**> [#uses=1]
%tmp.77 = sub uint 0, %indvar74 ; <uint> [#uses=1]
%tmp.77 = cast uint %tmp.77 to int ; <int> [#uses=1]
%tmp454.0 = add int %tmp.77, %tmp45438 ; <int> [#uses=1]
%tmp.79 = mul uint %indvar74, %raster ; <uint> [#uses=1]
%tmp.79 = cast uint %tmp.79 to int ; <int> [#uses=1]
%tmp.79 = mul uint %indvar74, %raster.ui ; <uint> [#uses=1]
%tmp104.sum = add int %tmp102, %tmp.79 ; <int> [#uses=1]
%line.3.0 = getelementptr ubyte* %base, int %tmp104.sum ; <ubyte*> [#uses=3]
%tmp318 = load ubyte* %line.3.0 ; <ubyte> [#uses=2]

View File

@ -9,8 +9,8 @@ void %test() {
entry:
%tmp = getelementptr { long, long, long, long }* null, int 0, uint 3
%tmp = load long* %tmp ; <long> [#uses=1]
%tmp8 = load ulong* null ; <ulong> [#uses=1]
%tmp8 = cast ulong %tmp8 to long ; <long> [#uses=1]
%tmp8.ui = load ulong* null ; <ulong> [#uses=1]
%tmp8 = cast ulong %tmp8.ui to long ; <long> [#uses=1]
%tmp9 = and long %tmp8, %tmp ; <long> [#uses=1]
%sext = cast long %tmp9 to int ; <int> [#uses=1]
%tmp27.i = cast int %sext to long ; <long> [#uses=1]

View File

@ -2,10 +2,10 @@
; PR913
int %test(int* %tmp1) {
%tmp = load int* %tmp1 ; <int> [#uses=1]
%tmp = cast int %tmp to uint ; <uint> [#uses=1]
%tmp2 = shr uint %tmp, ubyte 5 ; <uint> [#uses=1]
%tmp2 = cast uint %tmp2 to int ; <int> [#uses=1]
%tmp.i = load int* %tmp1 ; <int> [#uses=1]
%tmp = cast int %tmp.i to uint ; <uint> [#uses=1]
%tmp2.ui = shr uint %tmp, ubyte 5 ; <uint> [#uses=1]
%tmp2 = cast uint %tmp2.ui to int ; <int> [#uses=1]
%tmp3 = and int %tmp2, 1 ; <int> [#uses=1]
%tmp3 = cast int %tmp3 to bool ; <bool> [#uses=1]
%tmp34 = cast bool %tmp3 to int ; <int> [#uses=1]

View File

@ -1,5 +1,5 @@
; The optimizer should be able to remove cast operation here.
; RUN: llvm-upgrade %s -o - | llvm-as | opt -instcombine | llvm-dis | not grep 'sext.*int'
; RUN: llvm-upgrade %s -o - | llvm-as | opt -instcombine | llvm-dis | not grep 'sext.*i32'
bool %eq_signed_to_small_unsigned(sbyte %SB) {
%Y = cast sbyte %SB to uint ; <uint> [#uses=1]

View File

@ -1,6 +1,6 @@
; This test case is reduced from llvmAsmParser.cpp
; The optimizer should not remove the cast here.
; RUN: llvm-upgrade %s -o - | llvm-as | opt -instcombine | llvm-dis | grep 'sext.*int'
; RUN: llvm-upgrade %s -o - | llvm-as | opt -instcombine | llvm-dis | grep 'sext.*i32'
bool %test(short %X) {
%A = cast short %X to uint

View File

@ -1,4 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep 'ret int %A'
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep 'ret i32 %A'
int %test(int %A) {
%X = or bool false, false

View File

@ -1,14 +1,14 @@
; Test some floating point casting cases
; RUN: llvm-upgrade %s -o - | llvm-as | opt -instcombine | llvm-dis | notcast
; RUN: llvm-upgrade %s -o - | llvm-as | opt -instcombine | llvm-dis | \
; RUN: grep 'ret [us]byte \(-1\)\|\(255\)'
; RUN: grep 'ret i8 \(-1\)\|\(255\)'
sbyte %test() {
sbyte %test1() {
%x = fptoui float 255.0 to sbyte
ret sbyte %x
}
ubyte %test() {
ubyte %test2() {
%x = fptosi float -1.0 to ubyte
ret ubyte %x
}

View File

@ -1,5 +1,5 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine -disable-output &&
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep 'lshr int' | wc -l | grep 2 &&
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep 'lshr i32' | wc -l | grep 2 &&
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | not grep ashr
int %test1(int %X, ubyte %A) {

View File

@ -1,7 +1,7 @@
; This test makes sure that these instructions are properly eliminated.
;
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep -v 'sub int %Cok, %Bok' | not grep sub
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep -v 'sub i32 %Cok, %Bok' | not grep sub
implementation

View File

@ -1,4 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep 'and int %Y, 8'
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep 'and i32 %Y, 8'
int %test1(ubyte %X) {
%Y = cast ubyte %X to int

View File

@ -1,5 +1,5 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | grep "X3.lcssa = phi int" &&
; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | grep "%X4 = add int 3, %X3.lcssa"
; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | grep "X3.lcssa = phi i32" &&
; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | grep "%X4 = add i32 3, %X3.lcssa"
void %lcssa(bool %S2) {
entry:
@ -23,4 +23,4 @@ post.if:
loop.exit:
%X4 = add int 3, %X3
ret void
}
}

View File

@ -1,12 +1,12 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -licm | llvm-dis
void "testfunc"(int %i) {
void "testfunc"(int %i.s) {
br label %Loop
Loop:
%j = phi uint [0, %0], [%Next, %Loop]
%i = cast int %i to uint
%i = cast int %i.s to uint
%i2 = mul uint %i, 17
%Next = add uint %j, %i2
%cond = seteq uint %Next, 0

View File

@ -1,7 +1,7 @@
; Test that LICM works when there is not a loop-preheader
; RUN: llvm-upgrade < %s | llvm-as | opt -licm | llvm-dis
void "testfunc"(int %i, bool %ifcond) {
void "testfunc"(int %i.s, bool %ifcond) {
br bool %ifcond, label %Then, label %Else
Then:
br label %Loop
@ -10,7 +10,7 @@ Else:
Loop:
%j = phi uint [0, %Then], [12, %Else], [%Next, %Loop]
%i = cast int %i to uint
%i = cast int %i.s to uint
%i2 = mul uint %i, 17
%Next = add uint %j, %i2
%cond = seteq uint %Next, 0

View File

@ -25,8 +25,8 @@ no_exit.1.outer: ; preds = %cond_true, %no_exit.1.preheader
br label %no_exit.1
no_exit.1: ; preds = %cond_continue, %no_exit.1.outer
%indvar = phi uint [ 0, %no_exit.1.outer ], [ %indvar.next, %cond_continue ] ; <uint> [#uses=2]
%indvar = cast uint %indvar to int ; <int> [#uses=1]
%indvar.ui = phi uint [ 0, %no_exit.1.outer ], [ %indvar.next, %cond_continue ] ; <uint> [#uses=2]
%indvar = cast uint %indvar.ui to int ; <int> [#uses=1]
%j.1.2 = add int %indvar, %j.1.2.ph ; <int> [#uses=2]
%tmp.11 = add int %j.1.2, %tmp.9 ; <int> [#uses=1]
%tmp.12 = cast int %tmp.11 to ubyte ; <ubyte> [#uses=1]
@ -43,7 +43,7 @@ cond_true: ; preds = %no_exit.1
cond_continue: ; preds = %no_exit.1
%tmp.519 = setlt int %inc.1, %C ; <bool> [#uses=1]
%indvar.next = add uint %indvar, 1 ; <uint> [#uses=1]
%indvar.next = add uint %indvar.ui, 1 ; <uint> [#uses=1]
br bool %tmp.519, label %no_exit.1, label %loopexit.1
loopexit.1: ; preds = %cond_continue, %cond_true, %loopentry.1

View File

@ -1,17 +1,17 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -loop-reduce | llvm-dis | grep mul | wc -l | grep 1
; LSR should not make two copies of the Q*L expression in the preheader!
sbyte %test(sbyte* %A, sbyte* %B, int %L, int %Q, int %N) {
sbyte %test(sbyte* %A, sbyte* %B, int %L, int %Q, int %N.s) {
entry:
%tmp.6 = mul int %Q, %L ; <int> [#uses=1]
%N = cast int %N to uint ; <uint> [#uses=1]
%N = cast int %N.s to uint ; <uint> [#uses=1]
br label %no_exit
no_exit: ; preds = %no_exit, %no_exit.preheader
%indvar = phi uint [ 0, %entry], [ %indvar.next, %no_exit ] ; <uint> [#uses=2]
%indvar.ui = phi uint [ 0, %entry], [ %indvar.next, %no_exit ] ; <uint> [#uses=2]
%Sum.0.0 = phi sbyte [ 0, %entry], [ %tmp.21, %no_exit ] ; <sbyte> [#uses=1]
%indvar = cast uint %indvar to int ; <int> [#uses=1]
%N_addr.0.0 = sub int %N, %indvar ; <int> [#uses=1]
%indvar = cast uint %indvar.ui to int ; <int> [#uses=1]
%N_addr.0.0 = sub int %N.s, %indvar ; <int> [#uses=1]
%tmp.8 = add int %N_addr.0.0, %tmp.6 ; <int> [#uses=2]
%tmp.9 = getelementptr sbyte* %A, int %tmp.8 ; <sbyte*> [#uses=1]
%tmp.10 = load sbyte* %tmp.9 ; <sbyte> [#uses=1]
@ -19,7 +19,7 @@ no_exit: ; preds = %no_exit, %no_exit.preheader
%tmp.18 = load sbyte* %tmp.17 ; <sbyte> [#uses=1]
%tmp.19 = sub sbyte %tmp.10, %tmp.18 ; <sbyte> [#uses=1]
%tmp.21 = add sbyte %tmp.19, %Sum.0.0 ; <sbyte> [#uses=2]
%indvar.next = add uint %indvar, 1 ; <uint> [#uses=2]
%indvar.next = add uint %indvar.ui, 1 ; <uint> [#uses=2]
%exitcond = seteq uint %indvar.next, %N ; <bool> [#uses=1]
br bool %exitcond, label %loopexit, label %no_exit

View File

@ -1,4 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -loop-reduce | llvm-dis | grep 'add uint %iv.*inc, 1'
; RUN: llvm-upgrade < %s | llvm-as | opt -loop-reduce | llvm-dis | grep 'add i32 %iv.*inc, 1'
;
; Make sure that the use of the IV outside of the loop (the store) uses the
; post incremented value of the IV, not the preincremented value. This
@ -13,13 +13,13 @@ then.0:
br label %no_exit.2
no_exit.2: ; preds = %no_exit.2, %then.0
%indvar630 = phi uint [ 0, %then.0 ], [ %indvar.next631, %no_exit.2 ] ; <uint> [#uses=3]
%indvar630 = cast uint %indvar630 to int ; <int> [#uses=1]
%tmp.38 = getelementptr [700 x int]* %nbeaux_.0__558, int 0, uint %indvar630 ; <int*> [#uses=1]
%indvar630.ui = phi uint [ 0, %then.0 ], [ %indvar.next631, %no_exit.2 ] ; <uint> [#uses=3]
%indvar630 = cast uint %indvar630.ui to int ; <int> [#uses=1]
%tmp.38 = getelementptr [700 x int]* %nbeaux_.0__558, int 0, uint %indvar630.ui ; <int*> [#uses=1]
store int 0, int* %tmp.38
%inc.2 = add int %indvar630, 2 ; <int> [#uses=2]
%tmp.34 = call bool %pred(int %indvar630)
%indvar.next631 = add uint %indvar630, 1 ; <uint> [#uses=1]
%indvar.next631 = add uint %indvar630.ui, 1 ; <uint> [#uses=1]
br bool %tmp.34, label %no_exit.2, label %loopexit.2.loopexit
loopexit.2.loopexit: ; preds = %no_exit.2

View File

@ -17,10 +17,10 @@ target triple = "i686-apple-darwin8"
implementation ; Functions:
void %foo(int %k, int %i) {
void %foo(int %k, int %i.s) {
entry:
%i = cast int %i to uint ; <uint> [#uses=2]
%k_addr.012 = shl int %i, ubyte 1 ; <int> [#uses=1]
%i = cast int %i.s to uint ; <uint> [#uses=2]
%k_addr.012 = shl int %i.s, ubyte 1 ; <int> [#uses=1]
%tmp14 = setgt int %k_addr.012, 8192 ; <bool> [#uses=1]
br bool %tmp14, label %return, label %bb.preheader
@ -35,7 +35,7 @@ bb: ; preds = %bb, %bb.preheader
%k_addr.0.0 = cast uint %tmp.16 to int ; <int> [#uses=1]
%tmp = getelementptr [8193 x sbyte]* %flags2, int 0, uint %tmp.16 ; <sbyte*> [#uses=1]
store sbyte 0, sbyte* %tmp
%k_addr.0 = add int %k_addr.0.0, %i ; <int> [#uses=1]
%k_addr.0 = add int %k_addr.0.0, %i.s ; <int> [#uses=1]
%tmp = setgt int %k_addr.0, 8192 ; <bool> [#uses=1]
%indvar.next = add uint %indvar, 1 ; <uint> [#uses=1]
br bool %tmp, label %return.loopexit, label %bb

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