2017-05-27 09:34:07 +08:00
|
|
|
# RUN: llc -O0 -mtriple aarch64-apple-ios %s -global-isel -start-after regbankselect \
|
|
|
|
# RUN: -stop-before instruction-select -o - | FileCheck --check-prefix=CHECK --check-prefix=OPTNONE %s
|
|
|
|
# RUN: llc -mtriple aarch64-apple-ios %s -global-isel -start-after regbankselect \
|
|
|
|
# RUN: -stop-before instruction-select -o - | FileCheck --check-prefix=CHECK --check-prefix=OPT %s
|
|
|
|
#
|
|
|
|
# Check that we are only running the localizer at O0 and that it runs
|
|
|
|
# between the regbankselect pass and the instruction-select.
|
|
|
|
# Moreover, check that it does what we expect.
|
|
|
|
--- |
|
|
|
|
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
|
|
|
|
target triple = "aarch64-apple-ios"
|
2017-10-25 02:04:54 +08:00
|
|
|
|
2017-05-27 09:34:07 +08:00
|
|
|
define float @foo(float %arg, i1 %cond) {
|
|
|
|
br i1 %cond, label %true, label %false
|
2017-10-25 02:04:54 +08:00
|
|
|
|
2017-05-27 09:34:07 +08:00
|
|
|
true: ; preds = %0
|
|
|
|
br label %end
|
2017-10-25 02:04:54 +08:00
|
|
|
|
2017-05-27 09:34:07 +08:00
|
|
|
false: ; preds = %0
|
|
|
|
br label %end
|
2017-10-25 02:04:54 +08:00
|
|
|
|
2017-05-27 09:34:07 +08:00
|
|
|
end: ; preds = %false, %true
|
|
|
|
%val = phi float [ 1.000000e+00, %true ], [ 2.000000e+00, %false ]
|
|
|
|
%res = fadd float %arg, %val
|
|
|
|
ret float %res
|
|
|
|
}
|
|
|
|
|
|
|
|
...
|
|
|
|
---
|
|
|
|
# CHECK-LABEL: name: foo
|
|
|
|
name: foo
|
[Alignment] Use llvm::Align in MachineFunction and TargetLowering - fixes mir parsing
Summary:
This catches malformed mir files which specify alignment as log2 instead of pow2.
See https://reviews.llvm.org/D65945 for reference,
This is patch is part of a series to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790
Reviewers: courbet
Subscribers: MatzeB, qcolombet, dschuff, arsenm, sdardis, nemanjai, jvesely, nhaehnle, hiraditya, kbarton, asb, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, jrtc27, MaskRay, zzheng, edward-jones, atanasyan, rogfer01, MartinMosbeck, brucehoult, the_o, PkmX, jocewei, jsji, Petar.Avramovic, asbirlea, s.egerton, pzheng, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67433
llvm-svn: 371608
2019-09-11 19:16:48 +08:00
|
|
|
alignment: 4
|
2017-05-27 09:34:07 +08:00
|
|
|
legalized: true
|
|
|
|
regBankSelected: true
|
|
|
|
tracksRegLiveness: true
|
|
|
|
registers:
|
|
|
|
# CHECK: registers:
|
2017-06-06 16:16:19 +08:00
|
|
|
# CHECK-NEXT: - { id: 0, class: fpr, preferred-register: '' }
|
|
|
|
# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
|
|
|
|
# CHECK-NEXT: - { id: 2, class: fpr, preferred-register: '' }
|
|
|
|
# CHECK-NEXT: - { id: 3, class: fpr, preferred-register: '' }
|
|
|
|
# CHECK-NEXT: - { id: 4, class: fpr, preferred-register: '' }
|
|
|
|
# CHECK-NEXT: - { id: 5, class: fpr, preferred-register: '' }
|
2017-10-24 06:53:04 +08:00
|
|
|
# CHECK-NEXT: - { id: 6, class: gpr, preferred-register: '' }
|
2017-05-27 09:34:07 +08:00
|
|
|
# The localizer will create two new values to materialize the constants.
|
2017-06-06 16:16:19 +08:00
|
|
|
# OPTNONE-NEXT: - { id: 7, class: fpr, preferred-register: '' }
|
2017-10-24 06:53:04 +08:00
|
|
|
# OPTNONE-NEXT: - { id: 8, class: fpr, preferred-register: '' }
|
2017-05-27 09:34:07 +08:00
|
|
|
- { id: 0, class: fpr }
|
|
|
|
- { id: 1, class: gpr }
|
|
|
|
- { id: 2, class: fpr }
|
|
|
|
- { id: 3, class: fpr }
|
|
|
|
- { id: 4, class: fpr }
|
|
|
|
- { id: 5, class: fpr }
|
2017-10-24 06:53:04 +08:00
|
|
|
- { id: 6, class: gpr }
|
2017-05-27 09:34:07 +08:00
|
|
|
|
|
|
|
# First block remains untouched
|
|
|
|
# CHECK: body
|
2017-10-25 02:04:54 +08:00
|
|
|
# CHECK: %4:fpr(s32) = G_FCONSTANT float 1.000000e+00
|
|
|
|
# CHECK: %5:fpr(s32) = G_FCONSTANT float 2.000000e+00
|
2017-05-27 09:34:07 +08:00
|
|
|
|
|
|
|
# Second block will get the constant 1.0 when the localizer is enabled.
|
2017-12-05 01:18:51 +08:00
|
|
|
# CHECK: bb.1.{{[a-zA-Z0-9]+}}:
|
2019-09-07 06:27:09 +08:00
|
|
|
# OPT: [[FONE:%[0-9]+]]:fpr(s32) = G_FCONSTANT float 1.000000e+00
|
2017-10-25 02:04:54 +08:00
|
|
|
# OPTNONE: [[FONE:%[0-9]+]]:fpr(s32) = G_FCONSTANT float 1.000000e+00
|
2017-12-05 01:18:51 +08:00
|
|
|
# CHECK: G_BR %bb.3
|
2017-05-27 09:34:07 +08:00
|
|
|
|
|
|
|
# Thrid block will get the constant 2.0 when the localizer is enabled.
|
2017-12-05 01:18:51 +08:00
|
|
|
# CHECK: bb.2.{{[a-zA-Z0-9]+}}:
|
2019-09-07 06:27:09 +08:00
|
|
|
# OPT: [[FTWO:%[0-9]+]]:fpr(s32) = G_FCONSTANT float 2.000000e+00
|
2017-10-25 02:04:54 +08:00
|
|
|
# OPTNONE: [[FTWO:%[0-9]+]]:fpr(s32) = G_FCONSTANT float 2.000000e+00
|
2017-05-27 09:34:07 +08:00
|
|
|
|
|
|
|
# CHECK: bb.3.end
|
2017-12-05 01:18:51 +08:00
|
|
|
# OPTNONE: %2:fpr(s32) = PHI [[FONE]](s32), %bb.1, [[FTWO]](s32), %bb.2
|
2019-09-07 06:27:09 +08:00
|
|
|
# OPT: %2:fpr(s32) = PHI [[FONE]](s32), %bb.1, [[FTWO]](s32), %bb.2
|
2017-05-27 09:34:07 +08:00
|
|
|
# CHECK-NEXT: G_FADD %0, %2
|
|
|
|
body: |
|
|
|
|
bb.0 (%ir-block.0):
|
2018-02-01 06:04:26 +08:00
|
|
|
liveins: $s0, $w0
|
2017-05-27 09:34:07 +08:00
|
|
|
|
2018-02-01 06:04:26 +08:00
|
|
|
%0(s32) = COPY $s0
|
|
|
|
%6(s32) = COPY $w0
|
2017-10-24 06:53:04 +08:00
|
|
|
%1(s1) = G_TRUNC %6
|
2017-05-27 09:34:07 +08:00
|
|
|
%4(s32) = G_FCONSTANT float 1.000000e+00
|
|
|
|
%5(s32) = G_FCONSTANT float 2.000000e+00
|
2017-12-05 01:18:51 +08:00
|
|
|
G_BRCOND %1(s1), %bb.1
|
|
|
|
G_BR %bb.2
|
2017-10-25 02:04:54 +08:00
|
|
|
|
2017-05-27 09:34:07 +08:00
|
|
|
bb.1.true:
|
2017-12-05 01:18:51 +08:00
|
|
|
G_BR %bb.3
|
2017-10-25 02:04:54 +08:00
|
|
|
|
2017-05-27 09:34:07 +08:00
|
|
|
bb.2.false:
|
2017-10-25 02:04:54 +08:00
|
|
|
|
2017-05-27 09:34:07 +08:00
|
|
|
bb.3.end:
|
2017-12-05 01:18:51 +08:00
|
|
|
%2(s32) = PHI %4(s32), %bb.1, %5(s32), %bb.2
|
2017-05-27 09:34:07 +08:00
|
|
|
%3(s32) = G_FADD %0, %2
|
2018-02-01 06:04:26 +08:00
|
|
|
$s0 = COPY %3(s32)
|
|
|
|
RET_ReallyLR implicit $s0
|
2017-05-27 09:34:07 +08:00
|
|
|
|
|
|
|
...
|