1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-01-31 12:41:49 +01:00
Ulrich Weigand 683cc0a5b0 [SystemZ] Ensure -mno-vx disables any use of vector features
When passing the -vector feature to LLVM (or equivalently the
-mno-vx command line argument to clang), the intent is that
generated code must not use any vector features (in particular,
no vector registers must be used).

However, there are some cases where we still could generate
such uses; these are all related to some of the additional
vector features (like +vector-enhancements-1).  Since none
of those features are actually usable with -vector, just make
sure we disable them all if -vector is given.
2020-07-23 15:34:59 +02:00

34 lines
2.0 KiB
LLVM

; RUN: llc < %s -mtriple=s390x-linux-gnu -o - | FileCheck %s
; This test verifies that passing the "-vector" feature disables *any*
; use of vector instructions, even if +vector-enhancements-1 if given.
; Function Attrs: noinline nounwind optnone
define dso_local signext i32 @foo(fp128* %0, fp128* %1) #0 {
; CHECK-LABEL: @foo
; CHECK-NOT: vl
; CHECK-NOT: vst
; CHECK: br %r14
entry:
%arg1.addr = alloca fp128, align 8
%arg2.addr = alloca fp128, align 8
%indirect-arg-temp = alloca fp128, align 8
%indirect-arg-temp1 = alloca fp128, align 8
%arg1 = load fp128, fp128* %0, align 8
%arg2 = load fp128, fp128* %1, align 8
store fp128 %arg1, fp128* %arg1.addr, align 8
store fp128 %arg2, fp128* %arg2.addr, align 8
%2 = load fp128, fp128* %arg1.addr, align 8
%3 = load fp128, fp128* %arg2.addr, align 8
store fp128 %2, fp128* %indirect-arg-temp, align 8
store fp128 %3, fp128* %indirect-arg-temp1, align 8
%call = call signext i32 @bar(i32 signext 2, fp128* %indirect-arg-temp, fp128* %indirect-arg-temp1)
ret i32 %call
}
declare dso_local signext i32 @bar(i32 signext, fp128*, fp128*) #1
attributes #0 = { noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="z14" "target-features"="+transactional-execution,+vector-enhancements-1,-vector" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="z14" "target-features"="+transactional-execution,+vector-enhancements-1,-vector" "unsafe-fp-math"="false" "use-soft-float"="false" }