157 lines
5 KiB
YAML
157 lines
5 KiB
YAML
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
|
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -run-pass=amdgpu-postlegalizer-combiner -verify-machineinstrs -o - %s | FileCheck %s
|
|
|
|
---
|
|
name: v2s16_trunc_same_bitcast_lshr16
|
|
tracksRegLiveness: true
|
|
legalized: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; CHECK-LABEL: name: v2s16_trunc_same_bitcast_lshr16
|
|
; CHECK: liveins: $vgpr0
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: %src:_(<2 x s16>) = COPY $vgpr0
|
|
; CHECK-NEXT: $vgpr0 = COPY %src(<2 x s16>)
|
|
%src:_(<2 x s16>) = COPY $vgpr0
|
|
%bitcast:_(s32) = G_BITCAST %src
|
|
%lshr_amount:_(s32) = G_CONSTANT i32 16
|
|
%lshr:_(s32) = G_LSHR %bitcast, %lshr_amount
|
|
%root:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC %bitcast, %lshr
|
|
$vgpr0 = COPY %root
|
|
...
|
|
|
|
---
|
|
name: v2s16_trunc_different_bitcast_lshr16
|
|
tracksRegLiveness: true
|
|
legalized: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; CHECK-LABEL: name: v2s16_trunc_different_bitcast_lshr16
|
|
; CHECK: liveins: $vgpr0
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: %src:_(<2 x s16>) = COPY $vgpr0
|
|
; CHECK-NEXT: $vgpr0 = COPY %src(<2 x s16>)
|
|
%src:_(<2 x s16>) = COPY $vgpr0
|
|
%bitcast0:_(s32) = G_BITCAST %src
|
|
%bitcast1:_(s32) = G_BITCAST %src
|
|
%lshr_amount:_(s32) = G_CONSTANT i32 16
|
|
%lshr:_(s32) = G_LSHR %bitcast1, %lshr_amount
|
|
%root:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC %bitcast0, %lshr
|
|
$vgpr0 = COPY %root
|
|
...
|
|
|
|
---
|
|
name: v2s16_trunc_same_bitcast_lshr8_nocombine
|
|
tracksRegLiveness: true
|
|
legalized: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; CHECK-LABEL: name: v2s16_trunc_same_bitcast_lshr8_nocombine
|
|
; CHECK: liveins: $vgpr0
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: %src:_(<2 x s16>) = COPY $vgpr0
|
|
; CHECK-NEXT: %bitcast:_(s32) = G_BITCAST %src(<2 x s16>)
|
|
; CHECK-NEXT: %lshr_amount:_(s32) = G_CONSTANT i32 8
|
|
; CHECK-NEXT: %lshr:_(s32) = G_LSHR %bitcast, %lshr_amount(s32)
|
|
; CHECK-NEXT: %root:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC %bitcast(s32), %lshr(s32)
|
|
; CHECK-NEXT: $vgpr0 = COPY %root(<2 x s16>)
|
|
%src:_(<2 x s16>) = COPY $vgpr0
|
|
%bitcast:_(s32) = G_BITCAST %src
|
|
%lshr_amount:_(s32) = G_CONSTANT i32 8
|
|
%lshr:_(s32) = G_LSHR %bitcast, %lshr_amount
|
|
%root:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC %bitcast, %lshr
|
|
$vgpr0 = COPY %root
|
|
...
|
|
|
|
---
|
|
name: v2s16_same_bitcast_lshr16
|
|
tracksRegLiveness: true
|
|
legalized: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; CHECK-LABEL: name: v2s16_same_bitcast_lshr16
|
|
; CHECK: liveins: $vgpr0
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: %src:_(<2 x s16>) = COPY $vgpr0
|
|
; CHECK-NEXT: $vgpr0 = COPY %src(<2 x s16>)
|
|
%src:_(<2 x s16>) = COPY $vgpr0
|
|
%bitcast:_(s32) = G_BITCAST %src
|
|
%lshr_amount:_(s32) = G_CONSTANT i32 16
|
|
%lshr:_(s32) = G_LSHR %bitcast, %lshr_amount
|
|
%trunclo:_(s16) = G_TRUNC %bitcast
|
|
%trunchi:_(s16) = G_TRUNC %lshr
|
|
%root:_(<2 x s16>) = G_BUILD_VECTOR %trunclo, %trunchi
|
|
$vgpr0 = COPY %root
|
|
...
|
|
|
|
---
|
|
name: v2s16_same_bitcast_lshr8_nocombine
|
|
tracksRegLiveness: true
|
|
legalized: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; CHECK-LABEL: name: v2s16_same_bitcast_lshr8_nocombine
|
|
; CHECK: liveins: $vgpr0
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: %src:_(<2 x s16>) = COPY $vgpr0
|
|
; CHECK-NEXT: %bitcast:_(s32) = G_BITCAST %src(<2 x s16>)
|
|
; CHECK-NEXT: %lshr_amount:_(s32) = G_CONSTANT i32 8
|
|
; CHECK-NEXT: %lshr:_(s32) = G_LSHR %bitcast, %lshr_amount(s32)
|
|
; CHECK-NEXT: %trunclo:_(s16) = G_TRUNC %bitcast(s32)
|
|
; CHECK-NEXT: %trunchi:_(s16) = G_TRUNC %lshr(s32)
|
|
; CHECK-NEXT: %root:_(<2 x s16>) = G_BUILD_VECTOR %trunclo(s16), %trunchi(s16)
|
|
; CHECK-NEXT: $vgpr0 = COPY %root(<2 x s16>)
|
|
%src:_(<2 x s16>) = COPY $vgpr0
|
|
%bitcast:_(s32) = G_BITCAST %src
|
|
%lshr_amount:_(s32) = G_CONSTANT i32 8
|
|
%lshr:_(s32) = G_LSHR %bitcast, %lshr_amount
|
|
%trunclo:_(s16) = G_TRUNC %bitcast
|
|
%trunchi:_(s16) = G_TRUNC %lshr
|
|
%root:_(<2 x s16>) = G_BUILD_VECTOR %trunclo, %trunchi
|
|
$vgpr0 = COPY %root
|
|
...
|
|
|
|
---
|
|
name: v2s16_undefhi
|
|
tracksRegLiveness: true
|
|
legalized: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; CHECK-LABEL: name: v2s16_undefhi
|
|
; CHECK: liveins: $vgpr0
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: %src:_(<2 x s16>) = COPY $vgpr0
|
|
; CHECK-NEXT: $vgpr0 = COPY %src(<2 x s16>)
|
|
%src:_(<2 x s16>) = COPY $vgpr0
|
|
%bitcast:_(s32) = G_BITCAST %src
|
|
%trunc:_(s16) = G_TRUNC %bitcast
|
|
%undef:_(s16) = G_IMPLICIT_DEF
|
|
%root:_(<2 x s16>) = G_BUILD_VECTOR %trunc, %undef
|
|
$vgpr0 = COPY %root
|
|
...
|
|
|
|
---
|
|
name: v2s32_undefhi
|
|
tracksRegLiveness: true
|
|
legalized: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0_vgpr1
|
|
; CHECK-LABEL: name: v2s32_undefhi
|
|
; CHECK: liveins: $vgpr0_vgpr1
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: %src:_(<2 x s32>) = COPY $vgpr0_vgpr1
|
|
; CHECK-NEXT: $vgpr0_vgpr1 = COPY %src(<2 x s32>)
|
|
%src:_(<2 x s32>) = COPY $vgpr0_vgpr1
|
|
%bitcast:_(s64) = G_BITCAST %src
|
|
%trunc:_(s32) = G_TRUNC %bitcast
|
|
%undef:_(s32) = G_IMPLICIT_DEF
|
|
%root:_(<2 x s32>) = G_BUILD_VECTOR %trunc, %undef
|
|
$vgpr0_vgpr1 = COPY %root
|
|
...
|