[Mesa-dev] [llvm] r282237 - [InstCombine] Fix for PR29124: reduce insertelements to shufflevector
Michel Dänzer
michel at daenzer.net
Mon Sep 26 07:06:57 UTC 2016
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
-------------- next part --------------
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
More information about the mesa-dev
mailing list