141 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
 | |
| 
 | |
| define void @nop_test() {
 | |
| entry:
 | |
| ; CHECK-LABEL: nop_test:
 | |
| 
 | |
| ; 2
 | |
| ; CHECK:      bcr 0, %r0
 | |
| 
 | |
| ; 4
 | |
| ; CHECK:      bc 0, 0
 | |
| 
 | |
| ; 6
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| 
 | |
| ; 8
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      bcr 0, %r0
 | |
| 
 | |
| ; 10
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      bc 0, 0
 | |
| 
 | |
| ; 12
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| 
 | |
| ; 14
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      bcr 0, %r0
 | |
| 
 | |
| ; 16
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      bc 0, 0
 | |
| 
 | |
| ; 18
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| 
 | |
| ; 20
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      bcr 0, %r0
 | |
| 
 | |
| ; 22
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      bc 0, 0
 | |
| 
 | |
| ; 24
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| 
 | |
| ; 26
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      bcr 0, %r0
 | |
| 
 | |
| ; 28
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      bc 0, 0
 | |
| 
 | |
| ; 30
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| ; CHECK:      brcl 0, [[LAB:.Ltmp[0-9]+]]
 | |
| ; CHECK-NEXT: [[LAB]]:
 | |
| 
 | |
|   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  0, i32  0)
 | |
|   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  2, i32  2)
 | |
|   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  4, i32  4)
 | |
|   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  6, i32  6)
 | |
|   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  8, i32  8)
 | |
|   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 10, i32 10)
 | |
|   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 12, i32 12)
 | |
|   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 14, i32 14)
 | |
|   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 16, i32 16)
 | |
|   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 18, i32 18)
 | |
|   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 20, i32 20)
 | |
|   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 22, i32 22)
 | |
|   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 24, i32 24)
 | |
|   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 26, i32 26)
 | |
|   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 28, i32 28)
 | |
|   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 30, i32 30)
 | |
| ; Add an extra stackmap with a zero-length shadow to thwart the shadow
 | |
| ; optimization. This will force all bytes of the previous shadow to be
 | |
| ; padded with nops.
 | |
|   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 31, i32 0)
 | |
|   ret void
 | |
| }
 | |
| 
 | |
| declare void @llvm.experimental.stackmap(i64, i32, ...)
 |