254 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_givaluetracking_test_checks.py UTC_ARGS: --version 52# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -passes='print<gisel-value-tracking>' %s -filetype=null 2>&1 | FileCheck %s3 4---5name: test_s_bfe_u32_constants6body: |7 bb.0:8 ; Extract [12:16)9 ; CHECK-LABEL: name: @test_s_bfe_u32_constants10 ; CHECK-NEXT: %cst:sgpr_32 KnownBits:00000000000000001111111111111111 SignBits:1611 ; CHECK-NEXT: %bfe:sgpr_32 KnownBits:00000000000000000000000000001111 SignBits:2812 %cst:sgpr_32(s32) = G_CONSTANT i32 6553513 %bfe:sgpr_32(s32) = S_BFE_U32 %cst, 262156, implicit-def $scc14 $sgpr0 = COPY %bfe15...16---17name: test_s_bfe_i32_constants18body: |19 bb.0:20 ; Extract [12:16)21 ; CHECK-LABEL: name: @test_s_bfe_i32_constants22 ; CHECK-NEXT: %cst:sgpr_32 KnownBits:00000000000000001111111111111111 SignBits:1623 ; CHECK-NEXT: %bfe:sgpr_32 KnownBits:11111111111111111111111111111111 SignBits:3224 %cst:sgpr_32(s32) = G_CONSTANT i32 6553525 %bfe:sgpr_32(s32) = S_BFE_I32 %cst, 262156, implicit-def $scc26 $sgpr0 = COPY %bfe27...28---29name: test_s_bfe_u64_constants30body: |31 bb.0:32 ; Extract [12:16)33 ; CHECK-LABEL: name: @test_s_bfe_u64_constants34 ; CHECK-NEXT: %cst:sgpr_64 KnownBits:0000000000000000000000000000000000000000000000001111111111111111 SignBits:4835 ; CHECK-NEXT: %bfe:sgpr_64 KnownBits:0000000000000000000000000000000000000000000000000000000000001111 SignBits:6036 %cst:sgpr_64(s64) = G_CONSTANT i64 6553537 %bfe:sgpr_64(s64) = S_BFE_U64 %cst, 262156, implicit-def $scc38 $sgpr0_sgpr1 = COPY %bfe39...40---41name: test_s_bfe_i64_constants42body: |43 bb.0:44 ; Extract [12:16)45 ; CHECK-LABEL: name: @test_s_bfe_i64_constants46 ; CHECK-NEXT: %cst:sgpr_64 KnownBits:0000000000000000000000000000000000000000000000001111111111111111 SignBits:4847 ; CHECK-NEXT: %bfe:sgpr_64 KnownBits:1111111111111111111111111111111111111111111111111111111111111111 SignBits:6448 %cst:sgpr_64(s64) = G_CONSTANT i64 6553549 %bfe:sgpr_64(s64) = S_BFE_I64 %cst, 262156, implicit-def $scc50 $sgpr0_sgpr1 = COPY %bfe51...52---53name: test_s_bfe_u32_middle_bits_unknown54body: |55 bb.0:56 ; Extract [8:16) but the middle 4 bits are ????57 liveins: $sgpr058 59 ; CHECK-LABEL: name: @test_s_bfe_u32_middle_bits_unknown60 ; CHECK-NEXT: %input:sgpr_32 KnownBits:???????????????????????????????? SignBits:161 ; CHECK-NEXT: %cst:sgpr_32 KnownBits:00000000000000001100001111111111 SignBits:1662 ; CHECK-NEXT: %mask:sgpr_32 KnownBits:00000000000000000011110000000000 SignBits:1863 ; CHECK-NEXT: %masked_input:sgpr_32 KnownBits:000000000000000000????0000000000 SignBits:1864 ; CHECK-NEXT: %merged:sgpr_32 KnownBits:000000000000000011????1111111111 SignBits:1665 ; CHECK-NEXT: %bfe:sgpr_32 KnownBits:00000000000000000000000011????11 SignBits:2466 %input:sgpr_32(s32) = COPY $sgpr067 %cst:sgpr_32(s32) = G_CONSTANT i32 5017568 %mask:sgpr_32(s32) = G_CONSTANT i32 1536069 %masked_input:sgpr_32(s32) = G_AND %input, %mask70 %merged:sgpr_32(s32) = G_OR %masked_input, %cst71 %bfe:sgpr_32(s32) = S_BFE_U32 %merged, 524296, implicit-def $scc72 $sgpr0 = COPY %bfe73...74---75name: test_s_bfe_i32_middle_bits_unknown76body: |77 bb.0:78 ; Extract [8:16) but the middle 4 bits are ????79 liveins: $sgpr080 81 ; CHECK-LABEL: name: @test_s_bfe_i32_middle_bits_unknown82 ; CHECK-NEXT: %input:sgpr_32 KnownBits:???????????????????????????????? SignBits:183 ; CHECK-NEXT: %cst:sgpr_32 KnownBits:00000000000000001100001111111111 SignBits:1684 ; CHECK-NEXT: %mask:sgpr_32 KnownBits:00000000000000000011110000000000 SignBits:1885 ; CHECK-NEXT: %masked_input:sgpr_32 KnownBits:000000000000000000????0000000000 SignBits:1886 ; CHECK-NEXT: %merged:sgpr_32 KnownBits:000000000000000011????1111111111 SignBits:1687 ; CHECK-NEXT: %bfe:sgpr_32 KnownBits:11111111111111111111111111????11 SignBits:2688 %input:sgpr_32(s32) = COPY $sgpr089 %cst:sgpr_32(s32) = G_CONSTANT i32 5017590 %mask:sgpr_32(s32) = G_CONSTANT i32 1536091 %masked_input:sgpr_32(s32) = G_AND %input, %mask92 %merged:sgpr_32(s32) = G_OR %masked_input, %cst93 %bfe:sgpr_32(s32) = S_BFE_I32 %merged, 524296, implicit-def $scc94 $sgpr0 = COPY %bfe95...96---97name: test_s_bfe_u64_middle_bits_unknown98body: |99 bb.0:100 ; Extract [8:16) but the middle 4 bits are ????101 liveins: $sgpr0_sgpr1102 103 ; CHECK-LABEL: name: @test_s_bfe_u64_middle_bits_unknown104 ; CHECK-NEXT: %input:sgpr_64 KnownBits:???????????????????????????????????????????????????????????????? SignBits:1105 ; CHECK-NEXT: %cst:sgpr_64 KnownBits:0000000000000000000000000000000000000000000000001100001111111111 SignBits:48106 ; CHECK-NEXT: %mask:sgpr_64 KnownBits:0000000000000000000000000000000000000000000000000011110000000000 SignBits:50107 ; CHECK-NEXT: %masked_input:sgpr_64 KnownBits:00000000000000000000000000000000000000000000000000????0000000000 SignBits:50108 ; CHECK-NEXT: %merged:sgpr_64 KnownBits:00000000000000000000000000000000000000000000000011????1111111111 SignBits:48109 ; CHECK-NEXT: %bfe:sgpr_64 KnownBits:0000000000000000000000000000000000000000000000000000000011????11 SignBits:56110 %input:sgpr_64(s64) = COPY $sgpr0_sgpr1111 %cst:sgpr_64(s64) = G_CONSTANT i64 50175112 %mask:sgpr_64(s64) = G_CONSTANT i64 15360113 %masked_input:sgpr_64(s64) = G_AND %input, %mask114 %merged:sgpr_64(s64) = G_OR %masked_input, %cst115 %bfe:sgpr_64(s64) = S_BFE_U64 %merged, 524296, implicit-def $scc116 $sgpr0_sgpr1 = COPY %bfe117...118---119name: test_s_bfe_i64_middle_bits_unknown120body: |121 bb.0:122 ; Extract [8:16) but the middle 4 bits are ????123 liveins: $sgpr0_sgpr1124 125 ; CHECK-LABEL: name: @test_s_bfe_i64_middle_bits_unknown126 ; CHECK-NEXT: %input:sgpr_64 KnownBits:???????????????????????????????????????????????????????????????? SignBits:1127 ; CHECK-NEXT: %cst:sgpr_64 KnownBits:0000000000000000000000000000000000000000000000001100001111111111 SignBits:48128 ; CHECK-NEXT: %mask:sgpr_64 KnownBits:0000000000000000000000000000000000000000000000000011110000000000 SignBits:50129 ; CHECK-NEXT: %masked_input:sgpr_64 KnownBits:00000000000000000000000000000000000000000000000000????0000000000 SignBits:50130 ; CHECK-NEXT: %merged:sgpr_64 KnownBits:00000000000000000000000000000000000000000000000011????1111111111 SignBits:48131 ; CHECK-NEXT: %bfe:sgpr_64 KnownBits:1111111111111111111111111111111111111111111111111111111111????11 SignBits:58132 %input:sgpr_64(s64) = COPY $sgpr0_sgpr1133 %cst:sgpr_64(s64) = G_CONSTANT i64 50175134 %mask:sgpr_64(s64) = G_CONSTANT i64 15360135 %masked_input:sgpr_64(s64) = G_AND %input, %mask136 %merged:sgpr_64(s64) = G_OR %masked_input, %cst137 %bfe:sgpr_64(s64) = S_BFE_I64 %merged, 524296, implicit-def $scc138 $sgpr0_sgpr1 = COPY %bfe139...140---141name: test_s_bfe_i32_g_constants142body: |143 bb.0:144 ; Extract [12:16)145 ; CHECK-LABEL: name: @test_s_bfe_i32_g_constants146 ; CHECK-NEXT: %src0:sgpr_32 KnownBits:00000000000000001111111111111111 SignBits:16147 ; CHECK-NEXT: %src1:sgpr_32 KnownBits:00000000000001000000000000001100 SignBits:13148 ; CHECK-NEXT: %bfe:sgpr_32 KnownBits:11111111111111111111111111111111 SignBits:32149 %src0:sgpr_32(s32) = G_CONSTANT i32 65535150 %src1:sgpr_32(s32) = G_CONSTANT i32 262156151 %bfe:sgpr_32(s32) = S_BFE_I32 %src0, %src1, implicit-def $scc152 $sgpr0 = COPY %bfe153...154---155name: test_s_bfe_u64_g_constants156body: |157 bb.0:158 ; Extract [12:16)159 ; CHECK-LABEL: name: @test_s_bfe_u64_g_constants160 ; CHECK-NEXT: %src0:sgpr_64 KnownBits:0000000000000000000000000000000000000000000000001111111111111111 SignBits:48161 ; CHECK-NEXT: %src1:sgpr_32 KnownBits:00000000000001000000000000001100 SignBits:13162 ; CHECK-NEXT: %bfe:sgpr_64 KnownBits:0000000000000000000000000000000000000000000000000000000000001111 SignBits:60163 %src0:sgpr_64(s64) = G_CONSTANT i64 65535164 %src1:sgpr_32(s32) = G_CONSTANT i32 262156165 %bfe:sgpr_64(s64) = S_BFE_U64 %src0, %src1, implicit-def $scc166 $sgpr0_sgpr1 = COPY %bfe167...168---169name: test_s_bfe_i32_g_constants_lookthrough170body: |171 bb.0:172 ; Extract [12:16)173 ; CHECK-LABEL: name: @test_s_bfe_i32_g_constants_lookthrough174 ; CHECK-NEXT: %src0:sgpr_32 KnownBits:00000000000000001111111111111111 SignBits:16175 ; CHECK-NEXT: %src1:sgpr_32 KnownBits:000001000000000000001100 SignBits:5176 ; CHECK-NEXT: %src1_ext:sgpr_32 KnownBits:00000000000001000000000000001100 SignBits:13177 ; CHECK-NEXT: %bfe:sgpr_32 KnownBits:11111111111111111111111111111111 SignBits:32178 %src0:sgpr_32(s32) = G_CONSTANT i32 65535179 %src1:sgpr_32(s24) = G_CONSTANT i24 262156180 %src1_ext:sgpr_32(s32) = G_ZEXT %src1181 %bfe:sgpr_32(s32) = S_BFE_I32 %src0, %src1_ext, implicit-def $scc182 $sgpr0 = COPY %bfe183...184---185name: test_s_bfe_u64_g_constants_lookthrough186body: |187 bb.0:188 ; Extract [12:16)189 ; CHECK-LABEL: name: @test_s_bfe_u64_g_constants_lookthrough190 ; CHECK-NEXT: %src0:sgpr_64 KnownBits:0000000000000000000000000000000000000000000000001111111111111111 SignBits:48191 ; CHECK-NEXT: %src1:sgpr_32 KnownBits:000001000000000000001100 SignBits:5192 ; CHECK-NEXT: %src1_ext:sgpr_32 KnownBits:00000000000001000000000000001100 SignBits:13193 ; CHECK-NEXT: %bfe:sgpr_64 KnownBits:0000000000000000000000000000000000000000000000000000000000001111 SignBits:60194 %src0:sgpr_64(s64) = G_CONSTANT i64 65535195 %src1:sgpr_32(s24) = G_CONSTANT i24 262156196 %src1_ext:sgpr_32(s32) = G_ZEXT %src1197 %bfe:sgpr_64(s64) = S_BFE_U64 %src0, %src1, implicit-def $scc198 $sgpr0_sgpr1 = COPY %bfe199...200---201name: test_s_bfe_u32_trash_bits202body: |203 bb.0:204 ; Extract [12:16)205 ; Check that the 6th bit is ignored for u32. The lower 6 bits are206 ; 101100 but we should mask out the first 1 for the 32 bit version.207 ; CHECK-LABEL: name: @test_s_bfe_u32_trash_bits208 ; CHECK-NEXT: %cst:sgpr_32 KnownBits:00000000000000001111111111111111 SignBits:16209 ; CHECK-NEXT: %bfe:sgpr_32 KnownBits:00000000000000000000000000001111 SignBits:28210 %cst:sgpr_32(s32) = G_CONSTANT i32 65535211 %bfe:sgpr_32(s32) = S_BFE_U32 %cst, 262252, implicit-def $scc212 $sgpr0 = COPY %bfe213...214---215name: test_s_bfe_i32_trash_bits216body: |217 bb.0:218 ; Extract [12:16)219 ; Check that the 6th bit is ignored for i32. The lower 6 bits are220 ; 101100 but we should mask out the first 1 for the 32 bit version.221 ; CHECK-LABEL: name: @test_s_bfe_i32_trash_bits222 ; CHECK-NEXT: %cst:sgpr_32 KnownBits:00000000000000001111111111111111 SignBits:16223 ; CHECK-NEXT: %bfe:sgpr_32 KnownBits:11111111111111111111111111111111 SignBits:32224 %cst:sgpr_32(s32) = G_CONSTANT i32 65535225 %bfe:sgpr_32(s32) = S_BFE_I32 %cst, 262252, implicit-def $scc226 $sgpr0 = COPY %bfe227...228---229name: test_s_bfe_u64_constants_sixth_bit230body: |231 bb.0:232 ; Extract [32:48)233 ; Check we correctly read 6 bits for the width on 64 bit BFEs.234 ; CHECK-LABEL: name: @test_s_bfe_u64_constants_sixth_bit235 ; CHECK-NEXT: %cst:sgpr_64 KnownBits:0000000000000000111111111111111100000000000000000000000000000000 SignBits:16236 ; CHECK-NEXT: %bfe:sgpr_64 KnownBits:0000000000000000000000000000000000000000000000001111111111111111 SignBits:48237 %cst:sgpr_64(s64) = G_CONSTANT i64 281470681743360238 %bfe:sgpr_64(s64) = S_BFE_U64 %cst, 1048608, implicit-def $scc239 $sgpr0_sgpr1 = COPY %bfe240...241---242name: test_s_bfe_i64_constants_sixth_bit243body: |244 bb.0:245 ; Extract [32:48)246 ; Check we correctly read 6 bits for the width on 64 bit BFEs.247 ; CHECK-LABEL: name: @test_s_bfe_i64_constants_sixth_bit248 ; CHECK-NEXT: %cst:sgpr_64 KnownBits:0000000000000000111111111111111100000000000000000000000000000000 SignBits:16249 ; CHECK-NEXT: %bfe:sgpr_64 KnownBits:1111111111111111111111111111111111111111111111111111111111111111 SignBits:64250 %cst:sgpr_64(s64) = G_CONSTANT i64 281470681743360251 %bfe:sgpr_64(s64) = S_BFE_I64 %cst, 1048608, implicit-def $scc252 $sgpr0_sgpr1 = COPY %bfe253...254