# NOTE: Assertions have been autogenerated by utils/update_givaluetracking_test_checks.py UTC_ARGS: --version 6 # RUN: llc -mtriple aarch64 -passes="print" %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:_(s8) = G_CONSTANT i8 3 %1:_(s8) = G_CONSTANT i8 10 %2:_(<2 x s8>) = G_BUILD_VECTOR %0, %1 %idx:_(s64) = G_CONSTANT i64 1 %3:_(s8) = 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:_(s8) = G_CONSTANT i8 3 %1:_(s8) = G_CONSTANT i8 10 %2:_(<2 x s8>) = G_BUILD_VECTOR %0, %1 %idx:_(s64) = COPY $d0 %3:_(s8) = 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 s8>) = COPY $h0 %idx:_(s64) = G_CONSTANT i64 1 %1:_(s8) = 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 s8>) = COPY $h0 %idx:_(s64) = COPY $d1 %1:_(s8) = 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 s8>) = COPY $h0 %zext0:_(<2 x s16>) = G_ZEXT %0 %idx:_(s64) = G_CONSTANT i64 1 %1:_(s16) = 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 s8>) = COPY $h0 %zext0:_(<2 x s16>) = G_ZEXT %0 %idx:_(s64) = COPY $d1 %1:_(s16) = 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 s8>) = COPY $h0 %sext0:_(<2 x s16>) = G_SEXT %0 %idx:_(s64) = G_CONSTANT i64 1 %1:_(s16) = 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 s8>) = COPY $h0 %sext0:_(<2 x s16>) = G_SEXT %0 %idx:_(s64) = COPY $d1 %1:_(s16) = 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:_(s8) = G_CONSTANT i8 3 %1:_(s8) = G_CONSTANT i8 10 %2:_(<2 x s8>) = G_BUILD_VECTOR %0, %1 %idx:_(s64) = G_CONSTANT i64 1 %3:_(s16) = G_EXTRACT_VECTOR_ELT %2, %idx