blob: 7ff593f18adc96bdfd4279ee7d578b080a3a7ddf [file]
# NOTE: Assertions have been autogenerated by utils/update_givaluetracking_test_checks.py UTC_ARGS: --version 6
# RUN: llc -mtriple aarch64 -passes="print<gisel-value-tracking>" %s -filetype=null 2>&1 | FileCheck %s
---
name: all_knownbits_const_idx
body: |
bb.0:
; CHECK-LABEL: name: @all_knownbits_const_idx
; CHECK-NEXT: %0:_ KnownBits:00000011 SignBits:6
; CHECK-NEXT: %1:_ KnownBits:00001010 SignBits:4
; CHECK-NEXT: %2:_ KnownBits:0000?01? SignBits:4
; CHECK-NEXT: %idx:_ KnownBits:0000000000000000000000000000000000000000000000000000000000000001 SignBits:63
; CHECK-NEXT: %4:_ KnownBits:00001010 SignBits:4
%0:_(i8) = G_CONSTANT i8 3
%1:_(i8) = G_CONSTANT i8 10
%2:_(<2 x i8>) = G_BUILD_VECTOR %0, %1
%idx:_(i64) = G_CONSTANT i64 1
%3:_(i8) = G_EXTRACT_VECTOR_ELT %2, %idx
...
---
name: all_knownbits
body: |
bb.0:
; CHECK-LABEL: name: @all_knownbits
; CHECK-NEXT: %0:_ KnownBits:00000011 SignBits:6
; CHECK-NEXT: %1:_ KnownBits:00001010 SignBits:4
; CHECK-NEXT: %2:_ KnownBits:0000?01? SignBits:4
; CHECK-NEXT: %idx:_ KnownBits:???????????????????????????????????????????????????????????????? SignBits:1
; CHECK-NEXT: %4:_ KnownBits:0000?01? SignBits:4
%0:_(i8) = G_CONSTANT i8 3
%1:_(i8) = G_CONSTANT i8 10
%2:_(<2 x i8>) = G_BUILD_VECTOR %0, %1
%idx:_(i64) = COPY $d0
%3:_(i8) = G_EXTRACT_VECTOR_ELT %2, %idx
...
---
name: no_knownbits_const_idx
body: |
bb.0:
; CHECK-LABEL: name: @no_knownbits_const_idx
; CHECK-NEXT: %0:_ KnownBits:???????? SignBits:1
; CHECK-NEXT: %idx:_ KnownBits:0000000000000000000000000000000000000000000000000000000000000001 SignBits:63
; CHECK-NEXT: %2:_ KnownBits:???????? SignBits:1
%0:_(<2 x i8>) = COPY $h0
%idx:_(i64) = G_CONSTANT i64 1
%1:_(i8) = G_EXTRACT_VECTOR_ELT %0, %idx
...
---
name: no_knownbits
body: |
bb.0:
; CHECK-LABEL: name: @no_knownbits
; CHECK-NEXT: %0:_ KnownBits:???????? SignBits:1
; CHECK-NEXT: %idx:_ KnownBits:???????????????????????????????????????????????????????????????? SignBits:1
; CHECK-NEXT: %2:_ KnownBits:???????? SignBits:1
%0:_(<2 x i8>) = COPY $h0
%idx:_(i64) = COPY $d1
%1:_(i8) = G_EXTRACT_VECTOR_ELT %0, %idx
...
---
name: zext_const_idx
body: |
bb.0:
; CHECK-LABEL: name: @zext_const_idx
; CHECK-NEXT: %0:_ KnownBits:???????? SignBits:1
; CHECK-NEXT: %zext0:_ KnownBits:00000000???????? SignBits:8
; CHECK-NEXT: %idx:_ KnownBits:0000000000000000000000000000000000000000000000000000000000000001 SignBits:63
; CHECK-NEXT: %3:_ KnownBits:00000000???????? SignBits:8
%0:_(<2 x i8>) = COPY $h0
%zext0:_(<2 x i16>) = G_ZEXT %0
%idx:_(i64) = G_CONSTANT i64 1
%1:_(i16) = G_EXTRACT_VECTOR_ELT %zext0, %idx
...
---
name: zext
body: |
bb.0:
; CHECK-LABEL: name: @zext
; CHECK-NEXT: %0:_ KnownBits:???????? SignBits:1
; CHECK-NEXT: %zext0:_ KnownBits:00000000???????? SignBits:8
; CHECK-NEXT: %idx:_ KnownBits:???????????????????????????????????????????????????????????????? SignBits:1
; CHECK-NEXT: %3:_ KnownBits:00000000???????? SignBits:8
%0:_(<2 x i8>) = COPY $h0
%zext0:_(<2 x i16>) = G_ZEXT %0
%idx:_(i64) = COPY $d1
%1:_(i16) = G_EXTRACT_VECTOR_ELT %zext0, %idx
...
---
name: sext_const_idx
body: |
bb.0:
; CHECK-LABEL: name: @sext_const_idx
; CHECK-NEXT: %0:_ KnownBits:???????? SignBits:1
; CHECK-NEXT: %sext0:_ KnownBits:???????????????? SignBits:9
; CHECK-NEXT: %idx:_ KnownBits:0000000000000000000000000000000000000000000000000000000000000001 SignBits:63
; CHECK-NEXT: %3:_ KnownBits:???????????????? SignBits:1
%0:_(<2 x i8>) = COPY $h0
%sext0:_(<2 x i16>) = G_SEXT %0
%idx:_(i64) = G_CONSTANT i64 1
%1:_(i16) = G_EXTRACT_VECTOR_ELT %sext0, %idx
...
---
name: sext
body: |
bb.0:
; CHECK-LABEL: name: @sext
; CHECK-NEXT: %0:_ KnownBits:???????? SignBits:1
; CHECK-NEXT: %sext0:_ KnownBits:???????????????? SignBits:9
; CHECK-NEXT: %idx:_ KnownBits:???????????????????????????????????????????????????????????????? SignBits:1
; CHECK-NEXT: %3:_ KnownBits:???????????????? SignBits:1
%0:_(<2 x i8>) = COPY $h0
%sext0:_(<2 x i16>) = G_SEXT %0
%idx:_(i64) = COPY $d1
%1:_(i16) = G_EXTRACT_VECTOR_ELT %sext0, %idx
...
---
# Verifies known bit computation bails if return type differs from vector
# element type. Without bailing, the 8 lowest bits of %4 would be known.
name: bail_on_different_return_type
body: |
bb.0:
; CHECK-LABEL: name: @bail_on_different_return_type
; CHECK-NEXT: %0:_ KnownBits:00000011 SignBits:6
; CHECK-NEXT: %1:_ KnownBits:00001010 SignBits:4
; CHECK-NEXT: %2:_ KnownBits:0000?01? SignBits:4
; CHECK-NEXT: %idx:_ KnownBits:0000000000000000000000000000000000000000000000000000000000000001 SignBits:63
; CHECK-NEXT: %4:_ KnownBits:???????????????? SignBits:1
%0:_(i8) = G_CONSTANT i8 3
%1:_(i8) = G_CONSTANT i8 10
%2:_(<2 x i8>) = G_BUILD_VECTOR %0, %1
%idx:_(i64) = G_CONSTANT i64 1
%3:_(i16) = G_EXTRACT_VECTOR_ELT %2, %idx