summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/Alpha
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2007-01-17 07:59:14 +0000
committerReid Spencer <rspencer@reidspencer.com>2007-01-17 07:59:14 +0000
commit83b3d8267225d585678d5d3af9bba5735f4b415d (patch)
tree9d6c2ad7bfd568186e83a39e6f03e1c0bf415715 /llvm/test/CodeGen/Alpha
parent100602d7561ca5e245db6194bddae86357d203d4 (diff)
downloadbcm5719-llvm-83b3d8267225d585678d5d3af9bba5735f4b415d.tar.gz
bcm5719-llvm-83b3d8267225d585678d5d3af9bba5735f4b415d.zip
Regression is gone, don't try to find it on clean target.
llvm-svn: 33296
Diffstat (limited to 'llvm/test/CodeGen/Alpha')
-rw-r--r--llvm/test/CodeGen/Alpha/.cvsignore3
-rw-r--r--llvm/test/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll19
-rw-r--r--llvm/test/CodeGen/Alpha/2005-12-12-MissingFCMov.ll44
-rw-r--r--llvm/test/CodeGen/Alpha/2006-01-18-MissedGlobal.ll30
-rw-r--r--llvm/test/CodeGen/Alpha/2006-01-26-VaargBreak.ll17
-rw-r--r--llvm/test/CodeGen/Alpha/2006-04-04-zextload.ll36
-rw-r--r--llvm/test/CodeGen/Alpha/2006-07-03-ASMFormalLowering.ll20
-rw-r--r--llvm/test/CodeGen/Alpha/2006-11-01-vastart.ll18
-rw-r--r--llvm/test/CodeGen/Alpha/add.ll180
-rw-r--r--llvm/test/CodeGen/Alpha/bic.ll11
-rw-r--r--llvm/test/CodeGen/Alpha/bsr.ll13
-rw-r--r--llvm/test/CodeGen/Alpha/call_adj.ll15
-rw-r--r--llvm/test/CodeGen/Alpha/cmov.ll23
-rw-r--r--llvm/test/CodeGen/Alpha/cmpbge.ll16
-rw-r--r--llvm/test/CodeGen/Alpha/ctlz.ll16
-rw-r--r--llvm/test/CodeGen/Alpha/ctlz_e.ll12
-rw-r--r--llvm/test/CodeGen/Alpha/ctpop.ll17
-rw-r--r--llvm/test/CodeGen/Alpha/dg.exp3
-rw-r--r--llvm/test/CodeGen/Alpha/eqv.ll11
-rw-r--r--llvm/test/CodeGen/Alpha/i32_sub_1.ll10
-rw-r--r--llvm/test/CodeGen/Alpha/jmp_table.ll99
-rw-r--r--llvm/test/CodeGen/Alpha/mul5.ll50
-rw-r--r--llvm/test/CodeGen/Alpha/neg1.ll9
-rw-r--r--llvm/test/CodeGen/Alpha/not.ll10
-rw-r--r--llvm/test/CodeGen/Alpha/ornot.ll11
-rw-r--r--llvm/test/CodeGen/Alpha/rpcc.ll10
-rw-r--r--llvm/test/CodeGen/Alpha/srl_and.ll10
-rw-r--r--llvm/test/CodeGen/Alpha/weak.ll18
-rw-r--r--llvm/test/CodeGen/Alpha/zapnot.ll10
-rw-r--r--llvm/test/CodeGen/Alpha/zapnot2.ll10
-rw-r--r--llvm/test/CodeGen/Alpha/zapnot3.ll14
-rw-r--r--llvm/test/CodeGen/Alpha/zapnot4.ll8
32 files changed, 773 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/Alpha/.cvsignore b/llvm/test/CodeGen/Alpha/.cvsignore
new file mode 100644
index 00000000000..7f2443f2f31
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/.cvsignore
@@ -0,0 +1,3 @@
+Output
+*.log
+*.sum
diff --git a/llvm/test/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll b/llvm/test/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll
new file mode 100644
index 00000000000..59c65053e52
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll
@@ -0,0 +1,19 @@
+; There should be exactly two calls here (memset and malloc), no more.
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep jsr | wc -l | grep 2
+
+%typedef.bc_struct = type opaque
+
+implementation ; Functions:
+
+declare void %llvm.memset.i64(sbyte*, ubyte, ulong, uint)
+
+bool %l12_l94_bc_divide_endif_2E_3_2E_ce(int* %tmp.71.reload, uint %scale2.1.3, uint %extra.0, %typedef.bc_struct* %n1, %typedef.bc_struct* %n2, int* %tmp.92.reload, uint %tmp.94.reload, int* %tmp.98.reload, uint %tmp.100.reload, sbyte** %tmp.112.out, uint* %tmp.157.out, sbyte** %tmp.158.out) {
+newFuncRoot:
+ %tmp.120 = add uint %extra.0, 2 ; <uint> [#uses=1]
+ %tmp.122 = add uint %tmp.120, %tmp.94.reload ; <uint> [#uses=1]
+ %tmp.123 = add uint %tmp.122, %tmp.100.reload ; <uint> [#uses=2]
+ %tmp.112 = malloc sbyte, uint %tmp.123 ; <sbyte*> [#uses=3]
+ %tmp.137 = cast uint %tmp.123 to ulong ; <ulong> [#uses=1]
+ tail call void %llvm.memset.i64( sbyte* %tmp.112, ubyte 0, ulong %tmp.137, uint 0 )
+ ret bool true
+}
diff --git a/llvm/test/CodeGen/Alpha/2005-12-12-MissingFCMov.ll b/llvm/test/CodeGen/Alpha/2005-12-12-MissingFCMov.ll
new file mode 100644
index 00000000000..5b9fa19422d
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/2005-12-12-MissingFCMov.ll
@@ -0,0 +1,44 @@
+; This shouldn't crash
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha
+
+; ModuleID = 'bugpoint-reduced-simplified.bc'
+target endian = little
+target pointersize = 64
+%.str_4 = external global [44 x sbyte] ; <[44 x sbyte]*> [#uses=0]
+
+implementation ; Functions:
+
+declare void %printf(int, ...)
+
+void %main() {
+entry:
+ %tmp.11861 = setlt long 0, 1 ; <bool> [#uses=1]
+ %tmp.19466 = setlt long 0, 1 ; <bool> [#uses=1]
+ %tmp.21571 = setlt long 0, 1 ; <bool> [#uses=1]
+ %tmp.36796 = setlt long 0, 1 ; <bool> [#uses=1]
+ br bool %tmp.11861, label %loopexit.2, label %no_exit.2
+
+no_exit.2: ; preds = %entry
+ ret void
+
+loopexit.2: ; preds = %entry
+ br bool %tmp.19466, label %loopexit.3, label %no_exit.3.preheader
+
+no_exit.3.preheader: ; preds = %loopexit.2
+ ret void
+
+loopexit.3: ; preds = %loopexit.2
+ br bool %tmp.21571, label %no_exit.6, label %no_exit.4
+
+no_exit.4: ; preds = %loopexit.3
+ ret void
+
+no_exit.6: ; preds = %no_exit.6, %loopexit.3
+ %tmp.30793 = setgt long 0, 0 ; <bool> [#uses=1]
+ br bool %tmp.30793, label %loopexit.6, label %no_exit.6
+
+loopexit.6: ; preds = %no_exit.6
+ %Z.1 = select bool %tmp.36796, double 1.000000e+00, double 0x3FEFFF7CEDE74EAE ; <double> [#uses=2]
+ tail call void (int, ...)* %printf( int 0, long 0, long 0, long 0, double 1.000000e+00, double 1.000000e+00, double %Z.1, double %Z.1 )
+ ret void
+}
diff --git a/llvm/test/CodeGen/Alpha/2006-01-18-MissedGlobal.ll b/llvm/test/CodeGen/Alpha/2006-01-18-MissedGlobal.ll
new file mode 100644
index 00000000000..f0a5c17ddcf
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/2006-01-18-MissedGlobal.ll
@@ -0,0 +1,30 @@
+; The global symbol should be legalized
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha
+
+target endian = little
+target pointersize = 64
+ %struct.LIST_HELP = type { %struct.LIST_HELP*, sbyte* }
+ %struct._IO_FILE = type { int, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, %struct._IO_marker*, %struct._IO_FILE*, int, int, long, ushort, sbyte, [1 x sbyte], sbyte*, long, sbyte*, sbyte*, int, [44 x sbyte] }
+ %struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, int }
+%clause_SORT = external global [21 x %struct.LIST_HELP*] ; <[21 x %struct.LIST_HELP*]*> [#uses=1]
+%ia_in = external global %struct._IO_FILE* ; <%struct._IO_FILE**> [#uses=1]
+%multvec_j = external global [100 x uint] ; <[100 x uint]*> [#uses=1]
+
+implementation ; Functions:
+
+void %main(int %argc) {
+clock_Init.exit:
+ %tmp.5.i575 = load int* null ; <int> [#uses=1]
+ %tmp.309 = seteq int %tmp.5.i575, 0 ; <bool> [#uses=1]
+ br bool %tmp.309, label %UnifiedReturnBlock, label %then.17
+
+then.17: ; preds = %clock_Init.exit
+ store %struct._IO_FILE* null, %struct._IO_FILE** %ia_in
+ %savedstack = call sbyte* %llvm.stacksave( ) ; <sbyte*> [#uses=0]
+ ret void
+
+UnifiedReturnBlock: ; preds = %clock_Init.exit
+ ret void
+}
+
+declare sbyte* %llvm.stacksave()
diff --git a/llvm/test/CodeGen/Alpha/2006-01-26-VaargBreak.ll b/llvm/test/CodeGen/Alpha/2006-01-26-VaargBreak.ll
new file mode 100644
index 00000000000..e58152ee80f
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/2006-01-26-VaargBreak.ll
@@ -0,0 +1,17 @@
+; This shouldn't crash
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha
+
+; ModuleID = 'simp.bc'
+target endian = little
+target pointersize = 64
+target triple = "alphaev6-unknown-linux-gnu"
+deplibs = [ "c", "crtend", "stdc++" ]
+ %struct.__va_list_tag = type { sbyte*, int }
+
+implementation ; Functions:
+
+uint %emit_library_call_value(int %nargs, ...) {
+entry:
+ %tmp.223 = va_arg %struct.__va_list_tag* null, uint ; <uint> [#uses=0]
+ ret uint %tmp.223
+}
diff --git a/llvm/test/CodeGen/Alpha/2006-04-04-zextload.ll b/llvm/test/CodeGen/Alpha/2006-04-04-zextload.ll
new file mode 100644
index 00000000000..75ad7e0c425
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/2006-04-04-zextload.ll
@@ -0,0 +1,36 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha
+
+target endian = little
+target pointersize = 64
+target triple = "alphaev67-unknown-linux-gnu"
+ %llvm.dbg.compile_unit.type = type { uint, { }*, uint, uint, sbyte*, sbyte*, sbyte* }
+ %struct._Callback_list = type { %struct._Callback_list*, void (uint, %struct.ios_base*, int)*, int, int }
+ %struct._Impl = type { int, %struct.facet**, ulong, %struct.facet**, sbyte** }
+ %struct._Words = type { sbyte*, long }
+ "struct.__codecvt_abstract_base<char,char,__mbstate_t>" = type { %struct.facet }
+ "struct.basic_streambuf<char,std::char_traits<char> >" = type { int (...)**, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, %struct.locale }
+ %struct.facet = type { int (...)**, int }
+ %struct.ios_base = type { int (...)**, long, long, uint, uint, uint, %struct._Callback_list*, %struct._Words, [8 x %struct._Words], int, %struct._Words*, %struct.locale }
+ %struct.locale = type { %struct._Impl* }
+ "struct.ostreambuf_iterator<char,std::char_traits<char> >" = type { "struct.basic_streambuf<char,std::char_traits<char> >"*, bool }
+%llvm.dbg.compile_unit1047 = external global %llvm.dbg.compile_unit.type ; <%llvm.dbg.compile_unit.type*> [#uses=1]
+
+implementation ; Functions:
+
+void %_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_() {
+entry:
+ %tmp234 = seteq sbyte 0, 0 ; <bool> [#uses=1]
+ br bool %tmp234, label %cond_next243, label %cond_true235
+
+cond_true235: ; preds = %entry
+ ret void
+
+cond_next243: ; preds = %entry
+ %tmp428 = load long* null ; <long> [#uses=1]
+ %tmp428 = cast long %tmp428 to uint ; <uint> [#uses=1]
+ %tmp429 = alloca sbyte, uint %tmp428 ; <sbyte*> [#uses=0]
+ call void %llvm.dbg.stoppoint( uint 1146, uint 0, { }* cast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit1047 to { }*) )
+ unreachable
+}
+
+declare void %llvm.dbg.stoppoint(uint, uint, { }*)
diff --git a/llvm/test/CodeGen/Alpha/2006-07-03-ASMFormalLowering.ll b/llvm/test/CodeGen/Alpha/2006-07-03-ASMFormalLowering.ll
new file mode 100644
index 00000000000..94cc0d3c671
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/2006-07-03-ASMFormalLowering.ll
@@ -0,0 +1,20 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha
+
+target endian = little
+target pointersize = 64
+target triple = "alphaev67-unknown-linux-gnu"
+
+implementation ; Functions:
+
+int %_ZN9__gnu_cxx18__exchange_and_addEPVii(int* %__mem, int %__val) {
+entry:
+ %__tmp = alloca int, align 4 ; <int*> [#uses=1]
+ %tmp3 = call int asm sideeffect "\0A$$Lxadd_0:\0A\09ldl_l $0,$3\0A\09addl $0,$4,$1\0A\09stl_c $1,$2\0A\09beq $1,$$Lxadd_0\0A\09mb", "=&r,==&r,==m,m,r"( int* %__tmp, int* %__mem, int* %__mem, int %__val ) ; <int> [#uses=1]
+ ret int %tmp3
+}
+
+void %_ZN9__gnu_cxx12__atomic_addEPVii(int* %__mem, int %__val) {
+entry:
+ %tmp2 = call int asm sideeffect "\0A$$Ladd_1:\0A\09ldl_l $0,$2\0A\09addl $0,$3,$0\0A\09stl_c $0,$1\0A\09beq $0,$$Ladd_1\0A\09mb", "=&r,==m,m,r"( int* %__mem, int* %__mem, int %__val ) ; <int> [#uses=0]
+ ret void
+}
diff --git a/llvm/test/CodeGen/Alpha/2006-11-01-vastart.ll b/llvm/test/CodeGen/Alpha/2006-11-01-vastart.ll
new file mode 100644
index 00000000000..61d6db9a574
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/2006-11-01-vastart.ll
@@ -0,0 +1,18 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha
+
+target datalayout = "e-p:64:64"
+target endian = little
+target pointersize = 64
+target triple = "alphaev67-unknown-linux-gnu"
+ %struct.va_list = type { sbyte*, int, int }
+
+implementation ; Functions:
+
+void %yyerror(int, ...) {
+entry:
+ call void %llvm.va_start( %struct.va_list* null )
+ ret void
+}
+
+declare void %llvm.va_start(%struct.va_list*)
+
diff --git a/llvm/test/CodeGen/Alpha/add.ll b/llvm/test/CodeGen/Alpha/add.ll
new file mode 100644
index 00000000000..e385dee2196
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/add.ll
@@ -0,0 +1,180 @@
+;test all the shifted and signextending adds and subs with and without consts
+;
+; RUN: llvm-as < %s | llc -march=alpha -o %t.s -f &&
+; RUN: grep ' addl' %t.s | wc -l | grep 2 &&
+; RUN: grep ' addq' %t.s | wc -l | grep 2 &&
+; RUN: grep ' subl' %t.s | wc -l | grep 2 &&
+; RUN: grep ' subq' %t.s | wc -l | grep 1 &&
+;
+; RUN: grep 'lda $0,-100($16)' %t.s | wc -l | grep 1 &&
+; RUN: grep 's4addl' %t.s | wc -l | grep 2 &&
+; RUN: grep 's8addl' %t.s | wc -l | grep 2 &&
+; RUN: grep 's4addq' %t.s | wc -l | grep 2 &&
+; RUN: grep 's8addq' %t.s | wc -l | grep 2 &&
+;
+; RUN: grep 's4subl' %t.s | wc -l | grep 2 &&
+; RUN: grep 's8subl' %t.s | wc -l | grep 2 &&
+; RUN: grep 's4subq' %t.s | wc -l | grep 2 &&
+; RUN: grep 's8subq' %t.s | wc -l | grep 2
+
+implementation ; Functions:
+
+define i32 %al(i32 sext %x.s, i32 sext %y.s) sext {
+entry:
+ %tmp.3.s = add i32 %y.s, %x.s ; <i32> [#uses=1]
+ ret i32 %tmp.3.s
+}
+
+define i32 %ali(i32 sext %x.s) sext {
+entry:
+ %tmp.3.s = add i32 100, %x.s ; <i32> [#uses=1]
+ ret i32 %tmp.3.s
+}
+
+define i64 %aq(i64 sext %x.s, i64 sext %y.s) sext {
+entry:
+ %tmp.3.s = add i64 %y.s, %x.s ; <i64> [#uses=1]
+ ret i64 %tmp.3.s
+}
+
+define i64 %aqi(i64 %x.s) {
+entry:
+ %tmp.3.s = add i64 100, %x.s ; <i64> [#uses=1]
+ ret i64 %tmp.3.s
+}
+
+define i32 %sl(i32 sext %x.s, i32 sext %y.s) sext {
+entry:
+ %tmp.3.s = sub i32 %y.s, %x.s ; <i32> [#uses=1]
+ ret i32 %tmp.3.s
+}
+
+define i32 %sli(i32 sext %x.s) sext {
+entry:
+ %tmp.3.s = sub i32 %x.s, 100 ; <i32> [#uses=1]
+ ret i32 %tmp.3.s
+}
+
+define i64 %sq(i64 %x.s, i64 %y.s) {
+entry:
+ %tmp.3.s = sub i64 %y.s, %x.s ; <i64> [#uses=1]
+ ret i64 %tmp.3.s
+}
+
+define i64 %sqi(i64 %x.s) {
+entry:
+ %tmp.3.s = sub i64 %x.s, 100 ; <i64> [#uses=1]
+ ret i64 %tmp.3.s
+}
+
+define i32 %a4l(i32 sext %x.s, i32 sext %y.s) sext {
+entry:
+ %tmp.1.s = shl i32 %y.s, i8 2 ; <i32> [#uses=1]
+ %tmp.3.s = add i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
+ ret i32 %tmp.3.s
+}
+
+define i32 %a8l(i32 sext %x.s, i32 sext %y.s) sext {
+entry:
+ %tmp.1.s = shl i32 %y.s, i8 3 ; <i32> [#uses=1]
+ %tmp.3.s = add i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
+ ret i32 %tmp.3.s
+}
+
+define i64 %a4q(i64 %x.s, i64 %y.s) {
+entry:
+ %tmp.1.s = shl i64 %y.s, i8 2 ; <i64> [#uses=1]
+ %tmp.3.s = add i64 %tmp.1.s, %x.s ; <i64> [#uses=1]
+ ret i64 %tmp.3.s
+}
+
+define i64 %a8q(i64 %x.s, i64 %y.s) {
+entry:
+ %tmp.1.s = shl i64 %y.s, i8 3 ; <i64> [#uses=1]
+ %tmp.3.s = add i64 %tmp.1.s, %x.s ; <i64> [#uses=1]
+ ret i64 %tmp.3.s
+}
+
+define i32 %a4li(i32 sext %y.s) sext {
+entry:
+ %tmp.1.s = shl i32 %y.s, i8 2 ; <i32> [#uses=1]
+ %tmp.3.s = add i32 100, %tmp.1.s ; <i32> [#uses=1]
+ ret i32 %tmp.3.s
+}
+
+define i32 %a8li(i32 sext %y.s) sext {
+entry:
+ %tmp.1.s = shl i32 %y.s, i8 3 ; <i32> [#uses=1]
+ %tmp.3.s = add i32 100, %tmp.1.s ; <i32> [#uses=1]
+ ret i32 %tmp.3.s
+}
+
+define i64 %a4qi(i64 %y.s) {
+entry:
+ %tmp.1.s = shl i64 %y.s, i8 2 ; <i64> [#uses=1]
+ %tmp.3.s = add i64 100, %tmp.1.s ; <i64> [#uses=1]
+ ret i64 %tmp.3.s
+}
+
+define i64 %a8qi(i64 %y.s) {
+entry:
+ %tmp.1.s = shl i64 %y.s, i8 3 ; <i64> [#uses=1]
+ %tmp.3.s = add i64 100, %tmp.1.s ; <i64> [#uses=1]
+ ret i64 %tmp.3.s
+}
+
+define i32 %s4l(i32 sext %x.s, i32 sext %y.s) sext {
+entry:
+ %tmp.1.s = shl i32 %y.s, i8 2 ; <i32> [#uses=1]
+ %tmp.3.s = sub i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
+ ret i32 %tmp.3.s
+}
+
+define i32 %s8l(i32 sext %x.s, i32 sext %y.s) sext {
+entry:
+ %tmp.1.s = shl i32 %y.s, i8 3 ; <i32> [#uses=1]
+ %tmp.3.s = sub i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
+ ret i32 %tmp.3.s
+}
+
+define i64 %s4q(i64 %x.s, i64 %y.s) {
+entry:
+ %tmp.1.s = shl i64 %y.s, i8 2 ; <i64> [#uses=1]
+ %tmp.3.s = sub i64 %tmp.1.s, %x.s ; <i64> [#uses=1]
+ ret i64 %tmp.3.s
+}
+
+define i64 %s8q(i64 %x.s, i64 %y.s) {
+entry:
+ %tmp.1.s = shl i64 %y.s, i8 3 ; <i64> [#uses=1]
+ %tmp.3.s = sub i64 %tmp.1.s, %x.s ; <i64> [#uses=1]
+ ret i64 %tmp.3.s
+}
+
+define i32 %s4li(i32 sext %y.s) sext {
+entry:
+ %tmp.1.s = shl i32 %y.s, i8 2 ; <i32> [#uses=1]
+ %tmp.3.s = sub i32 %tmp.1.s, 100 ; <i32> [#uses=1]
+ ret i32 %tmp.3.s
+}
+
+define i32 %s8li(i32 sext %y.s) sext {
+entry:
+ %tmp.1.s = shl i32 %y.s, i8 3 ; <i32> [#uses=1]
+ %tmp.3.s = sub i32 %tmp.1.s, 100 ; <i32> [#uses=1]
+ ret i32 %tmp.3.s
+}
+
+define i64 %s4qi(i64 %y.s) {
+entry:
+ %tmp.1.s = shl i64 %y.s, i8 2 ; <i64> [#uses=1]
+ %tmp.3.s = sub i64 %tmp.1.s, 100 ; <i64> [#uses=1]
+ ret i64 %tmp.3.s
+}
+
+define i64 %s8qi(i64 %y.s) {
+entry:
+ %tmp.1.s = shl i64 %y.s, i8 3 ; <i64> [#uses=1]
+ %tmp.3.s = sub i64 %tmp.1.s, 100 ; <i64> [#uses=1]
+ ret i64 %tmp.3.s
+}
diff --git a/llvm/test/CodeGen/Alpha/bic.ll b/llvm/test/CodeGen/Alpha/bic.ll
new file mode 100644
index 00000000000..f4664c82e32
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/bic.ll
@@ -0,0 +1,11 @@
+; Make sure this testcase codegens to the bic instruction
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 'bic'
+
+implementation ; Functions:
+
+long %bar(long %x, long %y) {
+entry:
+ %tmp.1 = xor long %x, -1 ; <long> [#uses=1]
+ %tmp.2 = and long %y, %tmp.1
+ ret long %tmp.2
+}
diff --git a/llvm/test/CodeGen/Alpha/bsr.ll b/llvm/test/CodeGen/Alpha/bsr.ll
new file mode 100644
index 00000000000..1cd68067ef2
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/bsr.ll
@@ -0,0 +1,13 @@
+; Make sure this testcase codegens the bsr instruction
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 'bsr'
+
+implementation
+
+internal long %abc(int %x) {
+ %tmp.2 = add int %x, -1 ; <int> [#uses=1]
+ %tmp.0 = call long %abc( int %tmp.2 ) ; <long> [#uses=1]
+ %tmp.5 = add int %x, -2 ; <int> [#uses=1]
+ %tmp.3 = call long %abc( int %tmp.5 ) ; <long> [#uses=1]
+ %tmp.6 = add long %tmp.0, %tmp.3 ; <long> [#uses=1]
+ ret long %tmp.6
+}
diff --git a/llvm/test/CodeGen/Alpha/call_adj.ll b/llvm/test/CodeGen/Alpha/call_adj.ll
new file mode 100644
index 00000000000..da47c6ca626
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/call_adj.ll
@@ -0,0 +1,15 @@
+;All this should do is not crash
+;RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha
+
+target endian = little
+target pointersize = 64
+target triple = "alphaev67-unknown-linux-gnu"
+
+implementation ; Functions:
+
+void %_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPcl(uint %f) {
+entry:
+ %tmp49 = alloca sbyte, uint %f ; <sbyte*> [#uses=1]
+ %tmp = call uint null( sbyte* null, sbyte* null, sbyte* null, sbyte* null, sbyte* null, sbyte* null, sbyte* null)
+ ret void
+}
diff --git a/llvm/test/CodeGen/Alpha/cmov.ll b/llvm/test/CodeGen/Alpha/cmov.ll
new file mode 100644
index 00000000000..c5f9f63c342
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/cmov.ll
@@ -0,0 +1,23 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | not grep cmovlt
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep cmoveq
+
+long %cmov_lt(long %a, long %c) {
+entry:
+ %tmp.1 = setlt long %c, 0
+ %retval = select bool %tmp.1, long %a, long 10
+ ret long %retval
+}
+
+long %cmov_const(long %a, long %b, long %c) {
+entry:
+ %tmp.1 = setlt long %a, %b
+ %retval = select bool %tmp.1, long %c, long 10
+ ret long %retval
+}
+
+long %cmov_lt2(long %a, long %c) {
+entry:
+ %tmp.1 = setgt long %c, 0
+ %retval = select bool %tmp.1, long 10, long %a
+ ret long %retval
+}
diff --git a/llvm/test/CodeGen/Alpha/cmpbge.ll b/llvm/test/CodeGen/Alpha/cmpbge.ll
new file mode 100644
index 00000000000..b7b1c09ce06
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/cmpbge.ll
@@ -0,0 +1,16 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep cmpbge | wc -l | grep 2
+
+bool %test1(ulong %A, ulong %B) {
+ %C = and ulong %A, 255
+ %D = and ulong %B, 255
+ %E = setge ulong %C, %D
+ ret bool %E
+}
+
+bool %test2(ulong %a, ulong %B) {
+ %A = shl ulong %a, ubyte 1
+ %C = and ulong %A, 254
+ %D = and ulong %B, 255
+ %E = setge ulong %C, %D
+ ret bool %E
+}
diff --git a/llvm/test/CodeGen/Alpha/ctlz.ll b/llvm/test/CodeGen/Alpha/ctlz.ll
new file mode 100644
index 00000000000..75035f2c260
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/ctlz.ll
@@ -0,0 +1,16 @@
+; Make sure this testcase codegens to the ctlz instruction
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha -mcpu=ev67 | grep -i 'ctlz'
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha -mattr=+CIX | grep -i 'ctlz'
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha -mcpu=ev6 | not grep -i 'ctlz'
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha -mcpu=ev56 | not grep -i 'ctlz'
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha -mattr=-CIX | not grep -i 'ctlz'
+
+declare ubyte %llvm.ctlz(ubyte)
+
+implementation ; Functions:
+
+ubyte %bar(ubyte %x) {
+entry:
+ %tmp.1 = call ubyte %llvm.ctlz( ubyte %x )
+ ret ubyte %tmp.1
+}
diff --git a/llvm/test/CodeGen/Alpha/ctlz_e.ll b/llvm/test/CodeGen/Alpha/ctlz_e.ll
new file mode 100644
index 00000000000..d7dab23ea9a
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/ctlz_e.ll
@@ -0,0 +1,12 @@
+; Make sure this testcase does not use ctpop
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep -i 'ctpop' |wc -l |grep 0
+
+declare ulong %llvm.ctlz(ulong)
+
+implementation ; Functions:
+
+ulong %bar(ulong %x) {
+entry:
+ %tmp.1 = call ulong %llvm.ctlz( ulong %x )
+ ret ulong %tmp.1
+}
diff --git a/llvm/test/CodeGen/Alpha/ctpop.ll b/llvm/test/CodeGen/Alpha/ctpop.ll
new file mode 100644
index 00000000000..bbd35ffa979
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/ctpop.ll
@@ -0,0 +1,17 @@
+; Make sure this testcase codegens to the ctpop instruction
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha -mcpu=ev67 | grep -i 'ctpop'
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha -mattr=+CIX | grep -i 'ctpop'
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha -mcpu=ev6 | not grep -i 'ctpop'
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha -mcpu=ev56 | not grep -i 'ctpop'
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha -mattr=-CIX | not grep -i 'ctpop'
+
+
+declare long %llvm.ctpop(long)
+
+implementation ; Functions:
+
+long %bar(long %x) {
+entry:
+ %tmp.1 = call long %llvm.ctpop( long %x )
+ ret long %tmp.1
+}
diff --git a/llvm/test/CodeGen/Alpha/dg.exp b/llvm/test/CodeGen/Alpha/dg.exp
new file mode 100644
index 00000000000..e109dadd008
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/dg.exp
@@ -0,0 +1,3 @@
+load_lib llvm-dg.exp
+
+llvm-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{ll}]] $objdir $srcdir $subdir $target_triplet $llvmgcc $llvmgxx $prcontext $llvmgcc_version
diff --git a/llvm/test/CodeGen/Alpha/eqv.ll b/llvm/test/CodeGen/Alpha/eqv.ll
new file mode 100644
index 00000000000..f8e69916471
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/eqv.ll
@@ -0,0 +1,11 @@
+; Make sure this testcase codegens to the eqv instruction
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 'eqv'
+
+implementation ; Functions:
+
+long %bar(long %x, long %y) {
+entry:
+ %tmp.1 = xor long %x, -1 ; <long> [#uses=1]
+ %tmp.2 = xor long %y, %tmp.1
+ ret long %tmp.2
+}
diff --git a/llvm/test/CodeGen/Alpha/i32_sub_1.ll b/llvm/test/CodeGen/Alpha/i32_sub_1.ll
new file mode 100644
index 00000000000..9d8cb097348
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/i32_sub_1.ll
@@ -0,0 +1,10 @@
+; Make sure this testcase codegens to the ctpop instruction
+; RUN: llvm-as < %s | llc -march=alpha | grep -i 'subl $16,1,$0'
+
+implementation ; Functions:
+
+define i32 %foo(i32 sext %x) sext {
+entry:
+ %tmp.1 = add i32 %x, -1 ; <int> [#uses=1]
+ ret i32 %tmp.1
+}
diff --git a/llvm/test/CodeGen/Alpha/jmp_table.ll b/llvm/test/CodeGen/Alpha/jmp_table.ll
new file mode 100644
index 00000000000..9c1f27877a6
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/jmp_table.ll
@@ -0,0 +1,99 @@
+; try to check that we have the most important instructions, which shouldn't appear otherwise
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 'jmp' &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 'gprel32' &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 'ldl' &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 'rodata'
+
+target endian = little
+target pointersize = 64
+target triple = "alphaev67-unknown-linux-gnu"
+%str = internal constant [2 x sbyte] c"1\00" ; <[2 x sbyte]*> [#uses=1]
+%str1 = internal constant [2 x sbyte] c"2\00" ; <[2 x sbyte]*> [#uses=1]
+%str2 = internal constant [2 x sbyte] c"3\00" ; <[2 x sbyte]*> [#uses=1]
+%str3 = internal constant [2 x sbyte] c"4\00" ; <[2 x sbyte]*> [#uses=1]
+%str4 = internal constant [2 x sbyte] c"5\00" ; <[2 x sbyte]*> [#uses=1]
+%str5 = internal constant [2 x sbyte] c"6\00" ; <[2 x sbyte]*> [#uses=1]
+%str6 = internal constant [2 x sbyte] c"7\00" ; <[2 x sbyte]*> [#uses=1]
+%str7 = internal constant [2 x sbyte] c"8\00" ; <[2 x sbyte]*> [#uses=1]
+
+implementation ; Functions:
+
+int %main(int %x, sbyte** %y) {
+entry:
+ %x_addr = alloca int ; <int*> [#uses=2]
+ %y_addr = alloca sbyte** ; <sbyte***> [#uses=1]
+ %retval = alloca int, align 4 ; <int*> [#uses=2]
+ %tmp = alloca int, align 4 ; <int*> [#uses=2]
+ %foo = alloca sbyte*, align 8 ; <sbyte**> [#uses=9]
+ "alloca point" = cast int 0 to int ; <int> [#uses=0]
+ store int %x, int* %x_addr
+ store sbyte** %y, sbyte*** %y_addr
+ %tmp = load int* %x_addr ; <int> [#uses=1]
+ switch int %tmp, label %bb15 [
+ int 1, label %bb
+ int 2, label %bb1
+ int 3, label %bb3
+ int 4, label %bb5
+ int 5, label %bb7
+ int 6, label %bb9
+ int 7, label %bb11
+ int 8, label %bb13
+ ]
+
+bb: ; preds = %entry
+ %tmp = getelementptr [2 x sbyte]* %str, int 0, ulong 0 ; <sbyte*> [#uses=1]
+ store sbyte* %tmp, sbyte** %foo
+ br label %bb16
+
+bb1: ; preds = %entry
+ %tmp2 = getelementptr [2 x sbyte]* %str1, int 0, ulong 0 ; <sbyte*> [#uses=1]
+ store sbyte* %tmp2, sbyte** %foo
+ br label %bb16
+
+bb3: ; preds = %entry
+ %tmp4 = getelementptr [2 x sbyte]* %str2, int 0, ulong 0 ; <sbyte*> [#uses=1]
+ store sbyte* %tmp4, sbyte** %foo
+ br label %bb16
+
+bb5: ; preds = %entry
+ %tmp6 = getelementptr [2 x sbyte]* %str3, int 0, ulong 0 ; <sbyte*> [#uses=1]
+ store sbyte* %tmp6, sbyte** %foo
+ br label %bb16
+
+bb7: ; preds = %entry
+ %tmp8 = getelementptr [2 x sbyte]* %str4, int 0, ulong 0 ; <sbyte*> [#uses=1]
+ store sbyte* %tmp8, sbyte** %foo
+ br label %bb16
+
+bb9: ; preds = %entry
+ %tmp10 = getelementptr [2 x sbyte]* %str5, int 0, ulong 0 ; <sbyte*> [#uses=1]
+ store sbyte* %tmp10, sbyte** %foo
+ br label %bb16
+
+bb11: ; preds = %entry
+ %tmp12 = getelementptr [2 x sbyte]* %str6, int 0, ulong 0 ; <sbyte*> [#uses=1]
+ store sbyte* %tmp12, sbyte** %foo
+ br label %bb16
+
+bb13: ; preds = %entry
+ %tmp14 = getelementptr [2 x sbyte]* %str7, int 0, ulong 0 ; <sbyte*> [#uses=1]
+ store sbyte* %tmp14, sbyte** %foo
+ br label %bb16
+
+bb15: ; preds = %entry
+ br label %bb16
+
+bb16: ; preds = %bb15, %bb13, %bb11, %bb9, %bb7, %bb5, %bb3, %bb1, %bb
+ %tmp17 = load sbyte** %foo ; <sbyte*> [#uses=1]
+ %tmp18 = call int (...)* %print( sbyte* %tmp17 ) ; <int> [#uses=0]
+ store int 0, int* %tmp
+ %tmp19 = load int* %tmp ; <int> [#uses=1]
+ store int %tmp19, int* %retval
+ br label %return
+
+return: ; preds = %bb16
+ %retval = load int* %retval ; <int> [#uses=1]
+ ret int %retval
+}
+
+declare int %print(...)
diff --git a/llvm/test/CodeGen/Alpha/mul5.ll b/llvm/test/CodeGen/Alpha/mul5.ll
new file mode 100644
index 00000000000..5e41d0fd856
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/mul5.ll
@@ -0,0 +1,50 @@
+; Make sure this testcase does not use mulq
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep -i 'mul' |wc -l |grep 0
+
+implementation ; Functions:
+
+ulong %foo1(ulong %x) {
+entry:
+ %tmp.1 = mul ulong %x, 9 ; <ulong> [#uses=1]
+ ret ulong %tmp.1
+}
+ulong %foo3(ulong %x) {
+entry:
+ %tmp.1 = mul ulong %x, 259
+ ret ulong %tmp.1
+}
+
+ulong %foo4l(ulong %x) {
+entry:
+ %tmp.1 = mul ulong %x, 260
+ ret ulong %tmp.1
+}
+
+ulong %foo4ln(ulong %x) {
+entry:
+ %tmp.1 = mul ulong %x, 508
+ ret ulong %tmp.1
+}
+ulong %foo4ln_more(ulong %x) {
+entry:
+ %tmp.1 = mul ulong %x, 252
+ ret ulong %tmp.1
+}
+
+ulong %foo1n(ulong %x) {
+entry:
+ %tmp.1 = mul ulong %x, 511
+ ret ulong %tmp.1
+}
+
+ulong %foo8l(ulong %x) {
+entry:
+ %tmp.1 = mul ulong %x, 768
+ ret ulong %tmp.1
+}
+
+long %bar(long %x) {
+entry:
+ %tmp.1 = mul long %x, 5 ; <long> [#uses=1]
+ ret long %tmp.1
+}
diff --git a/llvm/test/CodeGen/Alpha/neg1.ll b/llvm/test/CodeGen/Alpha/neg1.ll
new file mode 100644
index 00000000000..e8e50860bbe
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/neg1.ll
@@ -0,0 +1,9 @@
+; Make sure this testcase codegens to the lda -1 instruction
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep '\-1'
+
+implementation ; Functions:
+
+long %bar() {
+entry:
+ ret long -1
+}
diff --git a/llvm/test/CodeGen/Alpha/not.ll b/llvm/test/CodeGen/Alpha/not.ll
new file mode 100644
index 00000000000..406f6242938
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/not.ll
@@ -0,0 +1,10 @@
+; Make sure this testcase codegens to the ornot instruction
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 'eqv'
+
+implementation ; Functions:
+
+long %bar(long %x) {
+entry:
+ %tmp.1 = xor long %x, -1 ; <long> [#uses=1]
+ ret long %tmp.1
+}
diff --git a/llvm/test/CodeGen/Alpha/ornot.ll b/llvm/test/CodeGen/Alpha/ornot.ll
new file mode 100644
index 00000000000..fc982b34aa2
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/ornot.ll
@@ -0,0 +1,11 @@
+; Make sure this testcase codegens to the ornot instruction
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 'ornot'
+
+implementation ; Functions:
+
+long %bar(long %x, long %y) {
+entry:
+ %tmp.1 = xor long %x, -1 ; <long> [#uses=1]
+ %tmp.2 = or long %y, %tmp.1
+ ret long %tmp.2
+}
diff --git a/llvm/test/CodeGen/Alpha/rpcc.ll b/llvm/test/CodeGen/Alpha/rpcc.ll
new file mode 100644
index 00000000000..ba143a6fd7f
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/rpcc.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep rpcc
+
+declare ulong %llvm.readcyclecounter()
+
+ulong %foo() {
+entry:
+%tmp.1 = call ulong %llvm.readcyclecounter ()
+ret ulong %tmp.1
+}
+
diff --git a/llvm/test/CodeGen/Alpha/srl_and.ll b/llvm/test/CodeGen/Alpha/srl_and.ll
new file mode 100644
index 00000000000..49074cc9168
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/srl_and.ll
@@ -0,0 +1,10 @@
+; Make sure this testcase codegens to the zapnot instruction
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 'zapnot'
+
+ulong %foo(ulong %y) {
+entry:
+ %tmp = shr ulong %y, ubyte 3 ; <ulong> [#uses=1]
+ %tmp2 = and ulong %tmp, 8191 ; <ulong> [#uses=1]
+ ret ulong %tmp2
+}
+
diff --git a/llvm/test/CodeGen/Alpha/weak.ll b/llvm/test/CodeGen/Alpha/weak.ll
new file mode 100644
index 00000000000..f39360b8fc0
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/weak.ll
@@ -0,0 +1,18 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep .weak.*f &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep .weak.*h
+
+implementation ; Functions:
+
+weak uint %f() {
+entry:
+ unreachable
+}
+
+void %g() {
+entry:
+ tail call void %h( )
+ ret void
+}
+
+declare extern_weak void %h()
diff --git a/llvm/test/CodeGen/Alpha/zapnot.ll b/llvm/test/CodeGen/Alpha/zapnot.ll
new file mode 100644
index 00000000000..8d1fa111be3
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/zapnot.ll
@@ -0,0 +1,10 @@
+; Make sure this testcase codegens to the bic instruction
+; RUN: llvm-as < %s | llc -march=alpha | grep 'zapnot'
+
+implementation ; Functions:
+
+define i16 %foo(i64 %y) zext {
+entry:
+ %tmp.1 = trunc i64 %y to i16 ; <ushort> [#uses=1]
+ ret i16 %tmp.1
+}
diff --git a/llvm/test/CodeGen/Alpha/zapnot2.ll b/llvm/test/CodeGen/Alpha/zapnot2.ll
new file mode 100644
index 00000000000..a84400f5563
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/zapnot2.ll
@@ -0,0 +1,10 @@
+; Make sure this testcase codegens to the zapnot instruction
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 'zapnot'
+
+implementation ; Functions:
+
+long %bar(long %x) {
+entry:
+ %tmp.1 = and long %x, 16711935 ; <long> [#uses=1]
+ ret long %tmp.1
+}
diff --git a/llvm/test/CodeGen/Alpha/zapnot3.ll b/llvm/test/CodeGen/Alpha/zapnot3.ll
new file mode 100644
index 00000000000..1784c4a1af1
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/zapnot3.ll
@@ -0,0 +1,14 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep zapnot | wc -l | grep 2
+
+ulong %foo(ulong %y) {
+ %tmp = and ulong %y, 65535
+ %tmp2 = shr ulong %tmp, ubyte 3
+ ret ulong %tmp2
+}
+
+ulong %foo2(ulong %y) {
+ %tmp = shr ulong %y, ubyte 3 ; <ulong> [#uses=1]
+ %tmp2 = and ulong %tmp, 8191 ; <ulong> [#uses=1]
+ ret ulong %tmp2
+}
+
diff --git a/llvm/test/CodeGen/Alpha/zapnot4.ll b/llvm/test/CodeGen/Alpha/zapnot4.ll
new file mode 100644
index 00000000000..b805607bee0
--- /dev/null
+++ b/llvm/test/CodeGen/Alpha/zapnot4.ll
@@ -0,0 +1,8 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep zapnot
+
+ulong %foo(ulong %y) {
+ %tmp = shl ulong %y, ubyte 3 ; <ulong> [#uses=1]
+ %tmp2 = and ulong %tmp, 65535 ; <ulong> [#uses=1]
+ ret ulong %tmp2
+}
+
OpenPOWER on IntegriCloud