Created
September 26, 2022 02:34
-
-
Save karolherbst/15b1f044db27c73d5526c69e3612bfcc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; ModuleID = 'mesa-shader' | |
source_filename = "mesa-shader" | |
target datalayout = "e-p:64:64-p1:64:64-p2:32:32-p3:32:32-p4:64:64-p5:32:32-p6:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64-S32-A5-G1-ni:7" | |
target triple = "amdgcn--" | |
@compute_lds = external addrspace(3) global [0 x i8], align 65536 | |
define amdgpu_cs void @main(<4 x i32> addrspace(6)* inreg noalias align 4 dereferenceable(18446744073709551615) %0, <8 x i32> addrspace(6)* inreg noalias align 4 dereferenceable(18446744073709551615) %1, float addrspace(6)* inreg noalias align 4 dereferenceable(18446744073709551615) %2, <8 x i32> addrspace(6)* inreg noalias align 4 dereferenceable(18446744073709551615) %3, <3 x i32> inreg %4, i32 inreg %5, i32 inreg %6, i32 inreg %7, i32 inreg %8, <3 x i32> %9) #0 { | |
main_body: | |
%10 = ptrtoint float addrspace(6)* %2 to i32 | |
%11 = insertelement <4 x i32> undef, i32 %10, i32 0 | |
%12 = insertelement <4 x i32> %11, i32 32768, i32 1 | |
%13 = insertelement <4 x i32> %12, i32 1024, i32 2 | |
%14 = insertelement <4 x i32> %13, i32 822177708, i32 3 | |
%15 = call nsz arcp float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> %14, i32 0, i32 0) #2 | |
%16 = call nsz arcp float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> %14, i32 4, i32 0) #2 | |
%17 = insertelement <2 x float> undef, float %15, i32 0 | |
%18 = insertelement <2 x float> %17, float %16, i32 1 | |
%19 = bitcast <2 x float> %18 to <1 x i64> | |
%20 = bitcast <1 x i64> %19 to i64 | |
%21 = ptrtoint float addrspace(6)* %2 to i32 | |
%22 = insertelement <4 x i32> undef, i32 %21, i32 0 | |
%23 = insertelement <4 x i32> %22, i32 32768, i32 1 | |
%24 = insertelement <4 x i32> %23, i32 1024, i32 2 | |
%25 = insertelement <4 x i32> %24, i32 822177708, i32 3 | |
%26 = call nsz arcp float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> %25, i32 32, i32 0) #2 | |
%27 = call nsz arcp float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> %25, i32 36, i32 0) #2 | |
%28 = call nsz arcp float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> %25, i32 40, i32 0) #2 | |
%29 = call nsz arcp float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> %25, i32 44, i32 0) #2 | |
%30 = call nsz arcp float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> %25, i32 48, i32 0) #2 | |
%31 = call nsz arcp float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> %25, i32 52, i32 0) #2 | |
%32 = insertelement <6 x float> undef, float %26, i32 0 | |
%33 = insertelement <6 x float> %32, float %27, i32 1 | |
%34 = insertelement <6 x float> %33, float %28, i32 2 | |
%35 = insertelement <6 x float> %34, float %29, i32 3 | |
%36 = insertelement <6 x float> %35, float %30, i32 4 | |
%37 = insertelement <6 x float> %36, float %31, i32 5 | |
%38 = bitcast <6 x float> %37 to <3 x i64> | |
%39 = and i32 %5, 1023 | |
%40 = lshr i32 %5, 10 | |
%41 = and i32 %40, 1023 | |
%42 = lshr i32 %5, 20 | |
%43 = and i32 %42, 1023 | |
%44 = insertelement <3 x i32> undef, i32 %39, i32 0 | |
%45 = insertelement <3 x i32> %44, i32 %41, i32 1 | |
%46 = insertelement <3 x i32> %45, i32 %43, i32 2 | |
%47 = zext i32 %6 to i64 | |
%48 = zext i32 %7 to i64 | |
%49 = zext i32 %8 to i64 | |
%50 = insertelement <3 x i64> undef, i64 %47, i32 0 | |
%51 = insertelement <3 x i64> %50, i64 %48, i32 1 | |
%52 = insertelement <3 x i64> %51, i64 %49, i32 2 | |
%53 = extractelement <3 x i32> %9, i32 0 | |
%54 = zext i32 %53 to i64 | |
%55 = extractelement <3 x i32> %9, i32 1 | |
%56 = zext i32 %55 to i64 | |
%57 = extractelement <3 x i32> %9, i32 2 | |
%58 = zext i32 %57 to i64 | |
%59 = extractelement <3 x i32> %46, i32 0 | |
%60 = zext i32 %59 to i64 | |
%61 = extractelement <3 x i32> %46, i32 1 | |
%62 = zext i32 %61 to i64 | |
%63 = extractelement <3 x i32> %46, i32 2 | |
%64 = zext i32 %63 to i64 | |
%65 = extractelement <3 x i64> %52, i32 0 | |
%66 = mul i64 %65, %60 | |
%67 = extractelement <3 x i64> %52, i32 1 | |
%68 = mul i64 %67, %62 | |
%69 = extractelement <3 x i64> %52, i32 2 | |
%70 = mul i64 %69, %64 | |
%71 = add i64 %66, %54 | |
%72 = add i64 %68, %56 | |
%73 = add i64 %70, %58 | |
%74 = extractelement <3 x i64> %38, i32 0 | |
%75 = add i64 %71, %74 | |
%76 = extractelement <3 x i64> %38, i32 1 | |
%77 = add i64 %72, %76 | |
%78 = trunc i64 %75 to i32 | |
%79 = trunc i64 %77 to i32 | |
%80 = sext i32 %79 to i64 | |
%81 = zext <3 x i32> %4 to <3 x i64> | |
%82 = extractelement <3 x i64> %81, i32 0 | |
%83 = mul i64 %60, %82 | |
%84 = extractelement <3 x i64> %81, i32 1 | |
%85 = mul i64 %62, %84 | |
%86 = mul i64 %80, %83 | |
%87 = sext i32 %78 to i64 | |
%88 = add i64 %86, %87 | |
%89 = trunc i64 %88 to i32 | |
%90 = mul i64 %73, %85 | |
%91 = add i64 %72, %90 | |
%92 = mul i64 %83, %91 | |
%93 = add i64 %71, %92 | |
%94 = trunc i64 %93 to i32 | |
%95 = icmp eq i32 %89, %94 | |
%96 = select i1 %95, i32 1, i32 0 | |
%97 = sext i32 %89 to i64 | |
%98 = shl i64 %97, 2 | |
%99 = add i64 %20, %98 | |
%100 = inttoptr i64 %99 to i32 addrspace(1)* | |
store i32 %96, i32 addrspace(1)* %100, align 4 | |
ret void | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment