;test all the shifted and signextending adds and subs with and without consts
;
; RUN: llc < %s -march=alpha -o %t.s
; RUN: grep {	addl} %t.s | count 2
; RUN: grep {	addq} %t.s | count 2
; RUN: grep {	subl} %t.s | count 2
; RUN: grep {	subq} %t.s | count 2
;
; RUN: grep {s4addl} %t.s | count 2
; RUN: grep {s8addl} %t.s | count 2
; RUN: grep {s4addq} %t.s | count 2
; RUN: grep {s8addq} %t.s | count 2
;
; RUN: grep {s4subl} %t.s | count 2
; RUN: grep {s8subl} %t.s | count 2
; RUN: grep {s4subq} %t.s | count 2
; RUN: grep {s8subq} %t.s | count 2


define signext i32 @al(i32 signext %x.s, i32 signext %y.s) {
entry:
	%tmp.3.s = add i32 %y.s, %x.s		; <i32> [#uses=1]
	ret i32 %tmp.3.s
}

define signext i32 @ali(i32 signext %x.s)  {
entry:
	%tmp.3.s = add i32 100, %x.s		; <i32> [#uses=1]
	ret i32 %tmp.3.s
}

define signext i64 @aq(i64 signext %x.s, i64 signext %y.s)  {
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 signext i32 @sl(i32 signext %x.s, i32 signext %y.s)  {
entry:
	%tmp.3.s = sub i32 %y.s, %x.s		; <i32> [#uses=1]
	ret i32 %tmp.3.s
}

define signext i32 @sli(i32 signext %x.s)  {
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 signext i32 @a4l(i32 signext %x.s, i32 signext %y.s)  {
entry:
	%tmp.1.s = shl i32 %y.s, 2		; <i32> [#uses=1]
	%tmp.3.s = add i32 %tmp.1.s, %x.s		; <i32> [#uses=1]
	ret i32 %tmp.3.s
}

define signext i32 @a8l(i32 signext %x.s, i32 signext %y.s)  {
entry:
	%tmp.1.s = shl i32 %y.s, 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, 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, 3		; <i64> [#uses=1]
	%tmp.3.s = add i64 %tmp.1.s, %x.s		; <i64> [#uses=1]
	ret i64 %tmp.3.s
}

define signext i32 @a4li(i32 signext %y.s)  {
entry:
	%tmp.1.s = shl i32 %y.s, 2		; <i32> [#uses=1]
	%tmp.3.s = add i32 100, %tmp.1.s		; <i32> [#uses=1]
	ret i32 %tmp.3.s
}

define signext i32 @a8li(i32 signext %y.s)  {
entry:
	%tmp.1.s = shl i32 %y.s, 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, 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, 3		; <i64> [#uses=1]
	%tmp.3.s = add i64 100, %tmp.1.s		; <i64> [#uses=1]
	ret i64 %tmp.3.s
}

define signext i32 @s4l(i32 signext %x.s, i32 signext %y.s)  {
entry:
	%tmp.1.s = shl i32 %y.s, 2		; <i32> [#uses=1]
	%tmp.3.s = sub i32 %tmp.1.s, %x.s		; <i32> [#uses=1]
	ret i32 %tmp.3.s
}

define signext i32 @s8l(i32 signext %x.s, i32 signext %y.s)  {
entry:
	%tmp.1.s = shl i32 %y.s, 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, 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, 3		; <i64> [#uses=1]
	%tmp.3.s = sub i64 %tmp.1.s, %x.s		; <i64> [#uses=1]
	ret i64 %tmp.3.s
}

define signext i32 @s4li(i32 signext %y.s)  {
entry:
	%tmp.1.s = shl i32 %y.s, 2		; <i32> [#uses=1]
	%tmp.3.s = sub i32 %tmp.1.s, 100		; <i32> [#uses=1]
	ret i32 %tmp.3.s
}

define signext i32 @s8li(i32 signext %y.s)  {
entry:
	%tmp.1.s = shl i32 %y.s, 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, 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, 3		; <i64> [#uses=1]
	%tmp.3.s = sub i64 %tmp.1.s, 100		; <i64> [#uses=1]
	ret i64 %tmp.3.s
}
