1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-01-31 20:51:52 +01:00
llvm-mirror/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir
Vedant Kumar 3358e53af8 [ARM] Mark some tests as not safe for -debugify-and-strip-all, NFC
These tests contain debug instructions which get checked, so we can't
insert synthetic debug info and expect the tests to pass.

The rest of the ARM backend tests appear to be fair game.
2020-04-22 17:03:39 -07:00

1593 lines
39 KiB
YAML

# RUN: llc -debugify-and-strip-all-safe=0 -mtriple arm-- -run-pass=regbankselect %s -o - | FileCheck %s
# RUN: llc -debugify-and-strip-all-safe=0 -mtriple thumbv7-- -run-pass=regbankselect %s -o - | FileCheck %s
--- |
define void @test_add_s32() { ret void }
define void @test_sub_s32() { ret void }
define void @test_mul_s32() { ret void }
define void @test_sdiv_s32() #1 { ret void }
define void @test_udiv_s32() #1 { ret void }
define void @test_and_s32() { ret void}
define void @test_or_s32() { ret void}
define void @test_xor_s32() { ret void}
define void @test_lshr_s32() { ret void }
define void @test_ashr_s32() { ret void }
define void @test_shl_s32() { ret void }
define void @test_loads() #0 { ret void }
define void @test_stores() #0 { ret void }
define void @test_stack() { ret void }
define void @test_gep() { ret void }
define void @test_constants() { ret void }
define void @test_inttoptr_s32() { ret void }
define void @test_ptrtoint_s32() { ret void }
define void @test_ctlz_s32() #3 { ret void }
@a_global = global float 1.0
define void @test_globals() { ret void }
define void @test_anyext_s8_32() { ret void }
define void @test_anyext_s16_32() { ret void }
define void @test_trunc_s32_16() { ret void }
define void @test_trunc_s64_32() #0 { ret void }
define void @test_icmp_eq_s32() { ret void }
define void @test_fcmp_one_s32() #0 { ret void }
define void @test_fcmp_ugt_s64() #0 { ret void }
define void @test_select_s32() { ret void }
define void @test_br() { ret void }
define void @test_phi_s32() { ret void }
define void @test_phi_s64() #0 { ret void }
define void @test_fadd_s32() #0 { ret void }
define void @test_fadd_s64() #0 { ret void }
define void @test_fsub_s32() #0 { ret void }
define void @test_fsub_s64() #0 { ret void }
define void @test_fmul_s32() #0 { ret void }
define void @test_fmul_s64() #0 { ret void }
define void @test_fdiv_s32() #0 { ret void }
define void @test_fdiv_s64() #0 { ret void }
define void @test_fneg_s32() #0 { ret void }
define void @test_fneg_s64() #0 { ret void }
define void @test_fma_s32() #2 { ret void }
define void @test_fma_s64() #2 { ret void }
define void @test_fpext_s32_to_s64() #0 { ret void }
define void @test_fptrunc_s64_to_s32() #0 { ret void }
define void @test_fpconst_s32() #0 { ret void }
define void @test_fpconst_s64() #0 { ret void }
define void @test_fptosi_s32() #0 { ret void }
define void @test_fptosi_s64() #0 { ret void }
define void @test_fptoui_s32() #0 { ret void }
define void @test_fptoui_s64() #0 { ret void }
define void @test_sitofp_s32() #0 { ret void }
define void @test_sitofp_s64() #0 { ret void }
define void @test_uitofp_s32() #0 { ret void }
define void @test_uitofp_s64() #0 { ret void }
define void @test_soft_fp_s64() #0 { ret void }
define void @test_dbg_value() #0 { ret void }
attributes #0 = { "target-features"="+vfp2"}
attributes #1 = { "target-features"="+hwdiv-arm,+hwdiv" }
attributes #2 = { "target-features"="+vfp4"}
attributes #3 = { "target-features"="+v5t"}
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "llvm", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
!1 = !DIFile(filename: "dbg.ll", directory: "/tmp")
!2 = !{}
!5 = distinct !DISubprogram(name: "test_dbg_value", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
!6 = !DISubroutineType(types: !2)
!7 = !DILocalVariable(name: "x", arg: 1, scope: !5, file: !1, line: 1, type: !8)
!8 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
!9 = !DILocation(line: 1, column: 1, scope: !5)
...
---
name: test_add_s32
# CHECK-LABEL: name: test_add_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $r0, $r1
%0(s32) = COPY $r0
%1(s32) = COPY $r1
%2(s32) = G_ADD %0, %1
$r0 = COPY %2(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_sub_s32
# CHECK-LABEL: name: test_sub_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $r0, $r1
%0(s32) = COPY $r0
%1(s32) = COPY $r1
%2(s32) = G_SUB %0, %1
$r0 = COPY %2(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_mul_s32
# CHECK-LABEL: name: test_mul_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $r0, $r1
%0(s32) = COPY $r0
%1(s32) = COPY $r1
%2(s32) = G_MUL %0, %1
$r0 = COPY %2(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_sdiv_s32
# CHECK-LABEL: name: test_sdiv_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $r0, $r1
%0(s32) = COPY $r0
%1(s32) = COPY $r1
%2(s32) = G_SDIV %0, %1
$r0 = COPY %2(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_udiv_s32
# CHECK-LABEL: name: test_udiv_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $r0, $r1
%0(s32) = COPY $r0
%1(s32) = COPY $r1
%2(s32) = G_UDIV %0, %1
$r0 = COPY %2(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_and_s32
# CHECK-LABEL: name: test_and_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $r0, $r1
%0(s32) = COPY $r0
%1(s32) = COPY $r1
%2(s32) = G_AND %0, %1
$r0 = COPY %2(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_or_s32
# CHECK-LABEL: name: test_or_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $r0, $r1
%0(s32) = COPY $r0
%1(s32) = COPY $r1
%2(s32) = G_OR %0, %1
$r0 = COPY %2(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_xor_s32
# CHECK-LABEL: name: test_xor_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $r0, $r1
%0(s32) = COPY $r0
%1(s32) = COPY $r1
%2(s32) = G_XOR %0, %1
$r0 = COPY %2(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_lshr_s32
# CHECK-LABEL: name: test_lshr_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $r0, $r1
%0(s32) = COPY $r0
%1(s32) = COPY $r1
%2(s32) = G_LSHR %0, %1
$r0 = COPY %2(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_ashr_s32
# CHECK-LABEL: name: test_ashr_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $r0, $r1
%0(s32) = COPY $r0
%1(s32) = COPY $r1
%2(s32) = G_ASHR %0, %1
$r0 = COPY %2(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_shl_s32
# CHECK-LABEL: name: test_shl_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $r0, $r1
%0(s32) = COPY $r0
%1(s32) = COPY $r1
%2(s32) = G_SHL %0, %1
$r0 = COPY %2(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_loads
# CHECK-LABEL: name: test_loads
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
# CHECK: - { id: 3, class: gprb, preferred-register: '' }
# CHECK: - { id: 4, class: gprb, preferred-register: '' }
# CHECK: - { id: 5, class: gprb, preferred-register: '' }
# CHECK: - { id: 6, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
- { id: 3, class: _ }
- { id: 4, class: _ }
- { id: 5, class: _ }
- { id: 6, class: _ }
body: |
bb.0:
liveins: $r0
%0(p0) = COPY $r0
%6(s64) = G_LOAD %0 :: (load 8)
%1(s32) = G_LOAD %0 :: (load 4)
%2(s16) = G_LOAD %0 :: (load 2)
%3(s8) = G_LOAD %0 :: (load 1)
%4(s1) = G_LOAD %0 :: (load 1)
%5(p0) = G_LOAD %0 :: (load 4)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_stores
# CHECK-LABEL: name: test_stores
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
# CHECK: - { id: 3, class: gprb, preferred-register: '' }
# CHECK: - { id: 4, class: gprb, preferred-register: '' }
# CHECK: - { id: 5, class: gprb, preferred-register: '' }
# CHECK: - { id: 6, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
- { id: 3, class: _ }
- { id: 4, class: _ }
- { id: 5, class: _ }
- { id: 6, class: _ }
body: |
bb.0:
liveins: $r0, $r1, $r5, $d6
%0(p0) = COPY $r0
%1(s32) = COPY $r1
G_STORE %1(s32), %0 :: (store 4)
%2(s16) = G_TRUNC %1(s32)
G_STORE %2(s16), %0 :: (store 2)
%3(s8) = G_TRUNC %1(s32)
G_STORE %3(s8), %0 :: (store 1)
%4(s1) = G_TRUNC %1(s32)
G_STORE %4(s1), %0 :: (store 1)
%5(p0) = COPY $r5
G_STORE %5(p0), %0 :: (store 4)
%6(s64) = COPY $d6
G_STORE %6(s64), %0 :: (store 8)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_stack
# CHECK-LABEL: name: test_stack
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
# CHECK: - { id: 3, class: gprb, preferred-register: '' }
# CHECK: - { id: 4, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
- { id: 3, class: _ }
- { id: 4, class: _ }
fixedStack:
- { id: 0, offset: 0, size: 4, alignment: 4, isImmutable: true, isAliased: false }
body: |
bb.0:
%0(p0) = G_FRAME_INDEX %fixed-stack.0
%1(s32) = G_LOAD %0(p0) :: (load 4 from %fixed-stack.0, align 4)
%2(p0) = COPY $sp
%3(s32) = G_CONSTANT i32 8
%4(p0) = G_PTR_ADD %2, %3(s32)
G_STORE %1(s32), %4(p0) :: (store 4)
BX_RET 14, $noreg
...
---
name: test_gep
# CHECK-LABEL: name: test_gep
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $r0, $r1
%0(p0) = COPY $r0
%1(s32) = COPY $r1
%2(p0) = G_PTR_ADD %0, %1(s32)
$r0 = COPY %2(p0)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_constants
# CHECK-LABEL: name: test_constants
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
body: |
bb.0:
%0(s32) = G_CONSTANT i32 42
$r0 = COPY %0(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_inttoptr_s32
# CHECK-LABEL: name: test_inttoptr_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
%0(s32) = COPY $r0
%1(p0) = G_INTTOPTR %0(s32)
$r0 = COPY %1(p0)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_ptrtoint_s32
# CHECK-LABEL: name: test_ptrtoint_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
%0(p0) = COPY $r0
%1(s32) = G_PTRTOINT %0(p0)
$r0 = COPY %1(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_ctlz_s32
# CHECK-LABEL: name: test_ctlz_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
%0(s32) = COPY $r0
%1(s32) = G_CTLZ %0(s32)
$r0 = COPY %1(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_globals
# CHECK-LABEL: name: test_globals
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
body: |
bb.0:
%0(p0) = G_GLOBAL_VALUE @a_global
$r0 = COPY %0(p0)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_anyext_s8_32
# CHECK-LABEL: name: test_anyext_s8_32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $r0
%0(s32) = COPY $r0
%1(s8) = G_TRUNC %0(s32)
%2(s32) = G_ANYEXT %1(s8)
$r0 = COPY %2(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_anyext_s16_32
# CHECK-LABEL: name: test_anyext_s16_32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $r0
%0(s32) = COPY $r0
%1(s16) = G_TRUNC %0(s32)
%2(s32) = G_ANYEXT %1(s16)
$r0 = COPY %2(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_trunc_s32_16
# CHECK-LABEL: name: test_trunc_s32_16
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $r0, $r1
%0(s32) = COPY $r0
%2(p0) = COPY $r1
%1(s16) = G_TRUNC %0(s32)
G_STORE %1(s16), %2 :: (store 2)
BX_RET 14, $noreg
...
---
name: test_trunc_s64_32
# CHECK-LABEL: name: test_trunc_s64_32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $r0, $d0
%0(s64) = COPY $d0
%2(p0) = COPY $r0
%1(s32) = G_TRUNC %0(s64)
G_STORE %1(s32), %2 :: (store 4)
BX_RET 14, $noreg
...
---
name: test_icmp_eq_s32
# CHECK-LABEL: name: test_icmp_eq_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
# CHECK: - { id: 3, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
- { id: 3, class: _ }
body: |
bb.0:
liveins: $r0, $r1
%0(s32) = COPY $r0
%1(s32) = COPY $r1
%2(s1) = G_ICMP intpred(eq), %0(s32), %1
%3(s32) = G_ZEXT %2(s1)
$r0 = COPY %3(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_fcmp_one_s32
# CHECK-LABEL: name: test_fcmp_one_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
# CHECK: - { id: 3, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
- { id: 3, class: _ }
body: |
bb.0:
liveins: $s0, $s1
%0(s32) = COPY $s0
%1(s32) = COPY $s1
%2(s1) = G_FCMP floatpred(one), %0(s32), %1
%3(s32) = G_ZEXT %2(s1)
$r0 = COPY %3(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_fcmp_ugt_s64
# CHECK-LABEL: name: test_fcmp_ugt_s64
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
# CHECK: - { id: 3, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
- { id: 3, class: _ }
body: |
bb.0:
liveins: $d0, $d1
%0(s64) = COPY $d0
%1(s64) = COPY $d1
%2(s1) = G_FCMP floatpred(ugt), %0(s64), %1
%3(s32) = G_ZEXT %2(s1)
$r0 = COPY %3(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_select_s32
# CHECK-LABEL: name: test_select_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: gprb, preferred-register: '' }
# CHECK: - { id: 3, class: gprb, preferred-register: '' }
# CHECK: - { id: 4, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
- { id: 3, class: _ }
- { id: 4, class: _ }
body: |
bb.0:
liveins: $r0, $r1, $r2
%0(s32) = COPY $r0
%1(s32) = COPY $r1
%2(s32) = COPY $r2
%3(s1) = G_TRUNC %2(s32)
%4(s32) = G_SELECT %3(s1), %0, %1
$r0 = COPY %4(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_br
# CHECK-LABEL: name: test_br
legalized: true
regBankSelected: false
# CHECK: regBankSelected: true
selected: false
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
# CHECK: { id: 0, class: gprb, preferred-register: '' }
# CHECK: { id: 1, class: gprb, preferred-register: '' }
# Check that we map the condition of the G_BRCOND into the GPR.
# For the G_BR, there are no registers to map, but make sure we don't crash.
body: |
bb.0:
successors: %bb.1(0x40000000), %bb.2(0x40000000)
liveins: $r0
%0(s32) = COPY $r0
%1(s1) = G_TRUNC %0(s32)
G_BRCOND %1(s1), %bb.1
G_BR %bb.2
bb.1:
BX_RET 14, $noreg
bb.2:
BX_RET 14, $noreg
...
---
name: test_phi_s32
# CHECK-LABEL: name: test_phi_s32
legalized: true
regBankSelected: false
# CHECK: regBankSelected: true
selected: false
tracksRegLiveness: true
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
- { id: 3, class: _ }
- { id: 4, class: _ }
# CHECK: { id: 0, class: gprb, preferred-register: '' }
# CHECK: { id: 1, class: gprb, preferred-register: '' }
# CHECK: { id: 2, class: gprb, preferred-register: '' }
# CHECK: { id: 3, class: gprb, preferred-register: '' }
# CHECK: { id: 4, class: gprb, preferred-register: '' }
body: |
bb.0:
successors: %bb.1(0x40000000), %bb.2(0x40000000)
liveins: $r0, $r1, $r2
%0(s32) = COPY $r0
%1(s1) = G_TRUNC %0(s32)
%2(s32) = COPY $r1
%3(s32) = COPY $r2
G_BRCOND %1(s1), %bb.1
G_BR %bb.2
bb.1:
successors: %bb.2(0x80000000)
bb.2:
%4(s32) = G_PHI %2(s32), %bb.0, %3(s32), %bb.1
$r0 = COPY %4(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_phi_s64
# CHECK-LABEL: name: test_phi_s64
legalized: true
regBankSelected: false
# CHECK: regBankSelected: true
selected: false
tracksRegLiveness: true
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
- { id: 3, class: _ }
- { id: 4, class: _ }
# CHECK: { id: 0, class: gprb, preferred-register: '' }
# CHECK: { id: 1, class: gprb, preferred-register: '' }
# CHECK: { id: 2, class: fprb, preferred-register: '' }
# CHECK: { id: 3, class: fprb, preferred-register: '' }
# CHECK: { id: 4, class: fprb, preferred-register: '' }
body: |
bb.0:
successors: %bb.1(0x40000000), %bb.2(0x40000000)
liveins: $r0, $d0, $d1
%0(s32) = COPY $r0
%1(s1) = G_TRUNC %0(s32)
%2(s64) = COPY $d0
%3(s64) = COPY $d1
G_BRCOND %1(s1), %bb.1
G_BR %bb.2
bb.1:
successors: %bb.2(0x80000000)
bb.2:
%4(s64) = G_PHI %2(s64), %bb.0, %3(s64), %bb.1
$d0 = COPY %4(s64)
BX_RET 14, $noreg, implicit $d0
...
---
name: test_fadd_s32
# CHECK-LABEL: name: test_fadd_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
# CHECK: - { id: 2, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $s0, $s1
%0(s32) = COPY $s0
%1(s32) = COPY $s1
%2(s32) = G_FADD %0, %1
$s0 = COPY %2(s32)
BX_RET 14, $noreg, implicit $s0
...
---
name: test_fadd_s64
# CHECK-LABEL: name: test_fadd_s64
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
# CHECK: - { id: 2, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $d0, $d1
%0(s64) = COPY $d0
%1(s64) = COPY $d1
%2(s64) = G_FADD %0, %1
$d0 = COPY %2(s64)
BX_RET 14, $noreg, implicit $d0
...
---
name: test_fsub_s32
# CHECK-LABEL: name: test_fsub_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
# CHECK: - { id: 2, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $s0, $s1
%0(s32) = COPY $s0
%1(s32) = COPY $s1
%2(s32) = G_FSUB %0, %1
$s0 = COPY %2(s32)
BX_RET 14, $noreg, implicit $s0
...
---
name: test_fsub_s64
# CHECK-LABEL: name: test_fsub_s64
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
# CHECK: - { id: 2, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $d0, $d1
%0(s64) = COPY $d0
%1(s64) = COPY $d1
%2(s64) = G_FSUB %0, %1
$d0 = COPY %2(s64)
BX_RET 14, $noreg, implicit $d0
...
---
name: test_fmul_s32
# CHECK-LABEL: name: test_fmul_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
# CHECK: - { id: 2, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $s0, $s1
%0(s32) = COPY $s0
%1(s32) = COPY $s1
%2(s32) = G_FMUL %0, %1
$s0 = COPY %2(s32)
BX_RET 14, $noreg, implicit $s0
...
---
name: test_fmul_s64
# CHECK-LABEL: name: test_fmul_s64
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
# CHECK: - { id: 2, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $d0, $d1
%0(s64) = COPY $d0
%1(s64) = COPY $d1
%2(s64) = G_FMUL %0, %1
$d0 = COPY %2(s64)
BX_RET 14, $noreg, implicit $d0
...
---
name: test_fdiv_s32
# CHECK-LABEL: name: test_fdiv_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
# CHECK: - { id: 2, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $s0, $s1
%0(s32) = COPY $s0
%1(s32) = COPY $s1
%2(s32) = G_FDIV %0, %1
$s0 = COPY %2(s32)
BX_RET 14, $noreg, implicit $s0
...
---
name: test_fdiv_s64
# CHECK-LABEL: name: test_fdiv_s64
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
# CHECK: - { id: 2, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
body: |
bb.0:
liveins: $d0, $d1
%0(s64) = COPY $d0
%1(s64) = COPY $d1
%2(s64) = G_FDIV %0, %1
$d0 = COPY %2(s64)
BX_RET 14, $noreg, implicit $d0
...
---
name: test_fneg_s32
# CHECK-LABEL: name: test_fneg_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: $s0
%0(s32) = COPY $s0
%1(s32) = G_FNEG %0
$s0 = COPY %1(s32)
BX_RET 14, $noreg, implicit $s0
...
---
name: test_fneg_s64
# CHECK-LABEL: name: test_fneg_s64
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: $d0
%0(s64) = COPY $d0
%1(s64) = G_FNEG %0
$d0 = COPY %1(s64)
BX_RET 14, $noreg, implicit $d0
...
---
name: test_fma_s32
# CHECK-LABEL: name: test_fma_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
# CHECK: - { id: 2, class: fprb, preferred-register: '' }
# CHECK: - { id: 3, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
- { id: 3, class: _ }
body: |
bb.0:
liveins: $s0, $s1, $s2
%0(s32) = COPY $s0
%1(s32) = COPY $s1
%2(s32) = COPY $s2
%3(s32) = G_FMA %0, %1, %2
$s0 = COPY %3(s32)
BX_RET 14, $noreg, implicit $s0
...
---
name: test_fma_s64
# CHECK-LABEL: name: test_fma_s64
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
# CHECK: - { id: 2, class: fprb, preferred-register: '' }
# CHECK: - { id: 3, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
- { id: 3, class: _ }
body: |
bb.0:
liveins: $d0, $d1, $d2
%0(s64) = COPY $d0
%1(s64) = COPY $d1
%2(s64) = COPY $d2
%3(s64) = G_FMA %0, %1, %2
$d0 = COPY %3(s64)
BX_RET 14, $noreg, implicit $d0
...
---
name: test_fpext_s32_to_s64
# CHECK-LABEL: name: test_fpext_s32_to_s64
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: $s0
%0(s32) = COPY $s0
%1(s64) = G_FPEXT %0
$d0 = COPY %1(s64)
BX_RET 14, $noreg, implicit $d0
...
---
name: test_fptrunc_s64_to_s32
# CHECK-LABEL: name: test_fptrunc_s64_to_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: $d0
%0(s64) = COPY $d0
%1(s32) = G_FPTRUNC %0
$s0 = COPY %1(s32)
BX_RET 14, $noreg, implicit $s0
...
---
name: test_fpconst_s32
# CHECK-LABEL: name: test_fpconst_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
body: |
bb.0:
liveins:
%0(s32) = G_FCONSTANT float -1.25
$s0 = COPY %0(s32)
BX_RET 14, $noreg, implicit $s0
...
---
name: test_fpconst_s64
# CHECK-LABEL: name: test_fpconst_s64
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
body: |
bb.0:
liveins:
%0(s64) = G_FCONSTANT double -2.4
$d0 = COPY %0(s64)
BX_RET 14, $noreg, implicit $d0
...
---
name: test_fptosi_s32
# CHECK-LABEL: name: test_fptosi_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: $s0
%0(s32) = COPY $s0
%1(s32) = G_FPTOSI %0
$r0 = COPY %1(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_fptosi_s64
# CHECK-LABEL: name: test_fptosi_s64
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: $d0
%0(s64) = COPY $d0
%1(s32) = G_FPTOSI %0
$r0 = COPY %1(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_fptoui_s32
# CHECK-LABEL: name: test_fptoui_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: $s0
%0(s32) = COPY $s0
%1(s32) = G_FPTOUI %0
$r0 = COPY %1(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_fptoui_s64
# CHECK-LABEL: name: test_fptoui_s64
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: fprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: $d0
%0(s64) = COPY $d0
%1(s32) = G_FPTOUI %0
$r0 = COPY %1(s32)
BX_RET 14, $noreg, implicit $r0
...
---
name: test_sitofp_s32
# CHECK-LABEL: name: test_sitofp_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: $r0
%0(s32) = COPY $r0
%1(s32) = G_SITOFP %0
$s0 = COPY %1(s32)
BX_RET 14, $noreg, implicit $s0
...
---
name: test_sitofp_s64
# CHECK-LABEL: name: test_sitofp_s64
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: $r0
%0(s32) = COPY $r0
%1(s64) = G_SITOFP %0
$d0 = COPY %1(s64)
BX_RET 14, $noreg, implicit $d0
...
---
name: test_uitofp_s32
# CHECK-LABEL: name: test_uitofp_s32
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: $r0
%0(s32) = COPY $r0
%1(s32) = G_UITOFP %0
$s0 = COPY %1(s32)
BX_RET 14, $noreg, implicit $s0
...
---
name: test_uitofp_s64
# CHECK-LABEL: name: test_uitofp_s64
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: fprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
body: |
bb.0:
liveins: $r0
%0(s32) = COPY $r0
%1(s64) = G_UITOFP %0
$d0 = COPY %1(s64)
BX_RET 14, $noreg, implicit $d0
...
---
name: test_soft_fp_s64
# CHECK-LABEL: name: test_soft_fp_s64
legalized: true
regBankSelected: false
selected: false
# CHECK: registers:
# CHECK: - { id: 0, class: gprb, preferred-register: '' }
# CHECK: - { id: 1, class: gprb, preferred-register: '' }
# CHECK: - { id: 2, class: fprb, preferred-register: '' }
# CHECK: - { id: 3, class: gprb, preferred-register: '' }
# CHECK: - { id: 4, class: gprb, preferred-register: '' }
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
- { id: 3, class: _ }
- { id: 4, class: _ }
body: |
bb.0:
liveins: $r0, $r1
%0(s32) = COPY $r0
%1(s32) = COPY $r1
%2(s64) = G_MERGE_VALUES %0(s32), %1(s32)
%3(s32), %4(s32) = G_UNMERGE_VALUES %2(s64)
$r0 = COPY %3(s32)
$r1 = COPY %4(s32)
BX_RET 14, $noreg, implicit $r0, implicit $r1
...
---
name: test_dbg_value
# CHECK-LABEL: name: test_dbg_value
legalized: true
regBankSelected: false
selected: false
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
- { id: 3, class: _ }
- { id: 4, class: _ }
- { id: 5, class: _ }
body: |
bb.0:
liveins: $r0, $s1, $d2
%0(s32) = COPY $r0
; CHECK: {{%[0-9]+}}:gprb(s32) = G_ADD
%1(s32) = G_ADD %0, %0
; CHECK: DBG_VALUE {{%[0-9]+}}(s32), $noreg
DBG_VALUE %1(s32), $noreg, !7, !DIExpression(), debug-location !9
$r0 = COPY %1(s32)
%2(s32) = COPY $s1
; CHECK: {{%[0-9]+}}:fprb(s32) = G_FADD
%3(s32) = G_FADD %2, %2
; CHECK: DBG_VALUE {{%[0-9]+}}(s32), $noreg
DBG_VALUE %3(s32), $noreg, !7, !DIExpression(), debug-location !9
$s1 = COPY %3(s32)
%4(s64) = COPY $d2
; CHECK: {{%[0-9]+}}:fprb(s64) = G_FADD
%5(s64) = G_FADD %4, %4
; CHECK: DBG_VALUE {{%[0-9]+}}(s64), $noreg
DBG_VALUE %5(s64), $noreg, !7, !DIExpression(), debug-location !9
$d2 = COPY %5(s64)
; CHECK: DBG_VALUE i32 42, 0
DBG_VALUE i32 42, 0, !7, !DIExpression(), debug-location !9
; CHECK: DBG_VALUE float 1.000000e+00, 0
DBG_VALUE float 1.000000e+00, 0, !7, !DIExpression(), debug-location !9
; CHECK: DBG_VALUE $noreg, 0
DBG_VALUE $noreg, 0, !7, !DIExpression(), debug-location !9
$d2 = COPY %5(s64)
BX_RET 14, $noreg, implicit $r0, implicit $s1, implicit $d2
...