; This test makes sure that these instructions are properly eliminated.
;

; RUN: if as < %s | opt -instcombine | dis | grep set
; RUN: then exit 1
; RUN: else exit 0
; RUN: fi

%X = uninitialized global int

bool "test1"(int %A) {
	%B = seteq int %A, %A
	%C = seteq int* %X, null   ; Never true
	%D = and bool %B, %C
	ret bool %D
}

bool "test2"(int %A) {
	%B = setne int %A, %A
	%C = setne int* %X, null   ; Never false
	%D = or bool %B, %C
	ret bool %D
}

bool "test3"(int %A) {
	%B = setlt int %A, %A
	ret bool %B
}

bool "test4"(int %A) {
	%B = setgt int %A, %A
	ret bool %B
}

bool "test5"(int %A) {
	%B = setle int %A, %A
	ret bool %B
}

bool "test6"(int %A) {
	%B = setge int %A, %A
	ret bool %B
}

; This test makes sure that these instructions are properly eliminated.
;

; RUN: if as < %s | opt -instcombine | dis | grep set
; RUN: then exit 1
; RUN: else exit 0
; RUN: fi

%X = uninitialized global int

bool "test1"(int %A) {
	%B = seteq int %A, %A
	%C = seteq int* %X, null   ; Never true
	%D = and bool %B, %C
	ret bool %D
}

bool "test2"(int %A) {
	%B = setne int %A, %A
	%C = setne int* %X, null   ; Never false
	%D = or bool %B, %C
	ret bool %D
}

bool "test3"(int %A) {
	%B = setlt int %A, %A
	ret bool %B
}

bool "test4"(int %A) {
	%B = setgt int %A, %A
	ret bool %B
}

bool "test5"(int %A) {
	%B = setle int %A, %A
	ret bool %B
}

bool "test6"(int %A) {
	%B = setge int %A, %A
	ret bool %B
}

bool "test7"(uint %A) {
	%B = setge uint %A, 0  ; true
	ret bool %B
}

bool "test8"(uint %A) {
	%B = setlt uint %A, 0  ; false
	ret bool %B
}

Add some more features that we could instcombine away
Add some more features that we could instcombine away


git-svn-id: 0ff597fd157e6f4fc38580e8d64ab130330d2411@3239 91177308-0d34-0410-b5e6-96231b3b80d8
