VG is only used/defined when changing the streaming mode, using 'smstart sm' or plainly 'smstart' (same for smstop).
25 lines
773 B
LLVM
25 lines
773 B
LLVM
; RUN: llc -mattr=+sme -stop-after=finalize-isel < %s | FileCheck %s
|
|
|
|
target triple = "aarch64"
|
|
|
|
; Check that we don't define VG for 'smstart za' and 'smstop za'
|
|
define void @smstart_za() "aarch64_new_za" nounwind {
|
|
; CHECK-LABEL: name: smstart_za
|
|
; CHECK-NOT: implicit-def {{[^,]*}}$vg
|
|
ret void
|
|
}
|
|
|
|
; Check that we do define VG for 'smstart sm' and 'smstop sm'
|
|
define void @smstart_sm() nounwind {
|
|
; CHECK-LABEL: name: smstart_sm
|
|
; CHECK: MSRpstatesvcrImm1 1, 1,
|
|
; CHECK-SAME: implicit-def {{[^,]*}}$vg
|
|
; CHECK: MSRpstatesvcrImm1 1, 0,
|
|
; CHECK-SAME: implicit-def {{[^,]*}}$vg
|
|
call void @require_sm()
|
|
ret void
|
|
}
|
|
|
|
declare void @require_sm() "aarch64_pstate_sm_enabled"
|
|
declare void @require_za() "aarch64_inout_za"
|