|
5 | 5 | ; RUN: | FileCheck --check-prefix=SPILL-O2 %s
|
6 | 6 | ; RUN: llc -mtriple=riscv64 -mattr=+v,+d -mattr=+d -riscv-v-vector-bits-max=128 -O2 < %s \
|
7 | 7 | ; RUN: | FileCheck --check-prefix=SPILL-O2-VLEN128 %s
|
| 8 | +; RUN: llc -mtriple=riscv64 -mattr=+v,+d,+zcmp -O2 < %s \ |
| 9 | +; RUN: | FileCheck --check-prefix=SPILL-O2-ZCMP %s |
8 | 10 |
|
9 | 11 |
|
10 | 12 | @.str = private unnamed_addr constant [6 x i8] c"hello\00", align 1
|
@@ -113,6 +115,37 @@ define <vscale x 1 x double> @foo(<vscale x 1 x double> %a, <vscale x 1 x double
|
113 | 115 | ; SPILL-O2-VLEN128-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
|
114 | 116 | ; SPILL-O2-VLEN128-NEXT: addi sp, sp, 32
|
115 | 117 | ; SPILL-O2-VLEN128-NEXT: ret
|
| 118 | +; |
| 119 | +; SPILL-O2-ZCMP-LABEL: foo: |
| 120 | +; SPILL-O2-ZCMP: # %bb.0: |
| 121 | +; SPILL-O2-ZCMP-NEXT: cm.push {ra, s0}, -32 |
| 122 | +; SPILL-O2-ZCMP-NEXT: csrr a1, vlenb |
| 123 | +; SPILL-O2-ZCMP-NEXT: slli a1, a1, 1 |
| 124 | +; SPILL-O2-ZCMP-NEXT: sub sp, sp, a1 |
| 125 | +; SPILL-O2-ZCMP-NEXT: mv s0, a0 |
| 126 | +; SPILL-O2-ZCMP-NEXT: addi a1, sp, 16 |
| 127 | +; SPILL-O2-ZCMP-NEXT: vs1r.v v8, (a1) # Unknown-size Folded Spill |
| 128 | +; SPILL-O2-ZCMP-NEXT: vsetvli zero, a0, e64, m1, ta, ma |
| 129 | +; SPILL-O2-ZCMP-NEXT: vfadd.vv v9, v8, v9 |
| 130 | +; SPILL-O2-ZCMP-NEXT: csrr a0, vlenb |
| 131 | +; SPILL-O2-ZCMP-NEXT: add a0, a0, sp |
| 132 | +; SPILL-O2-ZCMP-NEXT: addi a0, a0, 16 |
| 133 | +; SPILL-O2-ZCMP-NEXT: vs1r.v v9, (a0) # Unknown-size Folded Spill |
| 134 | +; SPILL-O2-ZCMP-NEXT: lui a0, %hi(.L.str) |
| 135 | +; SPILL-O2-ZCMP-NEXT: addi a0, a0, %lo(.L.str) |
| 136 | +; SPILL-O2-ZCMP-NEXT: call puts |
| 137 | +; SPILL-O2-ZCMP-NEXT: csrr a0, vlenb |
| 138 | +; SPILL-O2-ZCMP-NEXT: add a0, a0, sp |
| 139 | +; SPILL-O2-ZCMP-NEXT: addi a0, a0, 16 |
| 140 | +; SPILL-O2-ZCMP-NEXT: vl1r.v v8, (a0) # Unknown-size Folded Reload |
| 141 | +; SPILL-O2-ZCMP-NEXT: addi a0, sp, 16 |
| 142 | +; SPILL-O2-ZCMP-NEXT: vl1r.v v9, (a0) # Unknown-size Folded Reload |
| 143 | +; SPILL-O2-ZCMP-NEXT: vsetvli zero, s0, e64, m1, ta, ma |
| 144 | +; SPILL-O2-ZCMP-NEXT: vfadd.vv v8, v9, v8 |
| 145 | +; SPILL-O2-ZCMP-NEXT: csrr a0, vlenb |
| 146 | +; SPILL-O2-ZCMP-NEXT: slli a0, a0, 1 |
| 147 | +; SPILL-O2-ZCMP-NEXT: add sp, sp, a0 |
| 148 | +; SPILL-O2-ZCMP-NEXT: cm.popret {ra, s0}, 32 |
116 | 149 | {
|
117 | 150 | %x = call <vscale x 1 x double> @llvm.riscv.vfadd.nxv1f64.nxv1f64(<vscale x 1 x double> undef, <vscale x 1 x double> %a, <vscale x 1 x double> %b, i64 7, i64 %gvl)
|
118 | 151 | %call = call signext i32 @puts(ptr @.str)
|
|
0 commit comments