mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
R600/SI: Also enable WQM for image opcodes which calculate LOD v3
If whole quad mode isn't enabled for these, the level of detail is calculated incorrectly for pixels along diagonal triangle edges, causing artifacts. v2: Use a TSFlag instead of lots of switch cases v3: Add test coverage Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=88642 Reviewed-by: Tom Stellard <tom@stellard.net> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228372 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ab28439f9a
commit
a7879dcf33
@ -35,7 +35,8 @@ enum {
|
||||
SMRD = 1 << 16,
|
||||
DS = 1 << 17,
|
||||
MIMG = 1 << 18,
|
||||
FLAT = 1 << 19
|
||||
FLAT = 1 << 19,
|
||||
WQM = 1 << 20
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -38,6 +38,7 @@ class InstSI <dag outs, dag ins, string asm, list<dag> pattern> :
|
||||
field bits<1> DS = 0;
|
||||
field bits<1> MIMG = 0;
|
||||
field bits<1> FLAT = 0;
|
||||
field bits<1> WQM = 0;
|
||||
|
||||
// These need to be kept in sync with the enum in SIInstrFlags.
|
||||
let TSFlags{0} = VM_CNT;
|
||||
@ -64,6 +65,7 @@ class InstSI <dag outs, dag ins, string asm, list<dag> pattern> :
|
||||
let TSFlags{17} = DS;
|
||||
let TSFlags{18} = MIMG;
|
||||
let TSFlags{19} = FLAT;
|
||||
let TSFlags{20} = WQM;
|
||||
|
||||
// Most instructions require adjustments after selection to satisfy
|
||||
// operand requirements.
|
||||
|
@ -204,6 +204,10 @@ public:
|
||||
return get(Opcode).TSFlags & SIInstrFlags::FLAT;
|
||||
}
|
||||
|
||||
bool isWQM(uint16_t Opcode) const {
|
||||
return get(Opcode).TSFlags & SIInstrFlags::WQM;
|
||||
}
|
||||
|
||||
bool isInlineConstant(const APInt &Imm) const;
|
||||
bool isInlineConstant(const MachineOperand &MO) const;
|
||||
bool isLiteralConstant(const MachineOperand &MO) const;
|
||||
|
@ -1956,7 +1956,7 @@ multiclass MIMG_NoSampler <bits<7> op, string asm> {
|
||||
|
||||
class MIMG_Sampler_Helper <bits<7> op, string asm,
|
||||
RegisterClass dst_rc,
|
||||
RegisterClass src_rc> : MIMG <
|
||||
RegisterClass src_rc, int wqm> : MIMG <
|
||||
op,
|
||||
(outs dst_rc:$vdata),
|
||||
(ins i32imm:$dmask, i1imm:$unorm, i1imm:$glc, i1imm:$da, i1imm:$r128,
|
||||
@ -1968,33 +1968,41 @@ class MIMG_Sampler_Helper <bits<7> op, string asm,
|
||||
let mayLoad = 1;
|
||||
let mayStore = 0;
|
||||
let hasPostISelHook = 1;
|
||||
let WQM = wqm;
|
||||
}
|
||||
|
||||
multiclass MIMG_Sampler_Src_Helper <bits<7> op, string asm,
|
||||
RegisterClass dst_rc,
|
||||
int channels> {
|
||||
def _V1 : MIMG_Sampler_Helper <op, asm, dst_rc, VGPR_32>,
|
||||
int channels, int wqm> {
|
||||
def _V1 : MIMG_Sampler_Helper <op, asm, dst_rc, VGPR_32, wqm>,
|
||||
MIMG_Mask<asm#"_V1", channels>;
|
||||
def _V2 : MIMG_Sampler_Helper <op, asm, dst_rc, VReg_64>,
|
||||
def _V2 : MIMG_Sampler_Helper <op, asm, dst_rc, VReg_64, wqm>,
|
||||
MIMG_Mask<asm#"_V2", channels>;
|
||||
def _V4 : MIMG_Sampler_Helper <op, asm, dst_rc, VReg_128>,
|
||||
def _V4 : MIMG_Sampler_Helper <op, asm, dst_rc, VReg_128, wqm>,
|
||||
MIMG_Mask<asm#"_V4", channels>;
|
||||
def _V8 : MIMG_Sampler_Helper <op, asm, dst_rc, VReg_256>,
|
||||
def _V8 : MIMG_Sampler_Helper <op, asm, dst_rc, VReg_256, wqm>,
|
||||
MIMG_Mask<asm#"_V8", channels>;
|
||||
def _V16 : MIMG_Sampler_Helper <op, asm, dst_rc, VReg_512>,
|
||||
def _V16 : MIMG_Sampler_Helper <op, asm, dst_rc, VReg_512, wqm>,
|
||||
MIMG_Mask<asm#"_V16", channels>;
|
||||
}
|
||||
|
||||
multiclass MIMG_Sampler <bits<7> op, string asm> {
|
||||
defm _V1 : MIMG_Sampler_Src_Helper<op, asm, VGPR_32, 1>;
|
||||
defm _V2 : MIMG_Sampler_Src_Helper<op, asm, VReg_64, 2>;
|
||||
defm _V3 : MIMG_Sampler_Src_Helper<op, asm, VReg_96, 3>;
|
||||
defm _V4 : MIMG_Sampler_Src_Helper<op, asm, VReg_128, 4>;
|
||||
defm _V1 : MIMG_Sampler_Src_Helper<op, asm, VGPR_32, 1, 0>;
|
||||
defm _V2 : MIMG_Sampler_Src_Helper<op, asm, VReg_64, 2, 0>;
|
||||
defm _V3 : MIMG_Sampler_Src_Helper<op, asm, VReg_96, 3, 0>;
|
||||
defm _V4 : MIMG_Sampler_Src_Helper<op, asm, VReg_128, 4, 0>;
|
||||
}
|
||||
|
||||
multiclass MIMG_Sampler_WQM <bits<7> op, string asm> {
|
||||
defm _V1 : MIMG_Sampler_Src_Helper<op, asm, VGPR_32, 1, 1>;
|
||||
defm _V2 : MIMG_Sampler_Src_Helper<op, asm, VReg_64, 2, 1>;
|
||||
defm _V3 : MIMG_Sampler_Src_Helper<op, asm, VReg_96, 3, 1>;
|
||||
defm _V4 : MIMG_Sampler_Src_Helper<op, asm, VReg_128, 4, 1>;
|
||||
}
|
||||
|
||||
class MIMG_Gather_Helper <bits<7> op, string asm,
|
||||
RegisterClass dst_rc,
|
||||
RegisterClass src_rc> : MIMG <
|
||||
RegisterClass src_rc, int wqm> : MIMG <
|
||||
op,
|
||||
(outs dst_rc:$vdata),
|
||||
(ins i32imm:$dmask, i1imm:$unorm, i1imm:$glc, i1imm:$da, i1imm:$r128,
|
||||
@ -2015,28 +2023,36 @@ class MIMG_Gather_Helper <bits<7> op, string asm,
|
||||
// Therefore, disable all code which updates DMASK by setting these two:
|
||||
let MIMG = 0;
|
||||
let hasPostISelHook = 0;
|
||||
let WQM = wqm;
|
||||
}
|
||||
|
||||
multiclass MIMG_Gather_Src_Helper <bits<7> op, string asm,
|
||||
RegisterClass dst_rc,
|
||||
int channels> {
|
||||
def _V1 : MIMG_Gather_Helper <op, asm, dst_rc, VGPR_32>,
|
||||
int channels, int wqm> {
|
||||
def _V1 : MIMG_Gather_Helper <op, asm, dst_rc, VGPR_32, wqm>,
|
||||
MIMG_Mask<asm#"_V1", channels>;
|
||||
def _V2 : MIMG_Gather_Helper <op, asm, dst_rc, VReg_64>,
|
||||
def _V2 : MIMG_Gather_Helper <op, asm, dst_rc, VReg_64, wqm>,
|
||||
MIMG_Mask<asm#"_V2", channels>;
|
||||
def _V4 : MIMG_Gather_Helper <op, asm, dst_rc, VReg_128>,
|
||||
def _V4 : MIMG_Gather_Helper <op, asm, dst_rc, VReg_128, wqm>,
|
||||
MIMG_Mask<asm#"_V4", channels>;
|
||||
def _V8 : MIMG_Gather_Helper <op, asm, dst_rc, VReg_256>,
|
||||
def _V8 : MIMG_Gather_Helper <op, asm, dst_rc, VReg_256, wqm>,
|
||||
MIMG_Mask<asm#"_V8", channels>;
|
||||
def _V16 : MIMG_Gather_Helper <op, asm, dst_rc, VReg_512>,
|
||||
def _V16 : MIMG_Gather_Helper <op, asm, dst_rc, VReg_512, wqm>,
|
||||
MIMG_Mask<asm#"_V16", channels>;
|
||||
}
|
||||
|
||||
multiclass MIMG_Gather <bits<7> op, string asm> {
|
||||
defm _V1 : MIMG_Gather_Src_Helper<op, asm, VGPR_32, 1>;
|
||||
defm _V2 : MIMG_Gather_Src_Helper<op, asm, VReg_64, 2>;
|
||||
defm _V3 : MIMG_Gather_Src_Helper<op, asm, VReg_96, 3>;
|
||||
defm _V4 : MIMG_Gather_Src_Helper<op, asm, VReg_128, 4>;
|
||||
defm _V1 : MIMG_Gather_Src_Helper<op, asm, VGPR_32, 1, 0>;
|
||||
defm _V2 : MIMG_Gather_Src_Helper<op, asm, VReg_64, 2, 0>;
|
||||
defm _V3 : MIMG_Gather_Src_Helper<op, asm, VReg_96, 3, 0>;
|
||||
defm _V4 : MIMG_Gather_Src_Helper<op, asm, VReg_128, 4, 0>;
|
||||
}
|
||||
|
||||
multiclass MIMG_Gather_WQM <bits<7> op, string asm> {
|
||||
defm _V1 : MIMG_Gather_Src_Helper<op, asm, VGPR_32, 1, 1>;
|
||||
defm _V2 : MIMG_Gather_Src_Helper<op, asm, VReg_64, 2, 1>;
|
||||
defm _V3 : MIMG_Gather_Src_Helper<op, asm, VReg_96, 3, 1>;
|
||||
defm _V4 : MIMG_Gather_Src_Helper<op, asm, VReg_128, 4, 1>;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -1034,63 +1034,63 @@ defm IMAGE_GET_RESINFO : MIMG_NoSampler <0x0000000e, "image_get_resinfo">;
|
||||
//def IMAGE_ATOMIC_FCMPSWAP : MIMG_NoPattern_ <"image_atomic_fcmpswap", 0x0000001d>;
|
||||
//def IMAGE_ATOMIC_FMIN : MIMG_NoPattern_ <"image_atomic_fmin", 0x0000001e>;
|
||||
//def IMAGE_ATOMIC_FMAX : MIMG_NoPattern_ <"image_atomic_fmax", 0x0000001f>;
|
||||
defm IMAGE_SAMPLE : MIMG_Sampler <0x00000020, "image_sample">;
|
||||
defm IMAGE_SAMPLE_CL : MIMG_Sampler <0x00000021, "image_sample_cl">;
|
||||
defm IMAGE_SAMPLE : MIMG_Sampler_WQM <0x00000020, "image_sample">;
|
||||
defm IMAGE_SAMPLE_CL : MIMG_Sampler_WQM <0x00000021, "image_sample_cl">;
|
||||
defm IMAGE_SAMPLE_D : MIMG_Sampler <0x00000022, "image_sample_d">;
|
||||
defm IMAGE_SAMPLE_D_CL : MIMG_Sampler <0x00000023, "image_sample_d_cl">;
|
||||
defm IMAGE_SAMPLE_L : MIMG_Sampler <0x00000024, "image_sample_l">;
|
||||
defm IMAGE_SAMPLE_B : MIMG_Sampler <0x00000025, "image_sample_b">;
|
||||
defm IMAGE_SAMPLE_B_CL : MIMG_Sampler <0x00000026, "image_sample_b_cl">;
|
||||
defm IMAGE_SAMPLE_B : MIMG_Sampler_WQM <0x00000025, "image_sample_b">;
|
||||
defm IMAGE_SAMPLE_B_CL : MIMG_Sampler_WQM <0x00000026, "image_sample_b_cl">;
|
||||
defm IMAGE_SAMPLE_LZ : MIMG_Sampler <0x00000027, "image_sample_lz">;
|
||||
defm IMAGE_SAMPLE_C : MIMG_Sampler <0x00000028, "image_sample_c">;
|
||||
defm IMAGE_SAMPLE_C_CL : MIMG_Sampler <0x00000029, "image_sample_c_cl">;
|
||||
defm IMAGE_SAMPLE_C : MIMG_Sampler_WQM <0x00000028, "image_sample_c">;
|
||||
defm IMAGE_SAMPLE_C_CL : MIMG_Sampler_WQM <0x00000029, "image_sample_c_cl">;
|
||||
defm IMAGE_SAMPLE_C_D : MIMG_Sampler <0x0000002a, "image_sample_c_d">;
|
||||
defm IMAGE_SAMPLE_C_D_CL : MIMG_Sampler <0x0000002b, "image_sample_c_d_cl">;
|
||||
defm IMAGE_SAMPLE_C_L : MIMG_Sampler <0x0000002c, "image_sample_c_l">;
|
||||
defm IMAGE_SAMPLE_C_B : MIMG_Sampler <0x0000002d, "image_sample_c_b">;
|
||||
defm IMAGE_SAMPLE_C_B_CL : MIMG_Sampler <0x0000002e, "image_sample_c_b_cl">;
|
||||
defm IMAGE_SAMPLE_C_B : MIMG_Sampler_WQM <0x0000002d, "image_sample_c_b">;
|
||||
defm IMAGE_SAMPLE_C_B_CL : MIMG_Sampler_WQM <0x0000002e, "image_sample_c_b_cl">;
|
||||
defm IMAGE_SAMPLE_C_LZ : MIMG_Sampler <0x0000002f, "image_sample_c_lz">;
|
||||
defm IMAGE_SAMPLE_O : MIMG_Sampler <0x00000030, "image_sample_o">;
|
||||
defm IMAGE_SAMPLE_CL_O : MIMG_Sampler <0x00000031, "image_sample_cl_o">;
|
||||
defm IMAGE_SAMPLE_O : MIMG_Sampler_WQM <0x00000030, "image_sample_o">;
|
||||
defm IMAGE_SAMPLE_CL_O : MIMG_Sampler_WQM <0x00000031, "image_sample_cl_o">;
|
||||
defm IMAGE_SAMPLE_D_O : MIMG_Sampler <0x00000032, "image_sample_d_o">;
|
||||
defm IMAGE_SAMPLE_D_CL_O : MIMG_Sampler <0x00000033, "image_sample_d_cl_o">;
|
||||
defm IMAGE_SAMPLE_L_O : MIMG_Sampler <0x00000034, "image_sample_l_o">;
|
||||
defm IMAGE_SAMPLE_B_O : MIMG_Sampler <0x00000035, "image_sample_b_o">;
|
||||
defm IMAGE_SAMPLE_B_CL_O : MIMG_Sampler <0x00000036, "image_sample_b_cl_o">;
|
||||
defm IMAGE_SAMPLE_B_O : MIMG_Sampler_WQM <0x00000035, "image_sample_b_o">;
|
||||
defm IMAGE_SAMPLE_B_CL_O : MIMG_Sampler_WQM <0x00000036, "image_sample_b_cl_o">;
|
||||
defm IMAGE_SAMPLE_LZ_O : MIMG_Sampler <0x00000037, "image_sample_lz_o">;
|
||||
defm IMAGE_SAMPLE_C_O : MIMG_Sampler <0x00000038, "image_sample_c_o">;
|
||||
defm IMAGE_SAMPLE_C_CL_O : MIMG_Sampler <0x00000039, "image_sample_c_cl_o">;
|
||||
defm IMAGE_SAMPLE_C_O : MIMG_Sampler_WQM <0x00000038, "image_sample_c_o">;
|
||||
defm IMAGE_SAMPLE_C_CL_O : MIMG_Sampler_WQM <0x00000039, "image_sample_c_cl_o">;
|
||||
defm IMAGE_SAMPLE_C_D_O : MIMG_Sampler <0x0000003a, "image_sample_c_d_o">;
|
||||
defm IMAGE_SAMPLE_C_D_CL_O : MIMG_Sampler <0x0000003b, "image_sample_c_d_cl_o">;
|
||||
defm IMAGE_SAMPLE_C_L_O : MIMG_Sampler <0x0000003c, "image_sample_c_l_o">;
|
||||
defm IMAGE_SAMPLE_C_B_O : MIMG_Sampler <0x0000003d, "image_sample_c_b_o">;
|
||||
defm IMAGE_SAMPLE_C_B_CL_O : MIMG_Sampler <0x0000003e, "image_sample_c_b_cl_o">;
|
||||
defm IMAGE_SAMPLE_C_B_O : MIMG_Sampler_WQM <0x0000003d, "image_sample_c_b_o">;
|
||||
defm IMAGE_SAMPLE_C_B_CL_O : MIMG_Sampler_WQM <0x0000003e, "image_sample_c_b_cl_o">;
|
||||
defm IMAGE_SAMPLE_C_LZ_O : MIMG_Sampler <0x0000003f, "image_sample_c_lz_o">;
|
||||
defm IMAGE_GATHER4 : MIMG_Gather <0x00000040, "image_gather4">;
|
||||
defm IMAGE_GATHER4_CL : MIMG_Gather <0x00000041, "image_gather4_cl">;
|
||||
defm IMAGE_GATHER4 : MIMG_Gather_WQM <0x00000040, "image_gather4">;
|
||||
defm IMAGE_GATHER4_CL : MIMG_Gather_WQM <0x00000041, "image_gather4_cl">;
|
||||
defm IMAGE_GATHER4_L : MIMG_Gather <0x00000044, "image_gather4_l">;
|
||||
defm IMAGE_GATHER4_B : MIMG_Gather <0x00000045, "image_gather4_b">;
|
||||
defm IMAGE_GATHER4_B_CL : MIMG_Gather <0x00000046, "image_gather4_b_cl">;
|
||||
defm IMAGE_GATHER4_B : MIMG_Gather_WQM <0x00000045, "image_gather4_b">;
|
||||
defm IMAGE_GATHER4_B_CL : MIMG_Gather_WQM <0x00000046, "image_gather4_b_cl">;
|
||||
defm IMAGE_GATHER4_LZ : MIMG_Gather <0x00000047, "image_gather4_lz">;
|
||||
defm IMAGE_GATHER4_C : MIMG_Gather <0x00000048, "image_gather4_c">;
|
||||
defm IMAGE_GATHER4_C_CL : MIMG_Gather <0x00000049, "image_gather4_c_cl">;
|
||||
defm IMAGE_GATHER4_C : MIMG_Gather_WQM <0x00000048, "image_gather4_c">;
|
||||
defm IMAGE_GATHER4_C_CL : MIMG_Gather_WQM <0x00000049, "image_gather4_c_cl">;
|
||||
defm IMAGE_GATHER4_C_L : MIMG_Gather <0x0000004c, "image_gather4_c_l">;
|
||||
defm IMAGE_GATHER4_C_B : MIMG_Gather <0x0000004d, "image_gather4_c_b">;
|
||||
defm IMAGE_GATHER4_C_B_CL : MIMG_Gather <0x0000004e, "image_gather4_c_b_cl">;
|
||||
defm IMAGE_GATHER4_C_B : MIMG_Gather_WQM <0x0000004d, "image_gather4_c_b">;
|
||||
defm IMAGE_GATHER4_C_B_CL : MIMG_Gather_WQM <0x0000004e, "image_gather4_c_b_cl">;
|
||||
defm IMAGE_GATHER4_C_LZ : MIMG_Gather <0x0000004f, "image_gather4_c_lz">;
|
||||
defm IMAGE_GATHER4_O : MIMG_Gather <0x00000050, "image_gather4_o">;
|
||||
defm IMAGE_GATHER4_CL_O : MIMG_Gather <0x00000051, "image_gather4_cl_o">;
|
||||
defm IMAGE_GATHER4_O : MIMG_Gather_WQM <0x00000050, "image_gather4_o">;
|
||||
defm IMAGE_GATHER4_CL_O : MIMG_Gather_WQM <0x00000051, "image_gather4_cl_o">;
|
||||
defm IMAGE_GATHER4_L_O : MIMG_Gather <0x00000054, "image_gather4_l_o">;
|
||||
defm IMAGE_GATHER4_B_O : MIMG_Gather <0x00000055, "image_gather4_b_o">;
|
||||
defm IMAGE_GATHER4_B_O : MIMG_Gather_WQM <0x00000055, "image_gather4_b_o">;
|
||||
defm IMAGE_GATHER4_B_CL_O : MIMG_Gather <0x00000056, "image_gather4_b_cl_o">;
|
||||
defm IMAGE_GATHER4_LZ_O : MIMG_Gather <0x00000057, "image_gather4_lz_o">;
|
||||
defm IMAGE_GATHER4_C_O : MIMG_Gather <0x00000058, "image_gather4_c_o">;
|
||||
defm IMAGE_GATHER4_C_CL_O : MIMG_Gather <0x00000059, "image_gather4_c_cl_o">;
|
||||
defm IMAGE_GATHER4_C_O : MIMG_Gather_WQM <0x00000058, "image_gather4_c_o">;
|
||||
defm IMAGE_GATHER4_C_CL_O : MIMG_Gather_WQM <0x00000059, "image_gather4_c_cl_o">;
|
||||
defm IMAGE_GATHER4_C_L_O : MIMG_Gather <0x0000005c, "image_gather4_c_l_o">;
|
||||
defm IMAGE_GATHER4_C_B_O : MIMG_Gather <0x0000005d, "image_gather4_c_b_o">;
|
||||
defm IMAGE_GATHER4_C_B_CL_O : MIMG_Gather <0x0000005e, "image_gather4_c_b_cl_o">;
|
||||
defm IMAGE_GATHER4_C_B_O : MIMG_Gather_WQM <0x0000005d, "image_gather4_c_b_o">;
|
||||
defm IMAGE_GATHER4_C_B_CL_O : MIMG_Gather_WQM <0x0000005e, "image_gather4_c_b_cl_o">;
|
||||
defm IMAGE_GATHER4_C_LZ_O : MIMG_Gather <0x0000005f, "image_gather4_c_lz_o">;
|
||||
defm IMAGE_GET_LOD : MIMG_Sampler <0x00000060, "image_get_lod">;
|
||||
defm IMAGE_GET_LOD : MIMG_Sampler_WQM <0x00000060, "image_get_lod">;
|
||||
defm IMAGE_SAMPLE_CD : MIMG_Sampler <0x00000068, "image_sample_cd">;
|
||||
defm IMAGE_SAMPLE_CD_CL : MIMG_Sampler <0x00000069, "image_sample_cd_cl">;
|
||||
defm IMAGE_SAMPLE_C_CD : MIMG_Sampler <0x0000006a, "image_sample_c_cd">;
|
||||
|
@ -447,7 +447,7 @@ bool SILowerControlFlowPass::runOnMachineFunction(MachineFunction &MF) {
|
||||
Next = std::next(I);
|
||||
|
||||
MachineInstr &MI = *I;
|
||||
if (TII->isDS(MI.getOpcode()))
|
||||
if (TII->isWQM(MI.getOpcode()) || TII->isDS(MI.getOpcode()))
|
||||
NeedWQM = true;
|
||||
|
||||
// Flat uses m0 in case it needs to access LDS.
|
||||
|
@ -2,6 +2,7 @@
|
||||
;RUN: llc < %s -march=amdgcn -mcpu=tonga -verify-machineinstrs | FileCheck %s
|
||||
|
||||
;CHECK-LABEL: {{^}}sample:
|
||||
;CHECK: s_wqm
|
||||
;CHECK: image_sample {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample() #0 {
|
||||
main_body:
|
||||
@ -15,6 +16,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_cl:
|
||||
;CHECK: s_wqm
|
||||
;CHECK: image_sample_cl {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_cl() #0 {
|
||||
main_body:
|
||||
@ -28,6 +30,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_d:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_d {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_d() #0 {
|
||||
main_body:
|
||||
@ -41,6 +44,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_d_cl:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_d_cl {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_d_cl() #0 {
|
||||
main_body:
|
||||
@ -54,6 +58,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_l:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_l {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_l() #0 {
|
||||
main_body:
|
||||
@ -67,6 +72,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_b:
|
||||
;CHECK: s_wqm
|
||||
;CHECK: image_sample_b {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_b() #0 {
|
||||
main_body:
|
||||
@ -80,6 +86,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_b_cl:
|
||||
;CHECK: s_wqm
|
||||
;CHECK: image_sample_b_cl {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_b_cl() #0 {
|
||||
main_body:
|
||||
@ -93,6 +100,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_lz:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_lz {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_lz() #0 {
|
||||
main_body:
|
||||
@ -106,6 +114,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_cd:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_cd {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_cd() #0 {
|
||||
main_body:
|
||||
@ -119,6 +128,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_cd_cl:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_cd_cl {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_cd_cl() #0 {
|
||||
main_body:
|
||||
@ -132,6 +142,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c:
|
||||
;CHECK: s_wqm
|
||||
;CHECK: image_sample_c {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c() #0 {
|
||||
main_body:
|
||||
@ -145,6 +156,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c_cl:
|
||||
;CHECK: s_wqm
|
||||
;CHECK: image_sample_c_cl {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c_cl() #0 {
|
||||
main_body:
|
||||
@ -158,6 +170,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c_d:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_c_d {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c_d() #0 {
|
||||
main_body:
|
||||
@ -171,6 +184,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c_d_cl:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_c_d_cl {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c_d_cl() #0 {
|
||||
main_body:
|
||||
@ -184,6 +198,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c_l:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_c_l {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c_l() #0 {
|
||||
main_body:
|
||||
@ -197,6 +212,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c_b:
|
||||
;CHECK: s_wqm
|
||||
;CHECK: image_sample_c_b {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c_b() #0 {
|
||||
main_body:
|
||||
@ -210,6 +226,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c_b_cl:
|
||||
;CHECK: s_wqm
|
||||
;CHECK: image_sample_c_b_cl {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c_b_cl() #0 {
|
||||
main_body:
|
||||
@ -223,6 +240,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c_lz:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_c_lz {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c_lz() #0 {
|
||||
main_body:
|
||||
@ -236,6 +254,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c_cd:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_c_cd {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c_cd() #0 {
|
||||
main_body:
|
||||
@ -249,6 +268,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c_cd_cl:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_c_cd_cl {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c_cd_cl() #0 {
|
||||
main_body:
|
||||
|
@ -2,6 +2,7 @@
|
||||
;RUN: llc < %s -march=amdgcn -mcpu=tonga -verify-machineinstrs | FileCheck %s
|
||||
|
||||
;CHECK-LABEL: {{^}}sample:
|
||||
;CHECK: s_wqm
|
||||
;CHECK: image_sample_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample() #0 {
|
||||
main_body:
|
||||
@ -15,6 +16,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_cl:
|
||||
;CHECK: s_wqm
|
||||
;CHECK: image_sample_cl_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_cl() #0 {
|
||||
main_body:
|
||||
@ -28,6 +30,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_d:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_d_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_d() #0 {
|
||||
main_body:
|
||||
@ -41,6 +44,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_d_cl:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_d_cl_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_d_cl() #0 {
|
||||
main_body:
|
||||
@ -54,6 +58,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_l:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_l_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_l() #0 {
|
||||
main_body:
|
||||
@ -67,6 +72,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_b:
|
||||
;CHECK: s_wqm
|
||||
;CHECK: image_sample_b_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_b() #0 {
|
||||
main_body:
|
||||
@ -80,6 +86,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_b_cl:
|
||||
;CHECK: s_wqm
|
||||
;CHECK: image_sample_b_cl_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_b_cl() #0 {
|
||||
main_body:
|
||||
@ -93,6 +100,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_lz:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_lz_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_lz() #0 {
|
||||
main_body:
|
||||
@ -106,6 +114,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_cd:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_cd_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_cd() #0 {
|
||||
main_body:
|
||||
@ -119,6 +128,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_cd_cl:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_cd_cl_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_cd_cl() #0 {
|
||||
main_body:
|
||||
@ -132,6 +142,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c:
|
||||
;CHECK: s_wqm
|
||||
;CHECK: image_sample_c_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c() #0 {
|
||||
main_body:
|
||||
@ -145,6 +156,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c_cl:
|
||||
;CHECK: s_wqm
|
||||
;CHECK: image_sample_c_cl_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c_cl() #0 {
|
||||
main_body:
|
||||
@ -158,6 +170,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c_d:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_c_d_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c_d() #0 {
|
||||
main_body:
|
||||
@ -171,6 +184,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c_d_cl:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_c_d_cl_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c_d_cl() #0 {
|
||||
main_body:
|
||||
@ -184,6 +198,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c_l:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_c_l_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c_l() #0 {
|
||||
main_body:
|
||||
@ -197,6 +212,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c_b:
|
||||
;CHECK: s_wqm
|
||||
;CHECK: image_sample_c_b_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c_b() #0 {
|
||||
main_body:
|
||||
@ -210,6 +226,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c_b_cl:
|
||||
;CHECK: s_wqm
|
||||
;CHECK: image_sample_c_b_cl_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c_b_cl() #0 {
|
||||
main_body:
|
||||
@ -223,6 +240,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c_lz:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_c_lz_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c_lz() #0 {
|
||||
main_body:
|
||||
@ -236,6 +254,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c_cd:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_c_cd_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c_cd() #0 {
|
||||
main_body:
|
||||
@ -249,6 +268,7 @@ main_body:
|
||||
}
|
||||
|
||||
;CHECK-LABEL: {{^}}sample_c_cd_cl:
|
||||
;CHECK-NOT: s_wqm
|
||||
;CHECK: image_sample_c_cd_cl_o {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
|
||||
define void @sample_c_cd_cl() #0 {
|
||||
main_body:
|
||||
|
Loading…
Reference in New Issue
Block a user