You've already forked linux-packaging-mono
							
							
		
			
	
	
		
			87 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			87 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | # RUN: llc -o /dev/null %s -mtriple=arm-eabi -mcpu=cortex-r52 -run-pass  machine-scheduler  -enable-misched -debug-only=machine-scheduler -misched-topdown 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=TOPDOWN | ||
|  | # RUN: llc -o /dev/null %s -mtriple=arm-eabi -mcpu=cortex-r52 -run-pass  machine-scheduler  -enable-misched -debug-only=machine-scheduler -misched-bottomup 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=BOTTOMUP | ||
|  | # REQUIRES: asserts | ||
|  | --- | | ||
|  |   ; ModuleID = 'foo.ll' | ||
|  |   source_filename = "foo.ll" | ||
|  |   target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64" | ||
|  |   target triple = "arm---eabi" | ||
|  | 
 | ||
|  |   %struct.__neon_int8x8x4_t = type { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } | ||
|  |   ; Function Attrs: nounwind | ||
|  |   define <8 x i8> @foo(i8* %A) { | ||
|  |     %tmp1 = call %struct.__neon_int8x8x4_t @llvm.arm.neon.vld4.v8i8.p0i8(i8* %A, i32 8) | ||
|  |     %tmp2 = extractvalue %struct.__neon_int8x8x4_t %tmp1, 0 | ||
|  |     %tmp3 = extractvalue %struct.__neon_int8x8x4_t %tmp1, 1 | ||
|  |     %tmp4 = add <8 x i8> %tmp2, %tmp3 | ||
|  |     ret <8 x i8> %tmp4 | ||
|  |   } | ||
|  |   declare %struct.__neon_int8x8x4_t @llvm.arm.neon.vld4.v8i8.p0i8(i8*, i32) | ||
|  | 
 | ||
|  | # CHECK: ********** MI Scheduling ********** | ||
|  | # CHECK: ScheduleDAGMILive::schedule starting | ||
|  | # CHECK: SU(1):   %1:qqpr = VLD4d8Pseudo %0, 8, pred:14, pred:%noreg; mem:LD32[%A](align=8) QQPR:%1 GPR:%0 | ||
|  | # CHECK: Latency            : 8 | ||
|  | # CHECK: Single Issue       : true; | ||
|  | # CHECK: SU(2):   %4:dpr = VADDv8i8 %1.dsub_0, %1.dsub_1, pred:14, pred:%noreg; DPR:%4 QQPR:%1 | ||
|  | # CHECK: Latency            : 5 | ||
|  | # CHECK: Single Issue       : false; | ||
|  | # CHECK: SU(3):   %5:gpr, %6:gpr = VMOVRRD %4, pred:14, pred:%noreg; GPR:%5,%6 DPR:%4 | ||
|  | # CHECK: Latency            : 4 | ||
|  | # CHECK: Single Issue       : false; | ||
|  | 
 | ||
|  | # TOPDOWN: Scheduling SU(1) %1:qqpr = VLD4d8Pseudo | ||
|  | # TOPDOWN: Bump cycle to end group | ||
|  | # TOPDOWN: Scheduling SU(2) %4:dpr = VADDv8i8 | ||
|  | 
 | ||
|  | # BOTTOMUP: Scheduling SU(2) %4:dpr = VADDv8i8 | ||
|  | # BOTTOMUP: Scheduling SU(1) %1:qqpr = VLD4d8Pseudo | ||
|  | # BOTTOMUP: Bump cycle to begin group | ||
|  | 
 | ||
|  | ... | ||
|  | --- | ||
|  | name:            foo | ||
|  | alignment:       2 | ||
|  | exposesReturnsTwice: false | ||
|  | legalized:       false | ||
|  | regBankSelected: false | ||
|  | selected:        false | ||
|  | tracksRegLiveness: true | ||
|  | registers: | ||
|  |   - { id: 0, class: gpr } | ||
|  |   - { id: 1, class: qqpr } | ||
|  |   - { id: 2, class: dpr } | ||
|  |   - { id: 3, class: dpr } | ||
|  |   - { id: 4, class: dpr } | ||
|  |   - { id: 5, class: gpr } | ||
|  |   - { id: 6, class: gpr } | ||
|  | liveins: | ||
|  |   - { reg: '%r0', virtual-reg: '%0' } | ||
|  | frameInfo: | ||
|  |   isFrameAddressTaken: false | ||
|  |   isReturnAddressTaken: false | ||
|  |   hasStackMap:     false | ||
|  |   hasPatchPoint:   false | ||
|  |   stackSize:       0 | ||
|  |   offsetAdjustment: 0 | ||
|  |   maxAlignment:    0 | ||
|  |   adjustsStack:    false | ||
|  |   hasCalls:        false | ||
|  |   maxCallFrameSize: 0 | ||
|  |   hasOpaqueSPAdjustment: false | ||
|  |   hasVAStart:      false | ||
|  |   hasMustTailInVarArgFunc: false | ||
|  | body:             | | ||
|  |   bb.0 (%ir-block.0): | ||
|  |     liveins: %r0 | ||
|  | 
 | ||
|  |     %0 = COPY %r0 | ||
|  |     %1 = VLD4d8Pseudo %0, 8, 14, %noreg :: (load 32 from %ir.A, align 8) | ||
|  |     %4 = VADDv8i8 %1.dsub_0, %1.dsub_1, 14, %noreg | ||
|  |     %5, %6 = VMOVRRD %4, 14, %noreg | ||
|  |     %r0 = COPY %5 | ||
|  |     %r1 = COPY %6 | ||
|  |     BX_RET 14, %noreg, implicit %r0, implicit killed %r1 | ||
|  | 
 | ||
|  | ... |