blob: 77d30f6fa522376134a1f9dd46d876140c2c3c16 [file] [log] [blame] [edit]
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=amdgcn -run-pass=amdgpu-regbank-combiner %s -o - | FileCheck %s
---
name: lshr_zext_i16
tracksRegLiveness: true
body: |
bb.0:
liveins: $sgpr0, $sgpr1
; CHECK-LABEL: name: lshr_zext_i16
; CHECK: liveins: $sgpr0, $sgpr1
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: %src:sgpr(s32) = COPY $sgpr0
; CHECK-NEXT: %regamt:sgpr(s32) = COPY $sgpr1
; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535
; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND %regamt, [[C]]
; CHECK-NEXT: %res:sgpr(s32) = G_LSHR %src, [[AND]](s32)
; CHECK-NEXT: $sgpr0 = COPY %res(s32)
%src:sgpr(s32) = COPY $sgpr0
%regamt:sgpr(s32) = COPY $sgpr1
%amt:sgpr(s16) = G_TRUNC %regamt
%zextamt:sgpr(s32) = G_ZEXT %amt
%res:sgpr(s32) = G_LSHR %src, %zextamt
$sgpr0 = COPY %res
...
---
name: ashr_zext_i16
tracksRegLiveness: true
body: |
bb.0:
liveins: $sgpr0, $sgpr1
; CHECK-LABEL: name: ashr_zext_i16
; CHECK: liveins: $sgpr0, $sgpr1
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: %src:sgpr(s32) = COPY $sgpr0
; CHECK-NEXT: %regamt:sgpr(s32) = COPY $sgpr1
; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535
; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND %regamt, [[C]]
; CHECK-NEXT: %res:sgpr(s32) = G_ASHR %src, [[AND]](s32)
; CHECK-NEXT: $sgpr0 = COPY %res(s32)
%src:sgpr(s32) = COPY $sgpr0
%regamt:sgpr(s32) = COPY $sgpr1
%amt:sgpr(s16) = G_TRUNC %regamt
%zextamt:sgpr(s32) = G_ZEXT %amt
%res:sgpr(s32) = G_ASHR %src, %zextamt
$sgpr0 = COPY %res
...
---
name: shl_zext_i16
tracksRegLiveness: true
body: |
bb.0:
liveins: $sgpr0, $sgpr1
; CHECK-LABEL: name: shl_zext_i16
; CHECK: liveins: $sgpr0, $sgpr1
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: %src:sgpr(s32) = COPY $sgpr0
; CHECK-NEXT: %regamt:sgpr(s32) = COPY $sgpr1
; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535
; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND %regamt, [[C]]
; CHECK-NEXT: %res:sgpr(s32) = G_SHL %src, [[AND]](s32)
; CHECK-NEXT: $sgpr0 = COPY %res(s32)
%src:sgpr(s32) = COPY $sgpr0
%regamt:sgpr(s32) = COPY $sgpr1
%amt:sgpr(s16) = G_TRUNC %regamt
%zextamt:sgpr(s32) = G_ZEXT %amt
%res:sgpr(s32) = G_SHL %src, %zextamt
$sgpr0 = COPY %res
...
---
name: lshr_zext_i8
tracksRegLiveness: true
body: |
bb.0:
liveins: $sgpr0, $sgpr1
; CHECK-LABEL: name: lshr_zext_i8
; CHECK: liveins: $sgpr0, $sgpr1
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: %src:sgpr(s32) = COPY $sgpr0
; CHECK-NEXT: %regamt:sgpr(s32) = COPY $sgpr1
; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 255
; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND %regamt, [[C]]
; CHECK-NEXT: %res:sgpr(s32) = G_LSHR %src, [[AND]](s32)
; CHECK-NEXT: $sgpr0 = COPY %res(s32)
%src:sgpr(s32) = COPY $sgpr0
%regamt:sgpr(s32) = COPY $sgpr1
%amt:sgpr(s8) = G_TRUNC %regamt
%zextamt:sgpr(s32) = G_ZEXT %amt
%res:sgpr(s32) = G_LSHR %src, %zextamt
$sgpr0 = COPY %res
...
---
name: ashr_zext_i8
tracksRegLiveness: true
body: |
bb.0:
liveins: $sgpr0, $sgpr1
; CHECK-LABEL: name: ashr_zext_i8
; CHECK: liveins: $sgpr0, $sgpr1
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: %src:sgpr(s32) = COPY $sgpr0
; CHECK-NEXT: %regamt:sgpr(s32) = COPY $sgpr1
; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 255
; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND %regamt, [[C]]
; CHECK-NEXT: %res:sgpr(s32) = G_ASHR %src, [[AND]](s32)
; CHECK-NEXT: $sgpr0 = COPY %res(s32)
%src:sgpr(s32) = COPY $sgpr0
%regamt:sgpr(s32) = COPY $sgpr1
%amt:sgpr(s8) = G_TRUNC %regamt
%zextamt:sgpr(s32) = G_ZEXT %amt
%res:sgpr(s32) = G_ASHR %src, %zextamt
$sgpr0 = COPY %res
...
---
name: shl_zext_i8
tracksRegLiveness: true
body: |
bb.0:
liveins: $sgpr0, $sgpr1
; CHECK-LABEL: name: shl_zext_i8
; CHECK: liveins: $sgpr0, $sgpr1
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: %src:sgpr(s32) = COPY $sgpr0
; CHECK-NEXT: %regamt:sgpr(s32) = COPY $sgpr1
; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 255
; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND %regamt, [[C]]
; CHECK-NEXT: %res:sgpr(s32) = G_SHL %src, [[AND]](s32)
; CHECK-NEXT: $sgpr0 = COPY %res(s32)
%src:sgpr(s32) = COPY $sgpr0
%regamt:sgpr(s32) = COPY $sgpr1
%amt:sgpr(s8) = G_TRUNC %regamt
%zextamt:sgpr(s32) = G_ZEXT %amt
%res:sgpr(s32) = G_SHL %src, %zextamt
$sgpr0 = COPY %res
...