1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-24 13:33:37 +02:00
llvm-mirror/test/CodeGen/AArch64/GlobalISel/legalize-fneg.mir
Volkan Keles 79375edeb2 [GlobalISel] Add default action for G_FNEG
Summary: rL297171 introduced G_FNEG for floating-point negation instruction and IRTranslator started to translate `FSUB -0.0, X` to `FNEG X`. This patch adds a default action for G_FNEG to avoid breaking existing targets.

Reviewers: qcolombet, ab, kristof.beyls, t.p.northover, aditya_nandakumar, dsanders

Reviewed By: qcolombet

Subscribers: dberris, rovka, llvm-commits

Differential Revision: https://reviews.llvm.org/D30721

llvm-svn: 297301
2017-03-08 18:09:14 +00:00

49 lines
1.2 KiB
YAML

# RUN: llc -O0 -run-pass=legalizer -global-isel %s -o - | FileCheck %s
--- |
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
target triple = "aarch64--"
define void @test_fneg_f32() {
entry:
ret void
}
define void @test_fneg_f64() {
entry:
ret void
}
...
---
name: test_fneg_f32
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.1:
liveins: %s0
; CHECK-LABEL: name: test_fneg_f32
; CHECK: [[VAR:%[0-9]+]](s32) = COPY %s0
; CHECK: [[ZERO:%[0-9]+]](s32) = G_FCONSTANT float -0.000000e+00
; CHECK: [[RES:%[0-9]+]](s32) = G_FSUB [[ZERO]], [[VAR]]
; CHECK: %s0 = COPY [[RES]](s32)
%0(s32) = COPY %s0
%1(s32) = G_FNEG %0
%s0 = COPY %1(s32)
...
---
name: test_fneg_f64
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.1:
liveins: %d0
; CHECK-LABEL: name: test_fneg_f64
; CHECK: [[VAR:%[0-9]+]](s64) = COPY %d0
; CHECK: [[ZERO:%[0-9]+]](s64) = G_FCONSTANT double -0.000000e+00
; CHECK: [[RES:%[0-9]+]](s64) = G_FSUB [[ZERO]], [[VAR]]
; CHECK: %d0 = COPY [[RES]](s64)
%0(s64) = COPY %d0
%1(s64) = G_FNEG %0
%d0 = COPY %1(s64)
...