52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: llc < %s -march=avr | FileCheck %s
 | |
| 
 | |
| ; Unit test for: PR 31345
 | |
| 
 | |
| define i16 @and16_reg_imm_0xff00(i16 %a) {
 | |
| ; CHECK-LABEL: and16_reg_imm_0xff00
 | |
| ; CHECK: andi {{r[0-9]+}}, 0
 | |
| ; CHECK-NOT: andi {{r[0-9]+}}, 255
 | |
|     %result = and i16 %a, 65280
 | |
|     ret i16 %result
 | |
| }
 | |
| 
 | |
| define i16 @and16_reg_imm_0xffb3(i16 %a) {
 | |
| ; CHECK-LABEL: and16_reg_imm_0xffb3
 | |
| ; CHECK: andi {{r[0-9]+}}, 179
 | |
| ; CHECK-NOT: andi {{r[0-9]+}}, 255
 | |
|     %result = and i16 %a, 65459
 | |
|     ret i16 %result
 | |
| }
 | |
| 
 | |
| define i16 @and16_reg_imm_0x00ff(i16 %a) {
 | |
| ; CHECK-LABEL: and16_reg_imm_0x00ff
 | |
| ; CHECK-NOT: andi {{r[0-9]+}}, 255
 | |
| ; CHECK: andi {{r[0-9]+}}, 0
 | |
|     %result = and i16 %a, 255
 | |
|     ret i16 %result
 | |
| }
 | |
| 
 | |
| define i16 @and16_reg_imm_0xb3ff(i16 %a) {
 | |
| ; CHECK-LABEL: and16_reg_imm_0xb3ff
 | |
| ; CHECK-NOT: andi {{r[0-9]+}}, 255
 | |
| ; CHECK: andi {{r[0-9]+}}, 179
 | |
|     %result = and i16 %a, 46079
 | |
|     ret i16 %result
 | |
| }
 | |
| 
 | |
| define i16 @and16_reg_imm_0xffff(i16 %a) {
 | |
| ; CHECK-LABEL: and16_reg_imm_0xffff
 | |
| ; CHECK-NOT: andi {{r[0-9]+}}, 255
 | |
| ; CHECK-NOT: andi {{r[0-9]+}}, 255
 | |
|     %result = and i16 %a, 65535
 | |
|     ret i16 %result
 | |
| }
 | |
| 
 | |
| define i16 @and16_reg_imm_0xabcd(i16 %a) {
 | |
| ; CHECK-LABEL: and16_reg_imm_0xabcd
 | |
| ; CHECK: andi {{r[0-9]+}}, 205
 | |
| ; CHECK: andi {{r[0-9]+}}, 171
 | |
|     %result = and i16 %a, 43981
 | |
|     ret i16 %result
 | |
| }
 |