diff options
Diffstat (limited to 'llvm/test/CodeGen/SPARC/fp128.ll')
-rw-r--r-- | llvm/test/CodeGen/SPARC/fp128.ll | 117 |
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: |