mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
3fa34396d2
Same as ARM. On this occasion we split some of the instruction select tests for more complicated instructions into their own files, so we can reuse them for ARM and Thumb mode. Likewise for the legalizer tests. llvm-svn: 352188
641 lines
16 KiB
YAML
641 lines
16 KiB
YAML
# RUN: llc -mtriple arm-- -run-pass=legalizer %s -o - | FileCheck %s
|
|
# RUN: llc -mtriple thumb-- -mattr=+v6t2 -run-pass=legalizer %s -o - | FileCheck %s
|
|
--- |
|
|
define void @test_add_s8() { ret void }
|
|
define void @test_add_s16() { ret void }
|
|
define void @test_add_s32() { ret void }
|
|
|
|
define void @test_sub_s8() { ret void }
|
|
define void @test_sub_s16() { ret void }
|
|
define void @test_sub_s32() { ret void }
|
|
|
|
define void @test_mul_s8() { ret void }
|
|
define void @test_mul_s16() { ret void }
|
|
define void @test_mul_s32() { ret void }
|
|
|
|
define void @test_and_s8() { ret void }
|
|
define void @test_and_s16() { ret void }
|
|
define void @test_and_s32() { ret void }
|
|
|
|
define void @test_or_s8() { ret void }
|
|
define void @test_or_s16() { ret void }
|
|
define void @test_or_s32() { ret void }
|
|
|
|
define void @test_xor_s8() { ret void }
|
|
define void @test_xor_s16() { 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 }
|
|
...
|
|
---
|
|
name: test_add_s8
|
|
# CHECK-LABEL: name: test_add_s8
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
registers:
|
|
- { id: 0, class: _ }
|
|
- { id: 1, class: _ }
|
|
- { id: 2, class: _ }
|
|
- { id: 3, class: _ }
|
|
- { id: 4, class: _ }
|
|
- { id: 5, class: _ }
|
|
body: |
|
|
bb.0:
|
|
liveins: $r0, $r1
|
|
|
|
%0(p0) = COPY $r0
|
|
%1(s8) = G_LOAD %0 :: (load 1)
|
|
%2(p0) = COPY $r0
|
|
%3(s8) = G_LOAD %2 :: (load 1)
|
|
%4(s8) = G_ADD %1, %3
|
|
; G_ADD with s8 should widen
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s8) = G_ADD {{%[0-9]+, %[0-9]+}}
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_ADD {{%[0-9]+, %[0-9]+}}
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s8) = G_ADD {{%[0-9]+, %[0-9]+}}
|
|
%5(s32) = G_SEXT %4(s8)
|
|
$r0 = COPY %5(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
...
|
|
---
|
|
name: test_add_s16
|
|
# CHECK-LABEL: name: test_add_s16
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
registers:
|
|
- { id: 0, class: _ }
|
|
- { id: 1, class: _ }
|
|
- { id: 2, class: _ }
|
|
- { id: 3, class: _ }
|
|
- { id: 4, class: _ }
|
|
- { id: 5, class: _ }
|
|
body: |
|
|
bb.0:
|
|
liveins: $r0, $r1
|
|
|
|
%0(p0) = COPY $r0
|
|
%1(s16) = G_LOAD %0 :: (load 2)
|
|
%2(p0) = COPY $r0
|
|
%3(s16) = G_LOAD %2 :: (load 2)
|
|
%4(s16) = G_ADD %1, %3
|
|
; G_ADD with s16 should widen
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s16) = G_ADD {{%[0-9]+, %[0-9]+}}
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_ADD {{%[0-9]+, %[0-9]+}}
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s16) = G_ADD {{%[0-9]+, %[0-9]+}}
|
|
%5(s32) = G_SEXT %4(s16)
|
|
$r0 = COPY %5(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
...
|
|
---
|
|
name: test_add_s32
|
|
# CHECK-LABEL: name: test_add_s32
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
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
|
|
; G_ADD with s32 is legal, so we should find it unchanged in the output
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_ADD {{%[0-9]+, %[0-9]+}}
|
|
$r0 = COPY %2(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
|
|
...
|
|
---
|
|
name: test_sub_s8
|
|
# CHECK-LABEL: name: test_sub_s8
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
registers:
|
|
- { id: 0, class: _ }
|
|
- { id: 1, class: _ }
|
|
- { id: 2, class: _ }
|
|
- { id: 3, class: _ }
|
|
- { id: 4, class: _ }
|
|
- { id: 5, class: _ }
|
|
body: |
|
|
bb.0:
|
|
liveins: $r0, $r1
|
|
|
|
%0(p0) = COPY $r0
|
|
%1(s8) = G_LOAD %0 :: (load 1)
|
|
%2(p0) = COPY $r0
|
|
%3(s8) = G_LOAD %2 :: (load 1)
|
|
%4(s8) = G_SUB %1, %3
|
|
; G_SUB with s8 should widen
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s8) = G_SUB {{%[0-9]+, %[0-9]+}}
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_SUB {{%[0-9]+, %[0-9]+}}
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s8) = G_SUB {{%[0-9]+, %[0-9]+}}
|
|
%5(s32) = G_SEXT %4(s8)
|
|
$r0 = COPY %5(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
...
|
|
---
|
|
name: test_sub_s16
|
|
# CHECK-LABEL: name: test_sub_s16
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
registers:
|
|
- { id: 0, class: _ }
|
|
- { id: 1, class: _ }
|
|
- { id: 2, class: _ }
|
|
- { id: 3, class: _ }
|
|
- { id: 4, class: _ }
|
|
- { id: 5, class: _ }
|
|
body: |
|
|
bb.0:
|
|
liveins: $r0, $r1
|
|
|
|
%0(p0) = COPY $r0
|
|
%1(s16) = G_LOAD %0 :: (load 2)
|
|
%2(p0) = COPY $r0
|
|
%3(s16) = G_LOAD %2 :: (load 2)
|
|
%4(s16) = G_SUB %1, %3
|
|
; G_SUB with s16 should widen
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s16) = G_SUB {{%[0-9]+, %[0-9]+}}
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_SUB {{%[0-9]+, %[0-9]+}}
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s16) = G_SUB {{%[0-9]+, %[0-9]+}}
|
|
%5(s32) = G_SEXT %4(s16)
|
|
$r0 = COPY %5(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
...
|
|
---
|
|
name: test_sub_s32
|
|
# CHECK-LABEL: name: test_sub_s32
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
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
|
|
; G_SUB with s32 is legal, so we should find it unchanged in the output
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_SUB {{%[0-9]+, %[0-9]+}}
|
|
$r0 = COPY %2(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
|
|
...
|
|
---
|
|
name: test_mul_s8
|
|
# CHECK-LABEL: name: test_mul_s8
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
registers:
|
|
- { id: 0, class: _ }
|
|
- { id: 1, class: _ }
|
|
- { id: 2, class: _ }
|
|
- { id: 3, class: _ }
|
|
- { id: 4, class: _ }
|
|
- { id: 5, class: _ }
|
|
body: |
|
|
bb.0:
|
|
liveins: $r0, $r1
|
|
|
|
%0(p0) = COPY $r0
|
|
%1(s8) = G_LOAD %0 :: (load 1)
|
|
%2(p0) = COPY $r0
|
|
%3(s8) = G_LOAD %2 :: (load 1)
|
|
%4(s8) = G_MUL %1, %3
|
|
; G_MUL with s8 should widen
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s8) = G_MUL {{%[0-9]+, %[0-9]+}}
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_MUL {{%[0-9]+, %[0-9]+}}
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s8) = G_MUL {{%[0-9]+, %[0-9]+}}
|
|
%5(s32) = G_SEXT %4(s8)
|
|
$r0 = COPY %5(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
...
|
|
---
|
|
name: test_mul_s16
|
|
# CHECK-LABEL: name: test_mul_s16
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
registers:
|
|
- { id: 0, class: _ }
|
|
- { id: 1, class: _ }
|
|
- { id: 2, class: _ }
|
|
- { id: 3, class: _ }
|
|
- { id: 4, class: _ }
|
|
- { id: 5, class: _ }
|
|
body: |
|
|
bb.0:
|
|
liveins: $r0, $r1
|
|
|
|
%0(p0) = COPY $r0
|
|
%1(s16) = G_LOAD %0 :: (load 2)
|
|
%2(p0) = COPY $r0
|
|
%3(s16) = G_LOAD %2 :: (load 2)
|
|
%4(s16) = G_MUL %1, %3
|
|
; G_MUL with s16 should widen
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s16) = G_MUL {{%[0-9]+, %[0-9]+}}
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_MUL {{%[0-9]+, %[0-9]+}}
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s16) = G_MUL {{%[0-9]+, %[0-9]+}}
|
|
%5(s32) = G_SEXT %4(s16)
|
|
$r0 = COPY %5(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
...
|
|
---
|
|
name: test_mul_s32
|
|
# CHECK-LABEL: name: test_mul_s32
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
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
|
|
; G_MUL with s32 is legal, so we should find it unchanged in the output
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_MUL {{%[0-9]+, %[0-9]+}}
|
|
$r0 = COPY %2(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
|
|
...
|
|
---
|
|
name: test_and_s8
|
|
# CHECK-LABEL: name: test_and_s8
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
registers:
|
|
- { id: 0, class: _ }
|
|
- { id: 1, class: _ }
|
|
- { id: 2, class: _ }
|
|
- { id: 3, class: _ }
|
|
- { id: 4, class: _ }
|
|
- { id: 5, class: _ }
|
|
body: |
|
|
bb.0:
|
|
liveins: $r0, $r1
|
|
|
|
%0(p0) = COPY $r0
|
|
%1(s8) = G_LOAD %0 :: (load 1)
|
|
%2(p0) = COPY $r0
|
|
%3(s8) = G_LOAD %2 :: (load 1)
|
|
%4(s8) = G_AND %1, %3
|
|
; G_AND with s8 should widen
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s8) = G_AND {{%[0-9]+, %[0-9]+}}
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_AND {{%[0-9]+, %[0-9]+}}
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s8) = G_AND {{%[0-9]+, %[0-9]+}}
|
|
%5(s32) = G_SEXT %4(s8)
|
|
$r0 = COPY %5(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
...
|
|
---
|
|
name: test_and_s16
|
|
# CHECK-LABEL: name: test_and_s16
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
registers:
|
|
- { id: 0, class: _ }
|
|
- { id: 1, class: _ }
|
|
- { id: 2, class: _ }
|
|
- { id: 3, class: _ }
|
|
- { id: 4, class: _ }
|
|
- { id: 5, class: _ }
|
|
body: |
|
|
bb.0:
|
|
liveins: $r0, $r1
|
|
|
|
%0(p0) = COPY $r0
|
|
%1(s16) = G_LOAD %0 :: (load 2)
|
|
%2(p0) = COPY $r0
|
|
%3(s16) = G_LOAD %2 :: (load 2)
|
|
%4(s16) = G_AND %1, %3
|
|
; G_AND with s16 should widen
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s16) = G_AND {{%[0-9]+, %[0-9]+}}
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_AND {{%[0-9]+, %[0-9]+}}
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s16) = G_AND {{%[0-9]+, %[0-9]+}}
|
|
%5(s32) = G_SEXT %4(s16)
|
|
$r0 = COPY %5(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
...
|
|
---
|
|
name: test_and_s32
|
|
# CHECK-LABEL: name: test_and_s32
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
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
|
|
; G_AND with s32 is legal, so we should find it unchanged in the output
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_AND {{%[0-9]+, %[0-9]+}}
|
|
$r0 = COPY %2(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
|
|
...
|
|
---
|
|
name: test_or_s8
|
|
# CHECK-LABEL: name: test_or_s8
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
registers:
|
|
- { id: 0, class: _ }
|
|
- { id: 1, class: _ }
|
|
- { id: 2, class: _ }
|
|
- { id: 3, class: _ }
|
|
- { id: 4, class: _ }
|
|
- { id: 5, class: _ }
|
|
body: |
|
|
bb.0:
|
|
liveins: $r0, $r1
|
|
|
|
%0(p0) = COPY $r0
|
|
%1(s8) = G_LOAD %0 :: (load 1)
|
|
%2(p0) = COPY $r0
|
|
%3(s8) = G_LOAD %2 :: (load 1)
|
|
%4(s8) = G_OR %1, %3
|
|
; G_OR with s8 should widen
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s8) = G_OR {{%[0-9]+, %[0-9]+}}
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_OR {{%[0-9]+, %[0-9]+}}
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s8) = G_OR {{%[0-9]+, %[0-9]+}}
|
|
%5(s32) = G_SEXT %4(s8)
|
|
$r0 = COPY %5(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
...
|
|
---
|
|
name: test_or_s16
|
|
# CHECK-LABEL: name: test_or_s16
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
registers:
|
|
- { id: 0, class: _ }
|
|
- { id: 1, class: _ }
|
|
- { id: 2, class: _ }
|
|
- { id: 3, class: _ }
|
|
- { id: 4, class: _ }
|
|
- { id: 5, class: _ }
|
|
body: |
|
|
bb.0:
|
|
liveins: $r0, $r1
|
|
|
|
%0(p0) = COPY $r0
|
|
%1(s16) = G_LOAD %0 :: (load 2)
|
|
%2(p0) = COPY $r0
|
|
%3(s16) = G_LOAD %2 :: (load 2)
|
|
%4(s16) = G_OR %1, %3
|
|
; G_OR with s16 should widen
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s16) = G_OR {{%[0-9]+, %[0-9]+}}
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_OR {{%[0-9]+, %[0-9]+}}
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s16) = G_OR {{%[0-9]+, %[0-9]+}}
|
|
%5(s32) = G_SEXT %4(s16)
|
|
$r0 = COPY %5(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
...
|
|
---
|
|
name: test_or_s32
|
|
# CHECK-LABEL: name: test_or_s32
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
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
|
|
; G_OR with s32 is legal, so we should find it unchanged in the output
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_OR {{%[0-9]+, %[0-9]+}}
|
|
$r0 = COPY %2(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
|
|
...
|
|
---
|
|
name: test_xor_s8
|
|
# CHECK-LABEL: name: test_xor_s8
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
registers:
|
|
- { id: 0, class: _ }
|
|
- { id: 1, class: _ }
|
|
- { id: 2, class: _ }
|
|
- { id: 3, class: _ }
|
|
- { id: 4, class: _ }
|
|
- { id: 5, class: _ }
|
|
body: |
|
|
bb.0:
|
|
liveins: $r0, $r1
|
|
|
|
%0(p0) = COPY $r0
|
|
%1(s8) = G_LOAD %0 :: (load 1)
|
|
%2(p0) = COPY $r0
|
|
%3(s8) = G_LOAD %2 :: (load 1)
|
|
%4(s8) = G_XOR %1, %3
|
|
; G_XOR with s8 should widen
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s8) = G_XOR {{%[0-9]+, %[0-9]+}}
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_XOR {{%[0-9]+, %[0-9]+}}
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s8) = G_XOR {{%[0-9]+, %[0-9]+}}
|
|
%5(s32) = G_SEXT %4(s8)
|
|
$r0 = COPY %5(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
...
|
|
---
|
|
name: test_xor_s16
|
|
# CHECK-LABEL: name: test_xor_s16
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
registers:
|
|
- { id: 0, class: _ }
|
|
- { id: 1, class: _ }
|
|
- { id: 2, class: _ }
|
|
- { id: 3, class: _ }
|
|
- { id: 4, class: _ }
|
|
- { id: 5, class: _ }
|
|
body: |
|
|
bb.0:
|
|
liveins: $r0, $r1
|
|
|
|
%0(p0) = COPY $r0
|
|
%1(s16) = G_LOAD %0 :: (load 2)
|
|
%2(p0) = COPY $r0
|
|
%3(s16) = G_LOAD %2 :: (load 2)
|
|
%4(s16) = G_XOR %1, %3
|
|
; G_XOR with s16 should widen
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s16) = G_XOR {{%[0-9]+, %[0-9]+}}
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_XOR {{%[0-9]+, %[0-9]+}}
|
|
; CHECK-NOT: {{%[0-9]+}}:_(s16) = G_XOR {{%[0-9]+, %[0-9]+}}
|
|
%5(s32) = G_SEXT %4(s16)
|
|
$r0 = COPY %5(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
...
|
|
---
|
|
name: test_xor_s32
|
|
# CHECK-LABEL: name: test_xor_s32
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
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
|
|
; G_XOR with s32 is legal, so we should find it unchanged in the output
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_XOR {{%[0-9]+, %[0-9]+}}
|
|
$r0 = COPY %2(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
|
|
...
|
|
---
|
|
name: test_lshr_s32
|
|
# CHECK-LABEL: name: test_lshr_s32
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
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
|
|
; G_LSHR with s32 is legal, so we should find it unchanged in the output
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_LSHR {{%[0-9]+, %[0-9]+}}
|
|
$r0 = COPY %2(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
|
|
...
|
|
---
|
|
name: test_ashr_s32
|
|
# CHECK-LABEL: name: test_ashr_s32
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
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
|
|
; G_ASHR with s32 is legal, so we should find it unchanged in the output
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_ASHR {{%[0-9]+, %[0-9]+}}
|
|
$r0 = COPY %2(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
|
|
...
|
|
---
|
|
name: test_shl_s32
|
|
# CHECK-LABEL: name: test_shl_s32
|
|
legalized: false
|
|
# CHECK: legalized: true
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
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
|
|
; G_SHL with s32 is legal, so we should find it unchanged in the output
|
|
; CHECK: {{%[0-9]+}}:_(s32) = G_SHL {{%[0-9]+, %[0-9]+}}
|
|
$r0 = COPY %2(s32)
|
|
BX_RET 14, $noreg, implicit $r0
|
|
|
|
...
|