radeon/ac: use ds_swizzle for derivs on si/cik.
[mesa.git] / src / amd / common / ac_llvm_build.h
index 0ecbc4a0a281fa3f4317f4a5b60a75188cdc2835..ee27d3ca25c8d9b3733d5ed061869cf8a3ba2264 100644 (file)
@@ -40,11 +40,20 @@ struct ac_llvm_context {
        LLVMTypeRef voidt;
        LLVMTypeRef i1;
        LLVMTypeRef i8;
+       LLVMTypeRef i16;
        LLVMTypeRef i32;
+       LLVMTypeRef i64;
+       LLVMTypeRef f16;
        LLVMTypeRef f32;
+       LLVMTypeRef f64;
        LLVMTypeRef v4i32;
        LLVMTypeRef v4f32;
-       LLVMTypeRef v16i8;
+       LLVMTypeRef v8i32;
+
+       LLVMValueRef i32_0;
+       LLVMValueRef i32_1;
+       LLVMValueRef f32_0;
+       LLVMValueRef f32_1;
 
        unsigned range_md_kind;
        unsigned invariant_load_md_kind;
@@ -69,7 +78,8 @@ ac_build_gather_values_extended(struct ac_llvm_context *ctx,
                                LLVMValueRef *values,
                                unsigned value_count,
                                unsigned value_stride,
-                               bool load);
+                               bool load,
+                               bool always_vector);
 LLVMValueRef
 ac_build_gather_values(struct ac_llvm_context *ctx,
                       LLVMValueRef *values,
@@ -143,13 +153,14 @@ ac_build_buffer_load(struct ac_llvm_context *ctx,
                     unsigned inst_offset,
                     unsigned glc,
                     unsigned slc,
-                    bool readonly_memory);
+                    bool can_speculate,
+                    bool allow_smem);
 
 LLVMValueRef ac_build_buffer_load_format(struct ac_llvm_context *ctx,
                                         LLVMValueRef rsrc,
                                         LLVMValueRef vindex,
                                         LLVMValueRef voffset,
-                                        bool readonly_memory);
+                                        bool can_speculate);
 
 LLVMValueRef
 ac_get_thread_id(struct ac_llvm_context *ctx);
@@ -163,7 +174,6 @@ ac_build_ddxy(struct ac_llvm_context *ctx,
              bool has_ds_bpermute,
              uint32_t mask,
              int idx,
-             LLVMValueRef lds,
              LLVMValueRef val);
 
 #define AC_SENDMSG_GS 2
@@ -186,6 +196,7 @@ LLVMValueRef ac_build_umsb(struct ac_llvm_context *ctx,
                          LLVMValueRef arg,
                          LLVMTypeRef dst_type);
 
+LLVMValueRef ac_build_umin(struct ac_llvm_context *ctx, LLVMValueRef a, LLVMValueRef b);
 LLVMValueRef ac_build_clamp(struct ac_llvm_context *ctx, LLVMValueRef value);
 
 struct ac_export_args {