forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			30 lines
		
	
	
		
			734 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			734 B
		
	
	
	
		
			LLVM
		
	
	
	
; RUN: opt -S -instcombine < %s | FileCheck %s
 | 
						|
 | 
						|
define i1 @test1(i16* %x) {
 | 
						|
  %load = load i16, i16* %x, align 4
 | 
						|
  %trunc = trunc i16 %load to i8
 | 
						|
  %cmp1 = icmp eq i8 %trunc, 127
 | 
						|
  %and = and i16 %load, -256
 | 
						|
  %cmp2 = icmp eq i16 %and, 17664
 | 
						|
  %or = and i1 %cmp1, %cmp2
 | 
						|
  ret i1 %or
 | 
						|
; CHECK-LABEL: @test1(
 | 
						|
; CHECK-NEXT: load i16
 | 
						|
; CHECK-NEXT: icmp eq i16 %load, 17791
 | 
						|
; CHECK-NEXT: ret i1
 | 
						|
}
 | 
						|
 | 
						|
define i1 @test2(i16* %x) {
 | 
						|
  %load = load i16, i16* %x, align 4
 | 
						|
  %and = and i16 %load, -256
 | 
						|
  %cmp1 = icmp eq i16 %and, 32512
 | 
						|
  %trunc = trunc i16 %load to i8
 | 
						|
  %cmp2 = icmp eq i8 %trunc, 69
 | 
						|
  %or = and i1 %cmp1, %cmp2
 | 
						|
  ret i1 %or
 | 
						|
; CHECK-LABEL: @test2(
 | 
						|
; CHECK-NEXT: load i16
 | 
						|
; CHECK-NEXT: icmp eq i16 %load, 32581
 | 
						|
; CHECK-NEXT: ret i1
 | 
						|
}
 |