|
2 | 2 | ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-gnu-linux < %s | FileCheck %s -check-prefix=CHECK
|
3 | 3 | ; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-gnu-linux < %s | FileCheck %s -check-prefix=CHECKBE
|
4 | 4 |
|
5 |
| -define ptr @xe_migrate_copy(i1 %tobool, i1 %tobool6) { |
| 5 | +define i32 @xe_migrate_copy(ptr %m, ptr %dst, ptr %tile, ptr %0, ptr %primary_gt, i1 %tobool4, i1 %tobool9, i64 %1, i32 %conv55, i1 %tobool37.not) nounwind { |
6 | 6 | ; CHECK-LABEL: xe_migrate_copy:
|
7 | 7 | ; CHECK: # %bb.0: # %entry
|
8 |
| -; CHECK-NEXT: mfcr 12 |
9 |
| -; CHECK-NEXT: stw 12, 8(1) |
10 | 8 | ; CHECK-NEXT: mflr 0
|
11 |
| -; CHECK-NEXT: stdu 1, -176(1) |
12 |
| -; CHECK-NEXT: std 0, 192(1) |
13 |
| -; CHECK-NEXT: .cfi_def_cfa_offset 176 |
14 |
| -; CHECK-NEXT: .cfi_offset lr, 16 |
15 |
| -; CHECK-NEXT: .cfi_offset r27, -40 |
16 |
| -; CHECK-NEXT: .cfi_offset r28, -32 |
17 |
| -; CHECK-NEXT: .cfi_offset r29, -24 |
18 |
| -; CHECK-NEXT: .cfi_offset r30, -16 |
19 |
| -; CHECK-NEXT: .cfi_offset cr2, 8 |
20 |
| -; CHECK-NEXT: std 27, 136(1) # 8-byte Folded Spill |
21 |
| -; CHECK-NEXT: andi. 4, 4, 1 |
22 |
| -; CHECK-NEXT: crmove 8, 1 |
| 9 | +; CHECK-NEXT: stdu 1, -128(1) |
| 10 | +; CHECK-NEXT: lbz 3, 255(1) |
23 | 11 | ; CHECK-NEXT: andi. 3, 3, 1
|
24 |
| -; CHECK-NEXT: std 28, 144(1) # 8-byte Folded Spill |
25 |
| -; CHECK-NEXT: crmove 9, 1 |
26 |
| -; CHECK-NEXT: std 29, 152(1) # 8-byte Folded Spill |
27 |
| -; CHECK-NEXT: std 30, 160(1) # 8-byte Folded Spill |
28 |
| -; CHECK-NEXT: lwz 30, 132(1) |
29 |
| -; CHECK-NEXT: ld 28, 8(0) |
30 |
| -; CHECK-NEXT: ld 29, 16(0) |
31 |
| -; CHECK-NEXT: ld 27, 0(0) |
32 |
| -; CHECK-NEXT: std 2, 40(1) |
33 |
| -; CHECK-NEXT: b .LBB0_3 |
34 |
| -; CHECK-NEXT: .LBB0_1: # %if.then36 |
35 |
| -; CHECK-NEXT: # |
36 |
| -; CHECK-NEXT: li 6, 1 |
37 |
| -; CHECK-NEXT: .LBB0_2: # %if.then36 |
38 |
| -; CHECK-NEXT: # |
39 |
| -; CHECK-NEXT: mtctr 27 |
| 12 | +; CHECK-NEXT: std 0, 144(1) |
| 13 | +; CHECK-NEXT: crmove 20, 1 |
| 14 | +; CHECK-NEXT: andi. 3, 9, 1 |
| 15 | +; CHECK-NEXT: lwz 9, 244(1) |
| 16 | +; CHECK-NEXT: crmove 21, 1 |
| 17 | +; CHECK-NEXT: andi. 3, 8, 1 |
| 18 | +; CHECK-NEXT: li 3, 0 |
| 19 | +; CHECK-NEXT: std 3, 112(1) |
| 20 | +; CHECK-NEXT: crandc 21, 21, 20 |
| 21 | +; CHECK-NEXT: bc 12, 21, .LBB0_2 |
| 22 | +; CHECK-NEXT: # %bb.1: # %while.body |
| 23 | +; CHECK-NEXT: crand 20, 20, 1 |
| 24 | +; CHECK-NEXT: li 8, 0 |
| 25 | +; CHECK-NEXT: bc 4, 20, .LBB0_3 |
| 26 | +; CHECK-NEXT: .LBB0_2: # %while.body |
| 27 | +; CHECK-NEXT: li 8, 1 |
| 28 | +; CHECK-NEXT: .LBB0_3: # %while.body |
40 | 29 | ; CHECK-NEXT: li 4, 0
|
41 | 30 | ; CHECK-NEXT: li 5, 0
|
| 31 | +; CHECK-NEXT: li 6, 0 |
42 | 32 | ; CHECK-NEXT: li 7, 0
|
43 |
| -; CHECK-NEXT: li 8, 0 |
44 |
| -; CHECK-NEXT: mr 9, 30 |
45 | 33 | ; CHECK-NEXT: li 10, 0
|
46 |
| -; CHECK-NEXT: mr 2, 28 |
47 |
| -; CHECK-NEXT: mr 11, 29 |
48 |
| -; CHECK-NEXT: bctrl |
49 |
| -; CHECK-NEXT: ld 2, 40(1) |
50 |
| -; CHECK-NEXT: .LBB0_3: # %if.then36 |
51 |
| -; CHECK-NEXT: # |
52 |
| -; CHECK-NEXT: lwz 3, 0(0) |
53 |
| -; CHECK-NEXT: cmplwi 3, 0 |
54 |
| -; CHECK-NEXT: li 3, 0 |
55 |
| -; CHECK-NEXT: crandc 20, 8, 2 |
56 |
| -; CHECK-NEXT: std 3, 112(1) |
57 |
| -; CHECK-NEXT: bc 12, 20, .LBB0_1 |
58 |
| -; CHECK-NEXT: # %bb.4: # %if.then36 |
59 |
| -; CHECK-NEXT: # |
60 |
| -; CHECK-NEXT: crand 20, 2, 9 |
61 |
| -; CHECK-NEXT: li 6, 0 |
62 |
| -; CHECK-NEXT: bc 4, 20, .LBB0_2 |
63 |
| -; CHECK-NEXT: b .LBB0_1 |
| 34 | +; CHECK-NEXT: bl xe_migrate_ccs_copy |
| 35 | +; CHECK-NEXT: nop |
| 36 | +; CHECK-NEXT: addi 1, 1, 128 |
| 37 | +; CHECK-NEXT: ld 0, 16(1) |
| 38 | +; CHECK-NEXT: mtlr 0 |
| 39 | +; CHECK-NEXT: blr |
64 | 40 | ;
|
65 | 41 | ; CHECKBE-LABEL: xe_migrate_copy:
|
66 | 42 | ; CHECKBE: # %bb.0: # %entry
|
67 | 43 | ; CHECKBE-NEXT: mflr 0
|
68 |
| -; CHECKBE-NEXT: stwu 1, -64(1) |
69 |
| -; CHECKBE-NEXT: stw 0, 68(1) |
70 |
| -; CHECKBE-NEXT: .cfi_def_cfa_offset 64 |
71 |
| -; CHECKBE-NEXT: .cfi_offset lr, 4 |
72 |
| -; CHECKBE-NEXT: .cfi_offset r30, -8 |
73 |
| -; CHECKBE-NEXT: .cfi_offset cr2, -12 |
74 |
| -; CHECKBE-NEXT: mfcr 12 |
75 |
| -; CHECKBE-NEXT: stw 30, 56(1) # 4-byte Folded Spill |
76 |
| -; CHECKBE-NEXT: andi. 4, 4, 1 |
77 |
| -; CHECKBE-NEXT: stw 12, 52(1) |
78 |
| -; CHECKBE-NEXT: crmove 8, 1 |
79 |
| -; CHECKBE-NEXT: lwz 30, 44(1) |
80 |
| -; CHECKBE-NEXT: andi. 3, 3, 1 |
81 |
| -; CHECKBE-NEXT: crmove 9, 1 |
82 |
| -; CHECKBE-NEXT: b .LBB0_3 |
83 |
| -; CHECKBE-NEXT: .LBB0_1: # %if.then36 |
84 |
| -; CHECKBE-NEXT: # |
85 |
| -; CHECKBE-NEXT: li 7, 1 |
86 |
| -; CHECKBE-NEXT: .LBB0_2: # %if.then36 |
87 |
| -; CHECKBE-NEXT: # |
| 44 | +; CHECKBE-NEXT: stwu 1, -32(1) |
| 45 | +; CHECKBE-NEXT: lbz 3, 55(1) |
88 | 46 | ; CHECKBE-NEXT: li 4, 0
|
| 47 | +; CHECKBE-NEXT: stw 0, 36(1) |
| 48 | +; CHECKBE-NEXT: andi. 3, 3, 1 |
| 49 | +; CHECKBE-NEXT: crmove 20, 1 |
| 50 | +; CHECKBE-NEXT: andi. 3, 9, 1 |
| 51 | +; CHECKBE-NEXT: crmove 21, 1 |
| 52 | +; CHECKBE-NEXT: andi. 3, 8, 1 |
| 53 | +; CHECKBE-NEXT: lwz 3, 48(1) |
| 54 | +; CHECKBE-NEXT: crandc 21, 21, 20 |
| 55 | +; CHECKBE-NEXT: stw 4, 24(1) |
| 56 | +; CHECKBE-NEXT: stw 4, 20(1) |
| 57 | +; CHECKBE-NEXT: stw 4, 16(1) |
| 58 | +; CHECKBE-NEXT: stw 3, 12(1) |
| 59 | +; CHECKBE-NEXT: bc 12, 21, .LBB0_2 |
| 60 | +; CHECKBE-NEXT: # %bb.1: # %while.body |
| 61 | +; CHECKBE-NEXT: crand 20, 20, 1 |
| 62 | +; CHECKBE-NEXT: li 8, 0 |
| 63 | +; CHECKBE-NEXT: bc 4, 20, .LBB0_3 |
| 64 | +; CHECKBE-NEXT: .LBB0_2: # %while.body |
| 65 | +; CHECKBE-NEXT: li 8, 1 |
| 66 | +; CHECKBE-NEXT: .LBB0_3: # %while.body |
| 67 | +; CHECKBE-NEXT: li 3, 0 |
89 | 68 | ; CHECKBE-NEXT: li 5, 0
|
90 | 69 | ; CHECKBE-NEXT: li 6, 0
|
| 70 | +; CHECKBE-NEXT: li 7, 0 |
91 | 71 | ; CHECKBE-NEXT: li 9, 0
|
92 | 72 | ; CHECKBE-NEXT: li 10, 0
|
93 |
| -; CHECKBE-NEXT: bla 0x0 |
94 |
| -; CHECKBE-NEXT: .LBB0_3: # %if.then36 |
95 |
| -; CHECKBE-NEXT: # |
96 |
| -; CHECKBE-NEXT: lwz 3, 0(0) |
97 |
| -; CHECKBE-NEXT: stw 30, 12(1) |
98 |
| -; CHECKBE-NEXT: cmplwi 3, 0 |
99 |
| -; CHECKBE-NEXT: crandc 20, 8, 2 |
100 |
| -; CHECKBE-NEXT: li 3, 0 |
101 |
| -; CHECKBE-NEXT: stw 3, 24(1) |
102 |
| -; CHECKBE-NEXT: stw 3, 20(1) |
103 |
| -; CHECKBE-NEXT: stw 3, 16(1) |
104 |
| -; CHECKBE-NEXT: stw 3, 8(1) |
105 |
| -; CHECKBE-NEXT: bc 12, 20, .LBB0_1 |
106 |
| -; CHECKBE-NEXT: # %bb.4: # %if.then36 |
107 |
| -; CHECKBE-NEXT: # |
108 |
| -; CHECKBE-NEXT: crand 20, 2, 9 |
109 |
| -; CHECKBE-NEXT: li 7, 0 |
110 |
| -; CHECKBE-NEXT: bc 4, 20, .LBB0_2 |
111 |
| -; CHECKBE-NEXT: b .LBB0_1 |
| 73 | +; CHECKBE-NEXT: stw 8, 8(1) |
| 74 | +; CHECKBE-NEXT: bl xe_migrate_ccs_copy |
| 75 | +; CHECKBE-NEXT: lwz 0, 36(1) |
| 76 | +; CHECKBE-NEXT: addi 1, 1, 32 |
| 77 | +; CHECKBE-NEXT: mtlr 0 |
| 78 | +; CHECKBE-NEXT: blr |
| 79 | + |
112 | 80 | entry:
|
113 |
| - %src_L0 = alloca i64, align 8 |
114 |
| - br label %if.then36 |
| 81 | + br label %while.body |
115 | 82 |
|
116 |
| -if.then36: ; preds = %if.then36, %entry |
117 |
| - %0 = load i32, ptr null, align 4 |
118 |
| - %tobool37.not = icmp eq i32 %0, 0 |
119 |
| - %tobool.tobool6 = select i1 %tobool37.not, i1 %tobool, i1 %tobool6 |
120 |
| - %1 = load i64, ptr %src_L0, align 8 |
121 |
| - %conv55 = trunc i64 %1 to i32 |
122 |
| - %call57 = call i32 null(ptr null, ptr null, i64 0, i1 %tobool.tobool6, i64 0, i1 false, i32 %conv55, i64 0, i1 false) |
123 |
| - br label %if.then36 |
| 83 | +while.body: |
| 84 | + %cond53.in = select i1 %tobool37.not, i1 %tobool4, i1 %tobool9 |
| 85 | + %call57 = call zeroext i32 @xe_migrate_ccs_copy(ptr noundef null, ptr noundef null, i64 0, i1 false, i64 0, i1 %cond53.in, i32 %conv55, i64 0, i1 false) |
| 86 | + ret i32 %call57 |
124 | 87 | }
|
| 88 | + |
| 89 | +declare i32 @xe_migrate_ccs_copy(ptr, ptr, i64, i1, i64, i1, i32, i64, i1) |
0 commit comments