summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/SPARC/fp128.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/SPARC/fp128.ll')
-rw-r--r--llvm/test/CodeGen/SPARC/fp128.ll117
1 files changed, 43 insertions, 74 deletions
diff --git a/llvm/test/CodeGen/SPARC/fp128.ll b/llvm/test/CodeGen/SPARC/fp128.ll
index e0eaf93a733..bcc013b7357 100644
--- a/llvm/test/CodeGen/SPARC/fp128.ll
+++ b/llvm/test/CodeGen/SPARC/fp128.ll
@@ -1,30 +1,24 @@
-; RUN: llc < %s -march=sparc -mattr=hard-quad-float | FileCheck %s --check-prefix=HARD
-; RUN: llc < %s -march=sparc -mattr=-hard-quad-float | FileCheck %s --check-prefix=SOFT
+; RUN: llc < %s -march=sparc -mattr=hard-quad-float | FileCheck %s --check-prefix=CHECK --check-prefix=HARD --check-prefix=BE
+; RUN: llc < %s -march=sparcel -mattr=hard-quad-float | FileCheck %s --check-prefix=CHECK --check-prefix=HARD --check-prefix=EL
+; RUN: llc < %s -march=sparc -mattr=-hard-quad-float | FileCheck %s --check-prefix=CHECK --check-prefix=SOFT --check-prefix=BE
+; RUN: llc < %s -march=sparcel -mattr=-hard-quad-float | FileCheck %s --check-prefix=CHECK --check-prefix=SOFT --check-prefix=EL
-; HARD-LABEL: f128_ops
-; HARD: ldd
-; HARD: ldd
-; HARD: ldd
-; HARD: ldd
+; CHECK-LABEL: f128_ops:
+; CHECK: ldd
+; CHECK: ldd
+; CHECK: ldd
+; CHECK: ldd
; HARD: faddq [[R0:.+]], [[R1:.+]], [[R2:.+]]
; HARD: fsubq [[R2]], [[R3:.+]], [[R4:.+]]
; HARD: fmulq [[R4]], [[R5:.+]], [[R6:.+]]
; HARD: fdivq [[R6]], [[R2]]
-; HARD: std
-; HARD: std
-
-; SOFT-LABEL: f128_ops
-; SOFT: ldd
-; SOFT: ldd
-; SOFT: ldd
-; SOFT: ldd
; SOFT: call _Q_add
; SOFT: call _Q_sub
; SOFT: call _Q_mul
; SOFT: call _Q_div
-; SOFT: std
-; SOFT: std
+; CHECK: std
+; CHECK: std
define void @f128_ops(fp128* noalias sret %scalar.result, fp128* byval %a, fp128* byval %b, fp128* byval %c, fp128* byval %d) {
entry:
@@ -40,19 +34,12 @@ entry:
ret void
}
-; HARD-LABEL: f128_spill
-; HARD: std %f{{.+}}, [%[[S0:.+]]]
-; HARD: std %f{{.+}}, [%[[S1:.+]]]
-; HARD-DAG: ldd [%[[S0]]], %f{{.+}}
-; HARD-DAG: ldd [%[[S1]]], %f{{.+}}
-; HARD: jmp {{%[oi]7}}+12
-
-; SOFT-LABEL: f128_spill
-; SOFT: std %f{{.+}}, [%[[S0:.+]]]
-; SOFT: std %f{{.+}}, [%[[S1:.+]]]
-; SOFT-DAG: ldd [%[[S0]]], %f{{.+}}
-; SOFT-DAG: ldd [%[[S1]]], %f{{.+}}
-; SOFT: jmp {{%[oi]7}}+12
+; CHECK-LABEL: f128_spill:
+; CHECK: std %f{{.+}}, [%[[S0:.+]]]
+; CHECK: std %f{{.+}}, [%[[S1:.+]]]
+; CHECK-DAG: ldd [%[[S0]]], %f{{.+}}
+; CHECK-DAG: ldd [%[[S1]]], %f{{.+}}
+; CHECK: jmp {{%[oi]7}}+12
define void @f128_spill(fp128* noalias sret %scalar.result, fp128* byval %a) {
entry:
@@ -62,11 +49,9 @@ entry:
ret void
}
-; HARD-LABEL: f128_compare
+; CHECK-LABEL: f128_compare:
; HARD: fcmpq
; HARD-NEXT: nop
-
-; SOFT-LABEL: f128_compare
; SOFT: _Q_cmp
define i32 @f128_compare(fp128* byval %f0, fp128* byval %f1, i32 %a, i32 %b) {
@@ -78,11 +63,9 @@ entry:
ret i32 %ret
}
-; HARD-LABEL: f128_compare2
-; HARD: fcmpq
-; HARD: fb{{ule|g}}
-
-; SOFT-LABEL: f128_compare2
+; CHECK-LABEL: f128_compare2:
+; HARD: fcmpq
+; HARD: fb{{ule|g}}
; SOFT: _Q_cmp
; SOFT: cmp
@@ -99,11 +82,11 @@ entry:
}
-; HARD-LABEL: f128_abs
-; HARD: fabss
-
-; SOFT-LABEL: f128_abs
-; SOFT: fabss
+; CHECK-LABEL: f128_abs:
+; CHECK: ldd [%o0], %f0
+; CHECK: ldd [%o0+8], %f2
+; BE: fabss %f0, %f0
+; EL: fabss %f3, %f3
define void @f128_abs(fp128* noalias sret %scalar.result, fp128* byval %a) {
entry:
@@ -115,10 +98,8 @@ entry:
declare fp128 @llvm.fabs.f128(fp128) nounwind readonly
-; HARD-LABEL: int_to_f128
+; CHECK-LABEL: int_to_f128:
; HARD: fitoq
-
-; SOFT-LABEL: int_to_f128
; SOFT: _Q_itoq
define void @int_to_f128(fp128* noalias sret %scalar.result, i32 %i) {
@@ -128,17 +109,12 @@ entry:
ret void
}
-; HARD-LABEL: fp128_unaligned
-; HARD: ldub
-; HARD: faddq
-; HARD: stb
-; HARD: ret
-
-; SOFT-LABEL: fp128_unaligned
-; SOFT: ldub
+; CHECK-LABEL: fp128_unaligned:
+; CHECK: ldub
+; HARD: faddq
; SOFT: call _Q_add
-; SOFT: stb
-; SOFT: ret
+; CHECK: stb
+; CHECK: ret
define void @fp128_unaligned(fp128* %a, fp128* %b, fp128* %c) {
entry:
@@ -149,10 +125,8 @@ entry:
ret void
}
-; HARD-LABEL: uint_to_f128
+; CHECK-LABEL: uint_to_f128:
; HARD: fdtoq
-
-; SOFT-LABEL: uint_to_f128
; SOFT: _Q_utoq
define void @uint_to_f128(fp128* noalias sret %scalar.result, i32 %i) {
@@ -162,11 +136,9 @@ entry:
ret void
}
-; HARD-LABEL: f128_to_i32
+; CHECK-LABEL: f128_to_i32:
; HARD: fqtoi
; HARD: fqtoi
-
-; SOFT-LABEL: f128_to_i32
; SOFT: call _Q_qtou
; SOFT: call _Q_qtoi
@@ -181,13 +153,11 @@ entry:
ret i32 %4
}
-; HARD-LABEL: test_itoq_qtoi
+; CHECK-LABEL: test_itoq_qtoi
; HARD-DAG: call _Q_lltoq
; HARD-DAG: call _Q_qtoll
; HARD-DAG: fitoq
; HARD-DAG: fqtoi
-
-; SOFT-LABEL: test_itoq_qtoi
; SOFT-DAG: call _Q_lltoq
; SOFT-DAG: call _Q_qtoll
; SOFT-DAG: call _Q_itoq
@@ -209,15 +179,11 @@ entry:
ret void
}
-; HARD-LABEL: test_utoq_qtou
-; HARD-DAG: call _Q_ulltoq
-; HARD-DAG: call _Q_qtoull
+; CHECK-LABEL: test_utoq_qtou:
+; CHECK-DAG: call _Q_ulltoq
+; CHECK-DAG: call _Q_qtoull
; HARD-DAG: fdtoq
; HARD-DAG: fqtoi
-
-; SOFT-LABEL: test_utoq_qtou
-; SOFT-DAG: call _Q_ulltoq
-; SOFT-DAG: call _Q_qtoull
; SOFT-DAG: call _Q_utoq
; SOFT-DAG: call _Q_qtou
@@ -237,8 +203,11 @@ entry:
ret void
}
-; SOFT-LABEL: f128_neg
-; SOFT: fnegs
+; CHECK-LABEL: f128_neg:
+; CHECK: ldd [%o0], %f0
+; CHECK: ldd [%o0+8], %f2
+; BE: fnegs %f0, %f0
+; EL: fnegs %f3, %f3
define void @f128_neg(fp128* noalias sret %scalar.result, fp128* byval %a) {
entry:
OpenPOWER on IntegriCloud