Hi Alexey,
On 23/09/16 06:14 PM, Alexey Bataev via llvm-commits wrote: > Author: abataev > Date: Fri Sep 23 04:14:08 2016 > New Revision: 282237 > > URL: http://llvm.org/viewvc/llvm-project?rev=282237&view=rev > Log: > [InstCombine] Fix for PR29124: reduce insertelements to shufflevector This change introduced failures with the Mesa llvmpipe driver unit test lp_test_format. See below for information about the CPU, and the attachment for the IR and results of the failing sub-tests. Let me know if you need more information. processor : 0 vendor_id : AuthenticAMD cpu family : 21 model : 48 model name : AMD A10-7850K Radeon R7, 12 Compute Cores 4C+8G stepping : 1 microcode : 0x6003106 cpu MHz : 4100.000 cache size : 2048 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 2 apicid : 16 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf eagerfpu pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 popcnt aes xsave avx f16c lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs xop skinit wdt lwp fma4 tce nodeid_msr tbm topoext perfctr_core perfctr_nb bpext arat cpb hw_pstate npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vmmcall fsgsbase bmi1 xsaveopt bugs : fxsave_leak sysret_ss_attrs bogomips : 8200.55 TLB size : 1536 4K pages clflush size : 64 cache_alignment : 64 address sizes : 48 bits physical, 48 bits virtual power management: ts ttp tm 100mhzsteps hwpstate cpb eff_freq_ro [13] -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Mesa and X developer
define void @fetch_r32g32b32_float_float(<4 x float>*, i8*, i32, i32, { [2048 x i32], [128 x i64] }*) { entry: %5 = getelementptr i8, i8* %1, i32 0 %6 = bitcast i8* %5 to <3 x float>* %7 = load <3 x float>, <3 x float>* %6, align 4 %8 = shufflevector <3 x float> %7, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> %9 = shufflevector <4 x float> %8, <4 x float> <float undef, float 1.000000e+00, float undef, float undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 5> store <4 x float> %9, <4 x float>* %0 ret void } Testing PIPE_FORMAT_R32G32B32_FLOAT (float) ... FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 0 0 1 expected FAILED Packed: 00 00 80 3f Unpacked (0,0): 1 1 0 0 obtained 1 0 0 1 expected FAILED Packed: 00 00 80 bf Unpacked (0,0): -1 1 0 0 obtained -1 0 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 1 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 -1 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 1 0 obtained 0 0 1 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 -1 0 obtained 0 0 -1 1 expected FAILED Packed: 00 00 80 3f Unpacked (0,0): 1 1 1 0 obtained 1 1 1 1 expected [...] define void @fetch_r32g32b32_unorm_float(<4 x float>*, i8*, i32, i32, { [2048 x i32], [128 x i64] }*) { entry: %5 = getelementptr i8, i8* %1, i32 0 %6 = bitcast i8* %5 to <3 x i32>* %7 = load <3 x i32>, <3 x i32>* %6, align 4 %8 = shufflevector <3 x i32> %7, <3 x i32> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> %9 = lshr <4 x i32> %8, <i32 9, i32 9, i32 9, i32 9> %10 = or <4 x i32> %9, <i32 1065353216, i32 1065353216, i32 1065353216, i32 1065353216> %11 = bitcast <4 x i32> %10 to <4 x float> %12 = fsub <4 x float> %11, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00> %13 = fmul <4 x float> %12, <float 0x3FF0000020000000, float 0x3FF0000020000000, float 0x3FF0000020000000, float 0x3FF0000020000000> %14 = shufflevector <4 x float> %13, <4 x float> <float undef, float 1.000000e+00, float undef, float undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 5> store <4 x float> %14, <4 x float>* %0 ret void } Testing PIPE_FORMAT_R32G32B32_UNORM (float) ... FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 0 0 1 expected FAILED Packed: ff ff ff ff Unpacked (0,0): 1 1 0 0 obtained 1 0 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 1 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 1 0 obtained 0 0 1 1 expected FAILED Packed: ff ff ff ff Unpacked (0,0): 1 1 1 0 obtained 1 1 1 1 expected [...] define void @fetch_r32g32b32_uscaled_float(<4 x float>*, i8*, i32, i32, { [2048 x i32], [128 x i64] }*) { entry: %5 = getelementptr i8, i8* %1, i32 0 %6 = bitcast i8* %5 to <3 x i32>* %7 = load <3 x i32>, <3 x i32>* %6, align 4 %8 = shufflevector <3 x i32> %7, <3 x i32> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> %9 = sitofp <4 x i32> %8 to <4 x float> %10 = shufflevector <4 x float> %9, <4 x float> <float undef, float 1.000000e+00, float undef, float undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 5> store <4 x float> %10, <4 x float>* %0 ret void } Testing PIPE_FORMAT_R32G32B32_USCALED (float) ... FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 0 0 1 expected FAILED Packed: 00 00 00 01 Unpacked (0,0): 16777216 1 0 0 obtained 16777216 0 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 16777216 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 16777216 0 obtained 0 0 16777216 1 expected FAILED Packed: 00 00 00 01 Unpacked (0,0): 16777216 1 16777216 0 obtained 16777216 16777216 16777216 1 expected [...] define void @fetch_r32g32b32_snorm_float(<4 x float>*, i8*, i32, i32, { [2048 x i32], [128 x i64] }*) { entry: %5 = getelementptr i8, i8* %1, i32 0 %6 = bitcast i8* %5 to <3 x i32>* %7 = load <3 x i32>, <3 x i32>* %6, align 4 %8 = shufflevector <3 x i32> %7, <3 x i32> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> %9 = sitofp <4 x i32> %8 to <4 x float> %10 = fmul <4 x float> %9, <float 0x3E00000000000000, float 0x3E00000000000000, float 0x3E00000000000000, float 0x3E00000000000000> %11 = shufflevector <4 x float> %10, <4 x float> <float undef, float 1.000000e+00, float undef, float undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 5> store <4 x float> %11, <4 x float>* %0 ret void } Testing PIPE_FORMAT_R32G32B32_SNORM (float) ... FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 0 0 1 expected FAILED Packed: ff ff ff 7f Unpacked (0,0): 1 1 0 0 obtained 1 0 0 1 expected FAILED Packed: 01 00 00 80 Unpacked (0,0): -1 1 0 0 obtained -1 0 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 1 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 -1 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 1 0 obtained 0 0 1 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 -1 0 obtained 0 0 -1 1 expected [...] define void @fetch_r32g32b32_sscaled_float(<4 x float>*, i8*, i32, i32, { [2048 x i32], [128 x i64] }*) { entry: %5 = getelementptr i8, i8* %1, i32 0 %6 = bitcast i8* %5 to <3 x i32>* %7 = load <3 x i32>, <3 x i32>* %6, align 4 %8 = shufflevector <3 x i32> %7, <3 x i32> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> %9 = sitofp <4 x i32> %8 to <4 x float> %10 = shufflevector <4 x float> %9, <4 x float> <float undef, float 1.000000e+00, float undef, float undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 5> store <4 x float> %10, <4 x float>* %0 ret void } Testing PIPE_FORMAT_R32G32B32_SSCALED (float) ... FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 0 0 1 expected FAILED Packed: 00 00 00 01 Unpacked (0,0): 16777216 1 0 0 obtained 16777216 0 0 1 expected FAILED Packed: 00 00 00 ff Unpacked (0,0): -16777216 1 0 0 obtained -16777216 0 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 16777216 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 -16777216 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 16777216 0 obtained 0 0 16777216 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 -16777216 0 obtained 0 0 -16777216 1 expected [...] define void @fetch_r16g16b16_unorm_float(<4 x float>*, i8*, i32, i32, { [2048 x i32], [128 x i64] }*) { entry: %5 = getelementptr i8, i8* %1, i32 0 %6 = bitcast i8* %5 to <3 x i16>* %7 = load <3 x i16>, <3 x i16>* %6, align 2 %8 = shufflevector <3 x i16> %7, <3 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> %9 = extractelement <4 x i16> %8, i32 0 %10 = zext i16 %9 to i32 %11 = insertelement <4 x i32> undef, i32 %10, i32 0 %12 = extractelement <4 x i16> %8, i32 1 %13 = zext i16 %12 to i32 %14 = insertelement <4 x i32> %11, i32 %13, i32 1 %15 = extractelement <4 x i16> %8, i32 2 %16 = zext i16 %15 to i32 %17 = insertelement <4 x i32> %14, i32 %16, i32 2 %18 = extractelement <4 x i16> %8, i32 3 %19 = zext i16 %18 to i32 %20 = insertelement <4 x i32> %17, i32 %19, i32 3 %21 = sitofp <4 x i32> %20 to <4 x float> %22 = fmul <4 x float> %21, <float 0x3EF0001000000000, float 0x3EF0001000000000, float 0x3EF0001000000000, float 0x3EF0001000000000> %23 = shufflevector <4 x float> %22, <4 x float> <float undef, float 1.000000e+00, float undef, float undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 5> store <4 x float> %23, <4 x float>* %0 ret void } Testing PIPE_FORMAT_R16G16B16_UNORM (float) ... FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 0 0 1 expected FAILED Packed: ff ff 00 00 Unpacked (0,0): 1 1 0 0 obtained 1 0 0 1 expected FAILED Packed: 00 00 ff ff Unpacked (0,0): 0 1 0 0 obtained 0 1 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 1 0 obtained 0 0 1 1 expected FAILED Packed: ff ff ff ff Unpacked (0,0): 1 1 1 0 obtained 1 1 1 1 expected [...] define void @fetch_r16g16b16_uscaled_float(<4 x float>*, i8*, i32, i32, { [2048 x i32], [128 x i64] }*) { entry: %5 = getelementptr i8, i8* %1, i32 0 %6 = bitcast i8* %5 to <3 x i16>* %7 = load <3 x i16>, <3 x i16>* %6, align 2 %8 = shufflevector <3 x i16> %7, <3 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> %9 = extractelement <4 x i16> %8, i32 0 %10 = zext i16 %9 to i32 %11 = insertelement <4 x i32> undef, i32 %10, i32 0 %12 = extractelement <4 x i16> %8, i32 1 %13 = zext i16 %12 to i32 %14 = insertelement <4 x i32> %11, i32 %13, i32 1 %15 = extractelement <4 x i16> %8, i32 2 %16 = zext i16 %15 to i32 %17 = insertelement <4 x i32> %14, i32 %16, i32 2 %18 = extractelement <4 x i16> %8, i32 3 %19 = zext i16 %18 to i32 %20 = insertelement <4 x i32> %17, i32 %19, i32 3 %21 = sitofp <4 x i32> %20 to <4 x float> %22 = shufflevector <4 x float> %21, <4 x float> <float undef, float 1.000000e+00, float undef, float undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 5> store <4 x float> %22, <4 x float>* %0 ret void } Testing PIPE_FORMAT_R16G16B16_USCALED (float) ... FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 0 0 1 expected FAILED Packed: ff ff 00 00 Unpacked (0,0): 65535 1 0 0 obtained 65535 0 0 1 expected FAILED Packed: 00 00 ff ff Unpacked (0,0): 0 1 0 0 obtained 0 65535 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 65535 0 obtained 0 0 65535 1 expected FAILED Packed: ff ff ff ff Unpacked (0,0): 65535 1 65535 0 obtained 65535 65535 65535 1 expected [...] define void @fetch_r16g16b16_snorm_float(<4 x float>*, i8*, i32, i32, { [2048 x i32], [128 x i64] }*) { entry: %5 = getelementptr i8, i8* %1, i32 0 %6 = bitcast i8* %5 to <3 x i16>* %7 = load <3 x i16>, <3 x i16>* %6, align 2 %8 = shufflevector <3 x i16> %7, <3 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> %9 = extractelement <4 x i16> %8, i32 0 %10 = sext i16 %9 to i32 %11 = insertelement <4 x i32> undef, i32 %10, i32 0 %12 = extractelement <4 x i16> %8, i32 1 %13 = sext i16 %12 to i32 %14 = insertelement <4 x i32> %11, i32 %13, i32 1 %15 = extractelement <4 x i16> %8, i32 2 %16 = sext i16 %15 to i32 %17 = insertelement <4 x i32> %14, i32 %16, i32 2 %18 = extractelement <4 x i16> %8, i32 3 %19 = sext i16 %18 to i32 %20 = insertelement <4 x i32> %17, i32 %19, i32 3 %21 = sitofp <4 x i32> %20 to <4 x float> %22 = fmul <4 x float> %21, <float 0x3F00002000000000, float 0x3F00002000000000, float 0x3F00002000000000, float 0x3F00002000000000> %23 = shufflevector <4 x float> %22, <4 x float> <float undef, float 1.000000e+00, float undef, float undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 5> store <4 x float> %23, <4 x float>* %0 ret void } Testing PIPE_FORMAT_R16G16B16_SNORM (float) ... FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 0 0 1 expected FAILED Packed: ff 7f 00 00 Unpacked (0,0): 1 1 0 0 obtained 1 0 0 1 expected FAILED Packed: 01 80 00 00 Unpacked (0,0): -1 1 0 0 obtained -1 0 0 1 expected FAILED Packed: 00 00 ff 7f Unpacked (0,0): 0 1 0 0 obtained 0 1 0 1 expected FAILED Packed: 00 00 01 80 Unpacked (0,0): 0 1 0 0 obtained 0 -1 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 1 0 obtained 0 0 1 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 -1 0 obtained 0 0 -1 1 expected [...] define void @fetch_r16g16b16_sscaled_float(<4 x float>*, i8*, i32, i32, { [2048 x i32], [128 x i64] }*) { entry: %5 = getelementptr i8, i8* %1, i32 0 %6 = bitcast i8* %5 to <3 x i16>* %7 = load <3 x i16>, <3 x i16>* %6, align 2 %8 = shufflevector <3 x i16> %7, <3 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> %9 = extractelement <4 x i16> %8, i32 0 %10 = sext i16 %9 to i32 %11 = insertelement <4 x i32> undef, i32 %10, i32 0 %12 = extractelement <4 x i16> %8, i32 1 %13 = sext i16 %12 to i32 %14 = insertelement <4 x i32> %11, i32 %13, i32 1 %15 = extractelement <4 x i16> %8, i32 2 %16 = sext i16 %15 to i32 %17 = insertelement <4 x i32> %14, i32 %16, i32 2 %18 = extractelement <4 x i16> %8, i32 3 %19 = sext i16 %18 to i32 %20 = insertelement <4 x i32> %17, i32 %19, i32 3 %21 = sitofp <4 x i32> %20 to <4 x float> %22 = shufflevector <4 x float> %21, <4 x float> <float undef, float 1.000000e+00, float undef, float undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 5> store <4 x float> %22, <4 x float>* %0 ret void } Testing PIPE_FORMAT_R16G16B16_SSCALED (float) ... FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 0 0 1 expected FAILED Packed: ff 7f 00 00 Unpacked (0,0): 32767 1 0 0 obtained 32767 0 0 1 expected FAILED Packed: 00 80 00 00 Unpacked (0,0): -32768 1 0 0 obtained -32768 0 0 1 expected FAILED Packed: 00 00 ff 7f Unpacked (0,0): 0 1 0 0 obtained 0 32767 0 1 expected FAILED Packed: 00 00 00 80 Unpacked (0,0): 0 1 0 0 obtained 0 -32768 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 32767 0 obtained 0 0 32767 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 -32768 0 obtained 0 0 -32768 1 expected [...] define void @fetch_r8g8b8_unorm_float(<4 x float>*, i8*, i32, i32, { [2048 x i32], [128 x i64] }*) { entry: %5 = getelementptr i8, i8* %1, i32 0 %6 = bitcast i8* %5 to <3 x i8>* %7 = load <3 x i8>, <3 x i8>* %6, align 1 %8 = shufflevector <3 x i8> %7, <3 x i8> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> %9 = extractelement <4 x i8> %8, i32 0 %10 = zext i8 %9 to i32 %11 = insertelement <4 x i32> undef, i32 %10, i32 0 %12 = extractelement <4 x i8> %8, i32 1 %13 = zext i8 %12 to i32 %14 = insertelement <4 x i32> %11, i32 %13, i32 1 %15 = extractelement <4 x i8> %8, i32 2 %16 = zext i8 %15 to i32 %17 = insertelement <4 x i32> %14, i32 %16, i32 2 %18 = extractelement <4 x i8> %8, i32 3 %19 = zext i8 %18 to i32 %20 = insertelement <4 x i32> %17, i32 %19, i32 3 %21 = sitofp <4 x i32> %20 to <4 x float> %22 = fmul <4 x float> %21, <float 0x3F70101020000000, float 0x3F70101020000000, float 0x3F70101020000000, float 0x3F70101020000000> %23 = shufflevector <4 x float> %22, <4 x float> <float undef, float 1.000000e+00, float undef, float undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 5> store <4 x float> %23, <4 x float>* %0 ret void } Testing PIPE_FORMAT_R8G8B8_UNORM (float) ... FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 0 0 1 expected FAILED Packed: ff 00 00 00 Unpacked (0,0): 1 1 0 0 obtained 1 0 0 1 expected FAILED Packed: 00 ff 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 1 0 1 expected FAILED Packed: 00 00 ff 00 Unpacked (0,0): 0 1 1 0 obtained 0 0 1 1 expected FAILED Packed: ff ff ff 00 Unpacked (0,0): 1 1 1 0 obtained 1 1 1 1 expected [...] define void @fetch_r8g8b8_uscaled_float(<4 x float>*, i8*, i32, i32, { [2048 x i32], [128 x i64] }*) { entry: %5 = getelementptr i8, i8* %1, i32 0 %6 = bitcast i8* %5 to <3 x i8>* %7 = load <3 x i8>, <3 x i8>* %6, align 1 %8 = shufflevector <3 x i8> %7, <3 x i8> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> %9 = extractelement <4 x i8> %8, i32 0 %10 = zext i8 %9 to i32 %11 = insertelement <4 x i32> undef, i32 %10, i32 0 %12 = extractelement <4 x i8> %8, i32 1 %13 = zext i8 %12 to i32 %14 = insertelement <4 x i32> %11, i32 %13, i32 1 %15 = extractelement <4 x i8> %8, i32 2 %16 = zext i8 %15 to i32 %17 = insertelement <4 x i32> %14, i32 %16, i32 2 %18 = extractelement <4 x i8> %8, i32 3 %19 = zext i8 %18 to i32 %20 = insertelement <4 x i32> %17, i32 %19, i32 3 %21 = sitofp <4 x i32> %20 to <4 x float> %22 = shufflevector <4 x float> %21, <4 x float> <float undef, float 1.000000e+00, float undef, float undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 5> store <4 x float> %22, <4 x float>* %0 ret void } Testing PIPE_FORMAT_R8G8B8_USCALED (float) ... FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 0 0 1 expected FAILED Packed: ff 00 00 00 Unpacked (0,0): 255 1 0 0 obtained 255 0 0 1 expected FAILED Packed: 00 ff 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 255 0 1 expected FAILED Packed: 00 00 ff 00 Unpacked (0,0): 0 1 255 0 obtained 0 0 255 1 expected FAILED Packed: ff ff ff 00 Unpacked (0,0): 255 1 255 0 obtained 255 255 255 1 expected [...] define void @fetch_r8g8b8_snorm_float(<4 x float>*, i8*, i32, i32, { [2048 x i32], [128 x i64] }*) { entry: %5 = getelementptr i8, i8* %1, i32 0 %6 = bitcast i8* %5 to <3 x i8>* %7 = load <3 x i8>, <3 x i8>* %6, align 1 %8 = shufflevector <3 x i8> %7, <3 x i8> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> %9 = extractelement <4 x i8> %8, i32 0 %10 = sext i8 %9 to i32 %11 = insertelement <4 x i32> undef, i32 %10, i32 0 %12 = extractelement <4 x i8> %8, i32 1 %13 = sext i8 %12 to i32 %14 = insertelement <4 x i32> %11, i32 %13, i32 1 %15 = extractelement <4 x i8> %8, i32 2 %16 = sext i8 %15 to i32 %17 = insertelement <4 x i32> %14, i32 %16, i32 2 %18 = extractelement <4 x i8> %8, i32 3 %19 = sext i8 %18 to i32 %20 = insertelement <4 x i32> %17, i32 %19, i32 3 %21 = sitofp <4 x i32> %20 to <4 x float> %22 = fmul <4 x float> %21, <float 0x3F80204080000000, float 0x3F80204080000000, float 0x3F80204080000000, float 0x3F80204080000000> %23 = shufflevector <4 x float> %22, <4 x float> <float undef, float 1.000000e+00, float undef, float undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 5> store <4 x float> %23, <4 x float>* %0 ret void } Testing PIPE_FORMAT_R8G8B8_SNORM (float) ... FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 0 0 1 expected FAILED Packed: 7f 00 00 00 Unpacked (0,0): 1 1 0 0 obtained 1 0 0 1 expected FAILED Packed: 81 00 00 00 Unpacked (0,0): -1 1 0 0 obtained -1 0 0 1 expected FAILED Packed: 00 7f 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 1 0 1 expected FAILED Packed: 00 81 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 -1 0 1 expected FAILED Packed: 00 00 7f 00 Unpacked (0,0): 0 1 1 0 obtained 0 0 1 1 expected FAILED Packed: 00 00 81 00 Unpacked (0,0): 0 1 -1 0 obtained 0 0 -1 1 expected [...] define void @fetch_r8g8b8_sscaled_float(<4 x float>*, i8*, i32, i32, { [2048 x i32], [128 x i64] }*) { entry: %5 = getelementptr i8, i8* %1, i32 0 %6 = bitcast i8* %5 to <3 x i8>* %7 = load <3 x i8>, <3 x i8>* %6, align 1 %8 = shufflevector <3 x i8> %7, <3 x i8> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> %9 = extractelement <4 x i8> %8, i32 0 %10 = sext i8 %9 to i32 %11 = insertelement <4 x i32> undef, i32 %10, i32 0 %12 = extractelement <4 x i8> %8, i32 1 %13 = sext i8 %12 to i32 %14 = insertelement <4 x i32> %11, i32 %13, i32 1 %15 = extractelement <4 x i8> %8, i32 2 %16 = sext i8 %15 to i32 %17 = insertelement <4 x i32> %14, i32 %16, i32 2 %18 = extractelement <4 x i8> %8, i32 3 %19 = sext i8 %18 to i32 %20 = insertelement <4 x i32> %17, i32 %19, i32 3 %21 = sitofp <4 x i32> %20 to <4 x float> %22 = shufflevector <4 x float> %21, <4 x float> <float undef, float 1.000000e+00, float undef, float undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 5> store <4 x float> %22, <4 x float>* %0 ret void } Testing PIPE_FORMAT_R8G8B8_SSCALED (float) ... FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 0 0 1 expected FAILED Packed: 7f 00 00 00 Unpacked (0,0): 127 1 0 0 obtained 127 0 0 1 expected FAILED Packed: 80 00 00 00 Unpacked (0,0): -128 1 0 0 obtained -128 0 0 1 expected FAILED Packed: 00 7f 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 127 0 1 expected FAILED Packed: 00 80 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 -128 0 1 expected FAILED Packed: 00 00 7f 00 Unpacked (0,0): 0 1 127 0 obtained 0 0 127 1 expected FAILED Packed: 00 00 80 00 Unpacked (0,0): 0 1 -128 0 obtained 0 0 -128 1 expected [...] define void @fetch_r32g32b32_fixed_float(<4 x float>*, i8*, i32, i32, { [2048 x i32], [128 x i64] }*) { entry: %5 = getelementptr i8, i8* %1, i32 0 %6 = bitcast i8* %5 to <3 x i32>* %7 = load <3 x i32>, <3 x i32>* %6, align 4 %8 = shufflevector <3 x i32> %7, <3 x i32> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> %9 = sitofp <4 x i32> %8 to <4 x float> %10 = fmul <4 x float> %9, <float 0x3EF0000000000000, float 0x3EF0000000000000, float 0x3EF0000000000000, float 0x3EF0000000000000> %11 = shufflevector <4 x float> %10, <4 x float> <float undef, float 1.000000e+00, float undef, float undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 5> store <4 x float> %11, <4 x float>* %0 ret void } Testing PIPE_FORMAT_R32G32B32_FIXED (float) ... FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 0 0 1 expected FAILED Packed: 00 00 01 00 Unpacked (0,0): 1 1 0 0 obtained 1 0 0 1 expected FAILED Packed: 00 00 ff ff Unpacked (0,0): -1 1 0 0 obtained -1 0 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 1 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 -1 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 1 0 obtained 0 0 1 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 -1 0 obtained 0 0 -1 1 expected FAILED Packed: 00 00 01 00 Unpacked (0,0): 1 1 1 0 obtained 1 1 1 1 expected [...] define void @fetch_r16g16b16_float_float(<4 x float>*, i8*, i32, i32, { [2048 x i32], [128 x i64] }*) { entry: %5 = getelementptr i8, i8* %1, i32 0 %6 = bitcast i8* %5 to <3 x i16>* %7 = load <3 x i16>, <3 x i16>* %6, align 2 %8 = shufflevector <3 x i16> %7, <3 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> %9 = zext <4 x i16> %8 to <4 x i32> %10 = shl <4 x i32> %9, <i32 13, i32 13, i32 13, i32 13> %11 = and <4 x i32> %10, <i32 268427264, i32 268427264, i32 268427264, i32 268427264> %12 = icmp slt <4 x i32> %11, <i32 8388608, i32 8388608, i32 8388608, i32 8388608> %13 = sext <4 x i1> %12 to <4 x i32> %14 = icmp sge <4 x i32> %11, <i32 260046848, i32 260046848, i32 260046848, i32 260046848> %15 = sext <4 x i1> %14 to <4 x i32> %16 = or <4 x i32> %11, <i32 947912704, i32 947912704, i32 947912704, i32 947912704> %17 = bitcast <4 x i32> %16 to <4 x float> %18 = fsub <4 x float> %17, <float 0x3F10000000000000, float 0x3F10000000000000, float 0x3F10000000000000, float 0x3F10000000000000> %19 = bitcast <4 x float> %18 to <4 x i32> %20 = add <4 x i32> %11, <i32 939524096, i32 939524096, i32 939524096, i32 939524096> %21 = and <4 x i32> %15, <i32 2139095040, i32 2139095040, i32 2139095040, i32 2139095040> %22 = or <4 x i32> %21, %20 %23 = trunc <4 x i32> %13 to <4 x i1> %24 = select <4 x i1> %23, <4 x i32> %19, <4 x i32> %22 %25 = shl <4 x i32> %10, <i32 3, i32 3, i32 3, i32 3> %26 = and <4 x i32> <i32 -2147483648, i32 -2147483648, i32 -2147483648, i32 -2147483648>, %25 %27 = or <4 x i32> %24, %26 %28 = bitcast <4 x i32> %27 to <4 x float> %29 = shufflevector <4 x float> %28, <4 x float> <float undef, float 1.000000e+00, float undef, float undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 5> store <4 x float> %29, <4 x float>* %0 ret void } Testing PIPE_FORMAT_R16G16B16_FLOAT (float) ... FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 3.87031515e-36 obtained 0 0 0 1 expected FAILED Packed: 00 3c 00 00 Unpacked (0,0): 1 1 0 3.87031515e-36 obtained 1 0 0 1 expected FAILED Packed: 00 bc 00 00 Unpacked (0,0): -1 1 0 3.87031515e-36 obtained -1 0 0 1 expected FAILED Packed: 00 00 00 3c Unpacked (0,0): 0 1 0 3.87031515e-36 obtained 0 1 0 1 expected FAILED Packed: 00 00 00 bc Unpacked (0,0): 0 1 0 3.87031515e-36 obtained 0 -1 0 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 1 3.87031515e-36 obtained 0 0 1 1 expected FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 -1 3.87031515e-36 obtained 0 0 -1 1 expected FAILED Packed: 00 3c 00 3c Unpacked (0,0): 1 1 1 3.87031515e-36 obtained 1 1 1 1 expected [...] define void @fetch_r10g10b10x2_uscaled_float(<4 x float>*, i8*, i32, i32, { [2048 x i32], [128 x i64] }*) { entry: %5 = getelementptr i8, i8* %1, i32 0 %6 = bitcast i8* %5 to i32* %7 = load i32, i32* %6 %8 = insertelement <4 x i32> undef, i32 %7, i32 0 %9 = shufflevector <4 x i32> %8, <4 x i32> undef, <4 x i32> zeroinitializer %10 = lshr <4 x i32> %9, <i32 0, i32 10, i32 20, i32 undef> %11 = and <4 x i32> %10, <i32 1023, i32 1023, i32 1023, i32 0> %12 = sitofp <4 x i32> %11 to <4 x float> %13 = shufflevector <4 x float> %12, <4 x float> <float undef, float 1.000000e+00, float undef, float undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 5> store <4 x float> %13, <4 x float>* %0 ret void } Testing PIPE_FORMAT_R10G10B10X2_USCALED (float) ... FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 0 0 1 expected FAILED Packed: ff 03 00 00 Unpacked (0,0): 1023 1 0 0 obtained 1023 0 0 1 expected FAILED Packed: 00 fc 0f 00 Unpacked (0,0): 0 1 0 0 obtained 0 1023 0 1 expected FAILED Packed: 00 00 f0 3f Unpacked (0,0): 0 1 1023 0 obtained 0 0 1023 1 expected FAILED Packed: ff ff ff 3f Unpacked (0,0): 1023 1 1023 0 obtained 1023 1023 1023 1 expected [...] define void @fetch_r8g8b8x8_unorm_float(<4 x float>*, i8*, i32, i32, { [2048 x i32], [128 x i64] }*) { entry: %5 = getelementptr i8, i8* %1, i32 0 %6 = bitcast i8* %5 to i32* %7 = load i32, i32* %6 %8 = insertelement <4 x i32> undef, i32 %7, i32 0 %9 = shufflevector <4 x i32> %8, <4 x i32> undef, <4 x i32> zeroinitializer %10 = lshr <4 x i32> %9, <i32 0, i32 8, i32 16, i32 undef> %11 = and <4 x i32> %10, <i32 255, i32 255, i32 255, i32 0> %12 = sitofp <4 x i32> %11 to <4 x float> %13 = fmul <4 x float> %12, <float 0x3F70101020000000, float 0x3F70101020000000, float 0x3F70101020000000, float 0.000000e+00> %14 = shufflevector <4 x float> %13, <4 x float> <float undef, float 1.000000e+00, float undef, float undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 5> store <4 x float> %14, <4 x float>* %0 ret void } Testing PIPE_FORMAT_R8G8B8X8_UNORM (float) ... FAILED Packed: 00 00 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 0 0 1 expected FAILED Packed: ff 00 00 00 Unpacked (0,0): 1 1 0 0 obtained 1 0 0 1 expected FAILED Packed: 00 ff 00 00 Unpacked (0,0): 0 1 0 0 obtained 0 1 0 1 expected FAILED Packed: 00 00 ff 00 Unpacked (0,0): 0 1 1 0 obtained 0 0 1 1 expected FAILED Packed: 00 00 00 ff Unpacked (0,0): 0 1 0 0 obtained 0 0 0 1 expected FAILED Packed: ff ff ff ff Unpacked (0,0): 1 1 1 0 obtained 1 1 1 1 expected
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev