diff options
Diffstat (limited to 'llvm/test/CodeGen/R600/sext-in-reg.ll')
-rw-r--r-- | llvm/test/CodeGen/R600/sext-in-reg.ll | 210 |
1 files changed, 105 insertions, 105 deletions
diff --git a/llvm/test/CodeGen/R600/sext-in-reg.ll b/llvm/test/CodeGen/R600/sext-in-reg.ll index a23931337ae..693ef9da375 100644 --- a/llvm/test/CodeGen/R600/sext-in-reg.ll +++ b/llvm/test/CodeGen/R600/sext-in-reg.ll @@ -5,10 +5,10 @@ declare i32 @llvm.AMDGPU.imax(i32, i32) nounwind readnone ; FUNC-LABEL: {{^}}sext_in_reg_i1_i32: -; SI: S_LOAD_DWORD [[ARG:s[0-9]+]], -; SI: S_BFE_I32 [[SEXTRACT:s[0-9]+]], [[ARG]], 0x10000 -; SI: V_MOV_B32_e32 [[EXTRACT:v[0-9]+]], [[SEXTRACT]] -; SI: BUFFER_STORE_DWORD [[EXTRACT]], +; SI: s_load_dword [[ARG:s[0-9]+]], +; SI: s_bfe_i32 [[SEXTRACT:s[0-9]+]], [[ARG]], 0x10000 +; SI: v_mov_b32_e32 [[EXTRACT:v[0-9]+]], [[SEXTRACT]] +; SI: buffer_store_dword [[EXTRACT]], ; EG: MEM_{{.*}} STORE_{{.*}} [[RES:T[0-9]+\.[XYZW]]], [[ADDR:T[0-9]+.[XYZW]]] ; EG: BFE_INT [[RES]], {{.*}}, 0.0, 1 @@ -21,10 +21,10 @@ define void @sext_in_reg_i1_i32(i32 addrspace(1)* %out, i32 %in) { } ; FUNC-LABEL: {{^}}sext_in_reg_i8_to_i32: -; SI: S_ADD_I32 [[VAL:s[0-9]+]], -; SI: S_SEXT_I32_I8 [[EXTRACT:s[0-9]+]], [[VAL]] -; SI: V_MOV_B32_e32 [[VEXTRACT:v[0-9]+]], [[EXTRACT]] -; SI: BUFFER_STORE_DWORD [[VEXTRACT]], +; SI: s_add_i32 [[VAL:s[0-9]+]], +; SI: s_sext_i32_i8 [[EXTRACT:s[0-9]+]], [[VAL]] +; SI: v_mov_b32_e32 [[VEXTRACT:v[0-9]+]], [[EXTRACT]] +; SI: buffer_store_dword [[VEXTRACT]], ; EG: MEM_{{.*}} STORE_{{.*}} [[RES:T[0-9]+\.[XYZW]]], [[ADDR:T[0-9]+.[XYZW]]] ; EG: ADD_INT @@ -39,10 +39,10 @@ define void @sext_in_reg_i8_to_i32(i32 addrspace(1)* %out, i32 %a, i32 %b) nounw } ; FUNC-LABEL: {{^}}sext_in_reg_i16_to_i32: -; SI: S_ADD_I32 [[VAL:s[0-9]+]], -; SI: S_SEXT_I32_I16 [[EXTRACT:s[0-9]+]], [[VAL]] -; SI: V_MOV_B32_e32 [[VEXTRACT:v[0-9]+]], [[EXTRACT]] -; SI: BUFFER_STORE_DWORD [[VEXTRACT]], +; SI: s_add_i32 [[VAL:s[0-9]+]], +; SI: s_sext_i32_i16 [[EXTRACT:s[0-9]+]], [[VAL]] +; SI: v_mov_b32_e32 [[VEXTRACT:v[0-9]+]], [[EXTRACT]] +; SI: buffer_store_dword [[VEXTRACT]], ; EG: MEM_{{.*}} STORE_{{.*}} [[RES:T[0-9]+\.[XYZW]]], [[ADDR:T[0-9]+.[XYZW]]] ; EG: ADD_INT @@ -57,10 +57,10 @@ define void @sext_in_reg_i16_to_i32(i32 addrspace(1)* %out, i32 %a, i32 %b) noun } ; FUNC-LABEL: {{^}}sext_in_reg_i8_to_v1i32: -; SI: S_ADD_I32 [[VAL:s[0-9]+]], -; SI: S_SEXT_I32_I8 [[EXTRACT:s[0-9]+]], [[VAL]] -; SI: V_MOV_B32_e32 [[VEXTRACT:v[0-9]+]], [[EXTRACT]] -; SI: BUFFER_STORE_DWORD [[VEXTRACT]], +; SI: s_add_i32 [[VAL:s[0-9]+]], +; SI: s_sext_i32_i8 [[EXTRACT:s[0-9]+]], [[VAL]] +; SI: v_mov_b32_e32 [[VEXTRACT:v[0-9]+]], [[EXTRACT]] +; SI: buffer_store_dword [[VEXTRACT]], ; EG: MEM_{{.*}} STORE_{{.*}} [[RES:T[0-9]+\.[XYZW]]], [[ADDR:T[0-9]+.[XYZW]]] ; EG: ADD_INT @@ -75,10 +75,10 @@ define void @sext_in_reg_i8_to_v1i32(<1 x i32> addrspace(1)* %out, <1 x i32> %a, } ; FUNC-LABEL: {{^}}sext_in_reg_i1_to_i64: -; SI: S_MOV_B32 {{s[0-9]+}}, -1 -; SI: S_ADD_I32 [[VAL:s[0-9]+]], -; SI: S_BFE_I32 s{{[0-9]+}}, s{{[0-9]+}}, 0x10000 -; SI: BUFFER_STORE_DWORDX2 +; SI: s_mov_b32 {{s[0-9]+}}, -1 +; SI: s_add_i32 [[VAL:s[0-9]+]], +; SI: s_bfe_i32 s{{[0-9]+}}, s{{[0-9]+}}, 0x10000 +; SI: buffer_store_dwordx2 define void @sext_in_reg_i1_to_i64(i64 addrspace(1)* %out, i64 %a, i64 %b) nounwind { %c = add i64 %a, %b %shl = shl i64 %c, 63 @@ -88,10 +88,10 @@ define void @sext_in_reg_i1_to_i64(i64 addrspace(1)* %out, i64 %a, i64 %b) nounw } ; FUNC-LABEL: {{^}}sext_in_reg_i8_to_i64: -; SI: S_MOV_B32 {{s[0-9]+}}, -1 -; SI: S_ADD_I32 [[VAL:s[0-9]+]], -; SI: S_SEXT_I32_I8 [[EXTRACT:s[0-9]+]], [[VAL]] -; SI: BUFFER_STORE_DWORDX2 +; SI: s_mov_b32 {{s[0-9]+}}, -1 +; SI: s_add_i32 [[VAL:s[0-9]+]], +; SI: s_sext_i32_i8 [[EXTRACT:s[0-9]+]], [[VAL]] +; SI: buffer_store_dwordx2 ; EG: MEM_{{.*}} STORE_{{.*}} [[RES_LO:T[0-9]+\.[XYZW]]], [[ADDR_LO:T[0-9]+.[XYZW]]] ; EG: MEM_{{.*}} STORE_{{.*}} [[RES_HI:T[0-9]+\.[XYZW]]], [[ADDR_HI:T[0-9]+.[XYZW]]] @@ -112,10 +112,10 @@ define void @sext_in_reg_i8_to_i64(i64 addrspace(1)* %out, i64 %a, i64 %b) nounw } ; FUNC-LABEL: {{^}}sext_in_reg_i16_to_i64: -; SI: S_MOV_B32 {{s[0-9]+}}, -1 -; SI: S_ADD_I32 [[VAL:s[0-9]+]], -; SI: S_SEXT_I32_I16 [[EXTRACT:s[0-9]+]], [[VAL]] -; SI: BUFFER_STORE_DWORDX2 +; SI: s_mov_b32 {{s[0-9]+}}, -1 +; SI: s_add_i32 [[VAL:s[0-9]+]], +; SI: s_sext_i32_i16 [[EXTRACT:s[0-9]+]], [[VAL]] +; SI: buffer_store_dwordx2 ; EG: MEM_{{.*}} STORE_{{.*}} [[RES_LO:T[0-9]+\.[XYZW]]], [[ADDR_LO:T[0-9]+.[XYZW]]] ; EG: MEM_{{.*}} STORE_{{.*}} [[RES_HI:T[0-9]+\.[XYZW]]], [[ADDR_HI:T[0-9]+.[XYZW]]] @@ -136,11 +136,11 @@ define void @sext_in_reg_i16_to_i64(i64 addrspace(1)* %out, i64 %a, i64 %b) noun } ; FUNC-LABEL: {{^}}sext_in_reg_i32_to_i64: -; SI: S_LOAD_DWORD -; SI: S_LOAD_DWORD -; SI: S_ADD_I32 [[ADD:s[0-9]+]], -; SI: S_ASHR_I32 s{{[0-9]+}}, [[ADD]], 31 -; SI: BUFFER_STORE_DWORDX2 +; SI: s_load_dword +; SI: s_load_dword +; SI: s_add_i32 [[ADD:s[0-9]+]], +; SI: s_ashr_i32 s{{[0-9]+}}, [[ADD]], 31 +; SI: buffer_store_dwordx2 ; EG: MEM_{{.*}} STORE_{{.*}} [[RES_LO:T[0-9]+\.[XYZW]]], [[ADDR_LO:T[0-9]+.[XYZW]]] ; EG: MEM_{{.*}} STORE_{{.*}} [[RES_HI:T[0-9]+\.[XYZW]]], [[ADDR_HI:T[0-9]+.[XYZW]]] @@ -162,9 +162,9 @@ define void @sext_in_reg_i32_to_i64(i64 addrspace(1)* %out, i64 %a, i64 %b) noun ; This is broken on Evergreen for some reason related to the <1 x i64> kernel arguments. ; XFUNC-LABEL: {{^}}sext_in_reg_i8_to_v1i64: -; XSI: S_BFE_I32 [[EXTRACT:s[0-9]+]], {{s[0-9]+}}, 524288 -; XSI: S_ASHR_I32 {{v[0-9]+}}, [[EXTRACT]], 31 -; XSI: BUFFER_STORE_DWORD +; XSI: s_bfe_i32 [[EXTRACT:s[0-9]+]], {{s[0-9]+}}, 524288 +; XSI: s_ashr_i32 {{v[0-9]+}}, [[EXTRACT]], 31 +; XSI: buffer_store_dword ; XEG: BFE_INT ; XEG: ASHR ; define void @sext_in_reg_i8_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i64> %a, <1 x i64> %b) nounwind { @@ -176,9 +176,9 @@ define void @sext_in_reg_i32_to_i64(i64 addrspace(1)* %out, i64 %a, i64 %b) noun ; } ; FUNC-LABEL: {{^}}sext_in_reg_i1_in_i32_other_amount: -; SI-NOT: BFE -; SI: S_LSHL_B32 [[REG:s[0-9]+]], {{s[0-9]+}}, 6 -; SI: S_ASHR_I32 {{s[0-9]+}}, [[REG]], 7 +; SI-NOT: {{[^@]}}bfe +; SI: s_lshl_b32 [[REG:s[0-9]+]], {{s[0-9]+}}, 6 +; SI: s_ashr_i32 {{s[0-9]+}}, [[REG]], 7 ; EG: MEM_{{.*}} STORE_{{.*}} [[RES:T[0-9]+\.[XYZW]]], [[ADDR:T[0-9]+.[XYZW]]] ; EG-NOT: BFE @@ -195,11 +195,11 @@ define void @sext_in_reg_i1_in_i32_other_amount(i32 addrspace(1)* %out, i32 %a, } ; FUNC-LABEL: {{^}}sext_in_reg_v2i1_in_v2i32_other_amount: -; SI-DAG: S_LSHL_B32 [[REG0:s[0-9]+]], {{s[0-9]}}, 6 -; SI-DAG: S_ASHR_I32 {{s[0-9]+}}, [[REG0]], 7 -; SI-DAG: S_LSHL_B32 [[REG1:s[0-9]+]], {{s[0-9]}}, 6 -; SI-DAG: S_ASHR_I32 {{s[0-9]+}}, [[REG1]], 7 -; SI: S_ENDPGM +; SI-DAG: s_lshl_b32 [[REG0:s[0-9]+]], {{s[0-9]}}, 6 +; SI-DAG: s_ashr_i32 {{s[0-9]+}}, [[REG0]], 7 +; SI-DAG: s_lshl_b32 [[REG1:s[0-9]+]], {{s[0-9]}}, 6 +; SI-DAG: s_ashr_i32 {{s[0-9]+}}, [[REG1]], 7 +; SI: s_endpgm ; EG: MEM_{{.*}} STORE_{{.*}} [[RES:T[0-9]+]]{{\.[XYZW][XYZW]}}, [[ADDR:T[0-9]+.[XYZW]]] ; EG-NOT: BFE @@ -219,9 +219,9 @@ define void @sext_in_reg_v2i1_in_v2i32_other_amount(<2 x i32> addrspace(1)* %out ; FUNC-LABEL: {{^}}sext_in_reg_v2i1_to_v2i32: -; SI: S_BFE_I32 {{s[0-9]+}}, {{s[0-9]+}}, 0x10000 -; SI: S_BFE_I32 {{s[0-9]+}}, {{s[0-9]+}}, 0x10000 -; SI: BUFFER_STORE_DWORDX2 +; SI: s_bfe_i32 {{s[0-9]+}}, {{s[0-9]+}}, 0x10000 +; SI: s_bfe_i32 {{s[0-9]+}}, {{s[0-9]+}}, 0x10000 +; SI: buffer_store_dwordx2 ; EG: MEM_{{.*}} STORE_{{.*}} [[RES:T[0-9]+]]{{\.[XYZW][XYZW]}}, [[ADDR:T[0-9]+.[XYZW]]] ; EG: BFE_INT [[RES]] @@ -236,11 +236,11 @@ define void @sext_in_reg_v2i1_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x i32> % } ; FUNC-LABEL: {{^}}sext_in_reg_v4i1_to_v4i32: -; SI: S_BFE_I32 {{s[0-9]+}}, {{s[0-9]+}}, 0x10000 -; SI: S_BFE_I32 {{s[0-9]+}}, {{s[0-9]+}}, 0x10000 -; SI: S_BFE_I32 {{s[0-9]+}}, {{s[0-9]+}}, 0x10000 -; SI: S_BFE_I32 {{s[0-9]+}}, {{s[0-9]+}}, 0x10000 -; SI: BUFFER_STORE_DWORDX4 +; SI: s_bfe_i32 {{s[0-9]+}}, {{s[0-9]+}}, 0x10000 +; SI: s_bfe_i32 {{s[0-9]+}}, {{s[0-9]+}}, 0x10000 +; SI: s_bfe_i32 {{s[0-9]+}}, {{s[0-9]+}}, 0x10000 +; SI: s_bfe_i32 {{s[0-9]+}}, {{s[0-9]+}}, 0x10000 +; SI: buffer_store_dwordx4 ; EG: MEM_{{.*}} STORE_{{.*}} [[RES:T[0-9]+]]{{\.[XYZW][XYZW][XYZW][XYZW]}}, [[ADDR:T[0-9]+.[XYZW]]] ; EG: BFE_INT [[RES]] @@ -257,9 +257,9 @@ define void @sext_in_reg_v4i1_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i32> % } ; FUNC-LABEL: {{^}}sext_in_reg_v2i8_to_v2i32: -; SI: S_SEXT_I32_I8 {{s[0-9]+}}, {{s[0-9]+}} -; SI: S_SEXT_I32_I8 {{s[0-9]+}}, {{s[0-9]+}} -; SI: BUFFER_STORE_DWORDX2 +; SI: s_sext_i32_i8 {{s[0-9]+}}, {{s[0-9]+}} +; SI: s_sext_i32_i8 {{s[0-9]+}}, {{s[0-9]+}} +; SI: buffer_store_dwordx2 ; EG: MEM_{{.*}} STORE_{{.*}} [[RES:T[0-9]+]]{{\.[XYZW][XYZW]}}, [[ADDR:T[0-9]+.[XYZW]]] ; EG: BFE_INT [[RES]] @@ -274,11 +274,11 @@ define void @sext_in_reg_v2i8_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x i32> % } ; FUNC-LABEL: {{^}}sext_in_reg_v4i8_to_v4i32: -; SI: S_SEXT_I32_I8 {{s[0-9]+}}, {{s[0-9]+}} -; SI: S_SEXT_I32_I8 {{s[0-9]+}}, {{s[0-9]+}} -; SI: S_SEXT_I32_I8 {{s[0-9]+}}, {{s[0-9]+}} -; SI: S_SEXT_I32_I8 {{s[0-9]+}}, {{s[0-9]+}} -; SI: BUFFER_STORE_DWORDX4 +; SI: s_sext_i32_i8 {{s[0-9]+}}, {{s[0-9]+}} +; SI: s_sext_i32_i8 {{s[0-9]+}}, {{s[0-9]+}} +; SI: s_sext_i32_i8 {{s[0-9]+}}, {{s[0-9]+}} +; SI: s_sext_i32_i8 {{s[0-9]+}}, {{s[0-9]+}} +; SI: buffer_store_dwordx4 ; EG: MEM_{{.*}} STORE_{{.*}} [[RES:T[0-9]+]]{{\.[XYZW][XYZW][XYZW][XYZW]}}, [[ADDR:T[0-9]+.[XYZW]]] ; EG: BFE_INT [[RES]] @@ -295,9 +295,9 @@ define void @sext_in_reg_v4i8_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i32> % } ; FUNC-LABEL: {{^}}sext_in_reg_v2i16_to_v2i32: -; SI: S_SEXT_I32_I16 {{s[0-9]+}}, {{s[0-9]+}} -; SI: S_SEXT_I32_I16 {{s[0-9]+}}, {{s[0-9]+}} -; SI: BUFFER_STORE_DWORDX2 +; SI: s_sext_i32_i16 {{s[0-9]+}}, {{s[0-9]+}} +; SI: s_sext_i32_i16 {{s[0-9]+}}, {{s[0-9]+}} +; SI: buffer_store_dwordx2 ; EG: MEM_{{.*}} STORE_{{.*}} [[RES:T[0-9]+]]{{\.[XYZW][XYZW]}}, [[ADDR:T[0-9]+.[XYZW]]] ; EG: BFE_INT [[RES]] @@ -336,10 +336,10 @@ define void @testcase_3(i8 addrspace(1)* %out, i8 %a) nounwind { } ; FUNC-LABEL: {{^}}vgpr_sext_in_reg_v4i8_to_v4i32: -; SI: V_BFE_I32 [[EXTRACT:v[0-9]+]], {{v[0-9]+}}, 0, 8 -; SI: V_BFE_I32 [[EXTRACT:v[0-9]+]], {{v[0-9]+}}, 0, 8 -; SI: V_BFE_I32 [[EXTRACT:v[0-9]+]], {{v[0-9]+}}, 0, 8 -; SI: V_BFE_I32 [[EXTRACT:v[0-9]+]], {{v[0-9]+}}, 0, 8 +; SI: v_bfe_i32 [[EXTRACT:v[0-9]+]], {{v[0-9]+}}, 0, 8 +; SI: v_bfe_i32 [[EXTRACT:v[0-9]+]], {{v[0-9]+}}, 0, 8 +; SI: v_bfe_i32 [[EXTRACT:v[0-9]+]], {{v[0-9]+}}, 0, 8 +; SI: v_bfe_i32 [[EXTRACT:v[0-9]+]], {{v[0-9]+}}, 0, 8 define void @vgpr_sext_in_reg_v4i8_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i32> addrspace(1)* %a, <4 x i32> addrspace(1)* %b) nounwind { %loada = load <4 x i32> addrspace(1)* %a, align 16 %loadb = load <4 x i32> addrspace(1)* %b, align 16 @@ -351,8 +351,8 @@ define void @vgpr_sext_in_reg_v4i8_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i } ; FUNC-LABEL: {{^}}vgpr_sext_in_reg_v4i16_to_v4i32: -; SI: V_BFE_I32 [[EXTRACT:v[0-9]+]], {{v[0-9]+}}, 0, 16 -; SI: V_BFE_I32 [[EXTRACT:v[0-9]+]], {{v[0-9]+}}, 0, 16 +; SI: v_bfe_i32 [[EXTRACT:v[0-9]+]], {{v[0-9]+}}, 0, 16 +; SI: v_bfe_i32 [[EXTRACT:v[0-9]+]], {{v[0-9]+}}, 0, 16 define void @vgpr_sext_in_reg_v4i16_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i32> addrspace(1)* %a, <4 x i32> addrspace(1)* %b) nounwind { %loada = load <4 x i32> addrspace(1)* %a, align 16 %loadb = load <4 x i32> addrspace(1)* %b, align 16 @@ -367,10 +367,10 @@ define void @vgpr_sext_in_reg_v4i16_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x ; when computeKnownBitsForTargetNode is implemented for imax. ; FUNC-LABEL: {{^}}sext_in_reg_to_illegal_type: -; SI: BUFFER_LOAD_SBYTE -; SI: V_MAX_I32 -; SI: V_BFE_I32 -; SI: BUFFER_STORE_SHORT +; SI: buffer_load_sbyte +; SI: v_max_i32 +; SI: v_bfe_i32 +; SI: buffer_store_short define void @sext_in_reg_to_illegal_type(i16 addrspace(1)* nocapture %out, i8 addrspace(1)* nocapture %src) nounwind { %tmp5 = load i8 addrspace(1)* %src, align 1 %tmp2 = sext i8 %tmp5 to i32 @@ -384,8 +384,8 @@ define void @sext_in_reg_to_illegal_type(i16 addrspace(1)* nocapture %out, i8 ad declare i32 @llvm.AMDGPU.bfe.i32(i32, i32, i32) nounwind readnone ; FUNC-LABEL: {{^}}bfe_0_width: -; SI-NOT: BFE -; SI: S_ENDPGM +; SI-NOT: {{[^@]}}bfe +; SI: s_endpgm define void @bfe_0_width(i32 addrspace(1)* %out, i32 addrspace(1)* %ptr) nounwind { %load = load i32 addrspace(1)* %ptr, align 4 %bfe = call i32 @llvm.AMDGPU.bfe.i32(i32 %load, i32 8, i32 0) nounwind readnone @@ -394,9 +394,9 @@ define void @bfe_0_width(i32 addrspace(1)* %out, i32 addrspace(1)* %ptr) nounwin } ; FUNC-LABEL: {{^}}bfe_8_bfe_8: -; SI: V_BFE_I32 -; SI-NOT: BFE -; SI: S_ENDPGM +; SI: v_bfe_i32 +; SI-NOT: {{[^@]}}bfe +; SI: s_endpgm define void @bfe_8_bfe_8(i32 addrspace(1)* %out, i32 addrspace(1)* %ptr) nounwind { %load = load i32 addrspace(1)* %ptr, align 4 %bfe0 = call i32 @llvm.AMDGPU.bfe.i32(i32 %load, i32 0, i32 8) nounwind readnone @@ -406,8 +406,8 @@ define void @bfe_8_bfe_8(i32 addrspace(1)* %out, i32 addrspace(1)* %ptr) nounwin } ; FUNC-LABEL: {{^}}bfe_8_bfe_16: -; SI: V_BFE_I32 v{{[0-9]+}}, v{{[0-9]+}}, 0, 8 -; SI: S_ENDPGM +; SI: v_bfe_i32 v{{[0-9]+}}, v{{[0-9]+}}, 0, 8 +; SI: s_endpgm define void @bfe_8_bfe_16(i32 addrspace(1)* %out, i32 addrspace(1)* %ptr) nounwind { %load = load i32 addrspace(1)* %ptr, align 4 %bfe0 = call i32 @llvm.AMDGPU.bfe.i32(i32 %load, i32 0, i32 8) nounwind readnone @@ -418,9 +418,9 @@ define void @bfe_8_bfe_16(i32 addrspace(1)* %out, i32 addrspace(1)* %ptr) nounwi ; This really should be folded into 1 ; FUNC-LABEL: {{^}}bfe_16_bfe_8: -; SI: V_BFE_I32 v{{[0-9]+}}, v{{[0-9]+}}, 0, 8 -; SI-NOT: BFE -; SI: S_ENDPGM +; SI: v_bfe_i32 v{{[0-9]+}}, v{{[0-9]+}}, 0, 8 +; SI-NOT: {{[^@]}}bfe +; SI: s_endpgm define void @bfe_16_bfe_8(i32 addrspace(1)* %out, i32 addrspace(1)* %ptr) nounwind { %load = load i32 addrspace(1)* %ptr, align 4 %bfe0 = call i32 @llvm.AMDGPU.bfe.i32(i32 %load, i32 0, i32 16) nounwind readnone @@ -431,9 +431,9 @@ define void @bfe_16_bfe_8(i32 addrspace(1)* %out, i32 addrspace(1)* %ptr) nounwi ; Make sure there isn't a redundant BFE ; FUNC-LABEL: {{^}}sext_in_reg_i8_to_i32_bfe: -; SI: S_SEXT_I32_I8 s{{[0-9]+}}, s{{[0-9]+}} -; SI-NOT: BFE -; SI: S_ENDPGM +; SI: s_sext_i32_i8 s{{[0-9]+}}, s{{[0-9]+}} +; SI-NOT: {{[^@]}}bfe +; SI: s_endpgm define void @sext_in_reg_i8_to_i32_bfe(i32 addrspace(1)* %out, i32 %a, i32 %b) nounwind { %c = add i32 %a, %b ; add to prevent folding into extload %bfe = call i32 @llvm.AMDGPU.bfe.i32(i32 %c, i32 0, i32 8) nounwind readnone @@ -454,9 +454,9 @@ define void @sext_in_reg_i8_to_i32_bfe_wrong(i32 addrspace(1)* %out, i32 %a, i32 } ; FUNC-LABEL: {{^}}sextload_i8_to_i32_bfe: -; SI: BUFFER_LOAD_SBYTE -; SI-NOT: BFE -; SI: S_ENDPGM +; SI: buffer_load_sbyte +; SI-NOT: {{[^@]}}bfe +; SI: s_endpgm define void @sextload_i8_to_i32_bfe(i32 addrspace(1)* %out, i8 addrspace(1)* %ptr) nounwind { %load = load i8 addrspace(1)* %ptr, align 1 %sext = sext i8 %load to i32 @@ -469,8 +469,8 @@ define void @sextload_i8_to_i32_bfe(i32 addrspace(1)* %out, i8 addrspace(1)* %pt ; FUNC-LABEL: {{^}}sextload_i8_to_i32_bfe_0: ; SI: .text -; SI-NOT: BFE -; SI: S_ENDPGM +; SI-NOT: {{[^@]}}bfe +; SI: s_endpgm define void @sextload_i8_to_i32_bfe_0(i32 addrspace(1)* %out, i8 addrspace(1)* %ptr) nounwind { %load = load i8 addrspace(1)* %ptr, align 1 %sext = sext i8 %load to i32 @@ -482,10 +482,10 @@ define void @sextload_i8_to_i32_bfe_0(i32 addrspace(1)* %out, i8 addrspace(1)* % } ; FUNC-LABEL: {{^}}sext_in_reg_i1_bfe_offset_0: -; SI-NOT: SHR -; SI-NOT: SHL -; SI: V_BFE_I32 v{{[0-9]+}}, v{{[0-9]+}}, 0, 1 -; SI: S_ENDPGM +; SI-NOT: shr +; SI-NOT: shl +; SI: v_bfe_i32 v{{[0-9]+}}, v{{[0-9]+}}, 0, 1 +; SI: s_endpgm define void @sext_in_reg_i1_bfe_offset_0(i32 addrspace(1)* %out, i32 addrspace(1)* %in) nounwind { %x = load i32 addrspace(1)* %in, align 4 %shl = shl i32 %x, 31 @@ -496,11 +496,11 @@ define void @sext_in_reg_i1_bfe_offset_0(i32 addrspace(1)* %out, i32 addrspace(1 } ; FUNC-LABEL: {{^}}sext_in_reg_i1_bfe_offset_1: -; SI: BUFFER_LOAD_DWORD -; SI-NOT: SHL -; SI-NOT: SHR -; SI: V_BFE_I32 v{{[0-9]+}}, v{{[0-9]+}}, 1, 1 -; SI: S_ENDPGM +; SI: buffer_load_dword +; SI-NOT: shl +; SI-NOT: shr +; SI: v_bfe_i32 v{{[0-9]+}}, v{{[0-9]+}}, 1, 1 +; SI: s_endpgm define void @sext_in_reg_i1_bfe_offset_1(i32 addrspace(1)* %out, i32 addrspace(1)* %in) nounwind { %x = load i32 addrspace(1)* %in, align 4 %shl = shl i32 %x, 30 @@ -511,11 +511,11 @@ define void @sext_in_reg_i1_bfe_offset_1(i32 addrspace(1)* %out, i32 addrspace(1 } ; FUNC-LABEL: {{^}}sext_in_reg_i2_bfe_offset_1: -; SI: BUFFER_LOAD_DWORD -; SI: V_LSHLREV_B32_e32 v{{[0-9]+}}, 30, v{{[0-9]+}} -; SI: V_ASHRREV_I32_e32 v{{[0-9]+}}, 30, v{{[0-9]+}} -; SI: V_BFE_I32 v{{[0-9]+}}, v{{[0-9]+}}, 1, 2 -; SI: S_ENDPGM +; SI: buffer_load_dword +; SI: v_lshlrev_b32_e32 v{{[0-9]+}}, 30, v{{[0-9]+}} +; SI: v_ashrrev_i32_e32 v{{[0-9]+}}, 30, v{{[0-9]+}} +; SI: v_bfe_i32 v{{[0-9]+}}, v{{[0-9]+}}, 1, 2 +; SI: s_endpgm define void @sext_in_reg_i2_bfe_offset_1(i32 addrspace(1)* %out, i32 addrspace(1)* %in) nounwind { %x = load i32 addrspace(1)* %in, align 4 %shl = shl i32 %x, 30 |