brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.8 KiB · 1b93ae0 Raw
198 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -O0 -mtriple=x86_64-unknown-unknown -mattr=+amx-tile,+amx-movrs | FileCheck %s3; RUN: llc < %s -O0 -mtriple=x86_64-unknown-unknown -mattr=+amx-tile,+amx-movrs,+egpr --show-mc-encoding | FileCheck %s --check-prefix=EGPR4 5define void @test_amx_internal(i16 %m, i16 %n, ptr %buf, i64 %s) {6; CHECK-LABEL: test_amx_internal:7; CHECK:       # %bb.0: # %entry8; CHECK-NEXT:    pushq %rbp9; CHECK-NEXT:    .cfi_def_cfa_offset 1610; CHECK-NEXT:    .cfi_offset %rbp, -1611; CHECK-NEXT:    movq %rsp, %rbp12; CHECK-NEXT:    .cfi_def_cfa_register %rbp13; CHECK-NEXT:    andq $-1024, %rsp # imm = 0xFC0014; CHECK-NEXT:    subq $3072, %rsp # imm = 0xC0015; CHECK-NEXT:    xorps %xmm0, %xmm016; CHECK-NEXT:    movups %xmm0, {{[0-9]+}}(%rsp)17; CHECK-NEXT:    movups %xmm0, {{[0-9]+}}(%rsp)18; CHECK-NEXT:    movups %xmm0, {{[0-9]+}}(%rsp)19; CHECK-NEXT:    movups %xmm0, {{[0-9]+}}(%rsp)20; CHECK-NEXT:    movb $1, {{[0-9]+}}(%rsp)21; CHECK-NEXT:    movq %rcx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill22; CHECK-NEXT:    movl %esi, %eax23; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload24; CHECK-NEXT:    movw %ax, %cx25; CHECK-NEXT:    movw %di, %ax26; CHECK-NEXT:    # implicit-def: $al27; CHECK-NEXT:    movb %al, {{[0-9]+}}(%rsp)28; CHECK-NEXT:    movw %cx, {{[0-9]+}}(%rsp)29; CHECK-NEXT:    ldtilecfg {{[0-9]+}}(%rsp)30; CHECK-NEXT:    tileloaddrs (%rdx,%rsi), %tmm031; CHECK-NEXT:    movl $64, %esi32; CHECK-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx33; CHECK-NEXT:    tilestored %tmm0, (%rdx,%rsi)34; CHECK-NEXT:    movq %rbp, %rsp35; CHECK-NEXT:    popq %rbp36; CHECK-NEXT:    .cfi_def_cfa %rsp, 837; CHECK-NEXT:    tilerelease38; CHECK-NEXT:    retq39;40; EGPR-LABEL: test_amx_internal:41; EGPR:       # %bb.0: # %entry42; EGPR-NEXT:    pushq %rbp # encoding: [0x55]43; EGPR-NEXT:    .cfi_def_cfa_offset 1644; EGPR-NEXT:    .cfi_offset %rbp, -1645; EGPR-NEXT:    movq %rsp, %rbp # encoding: [0x48,0x89,0xe5]46; EGPR-NEXT:    .cfi_def_cfa_register %rbp47; EGPR-NEXT:    andq $-1024, %rsp # encoding: [0x48,0x81,0xe4,0x00,0xfc,0xff,0xff]48; EGPR-NEXT:    # imm = 0xFC0049; EGPR-NEXT:    subq $3072, %rsp # encoding: [0x48,0x81,0xec,0x00,0x0c,0x00,0x00]50; EGPR-NEXT:    # imm = 0xC0051; EGPR-NEXT:    xorps %xmm0, %xmm0 # encoding: [0x0f,0x57,0xc0]52; EGPR-NEXT:    movups %xmm0, {{[0-9]+}}(%rsp) # encoding: [0x0f,0x11,0x84,0x24,0xc0,0x03,0x00,0x00]53; EGPR-NEXT:    movups %xmm0, {{[0-9]+}}(%rsp) # encoding: [0x0f,0x11,0x84,0x24,0xd0,0x03,0x00,0x00]54; EGPR-NEXT:    movups %xmm0, {{[0-9]+}}(%rsp) # encoding: [0x0f,0x11,0x84,0x24,0xe0,0x03,0x00,0x00]55; EGPR-NEXT:    movups %xmm0, {{[0-9]+}}(%rsp) # encoding: [0x0f,0x11,0x84,0x24,0xf0,0x03,0x00,0x00]56; EGPR-NEXT:    movb $1, {{[0-9]+}}(%rsp) # encoding: [0xc6,0x84,0x24,0xc0,0x03,0x00,0x00,0x01]57; EGPR-NEXT:    movq %rcx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill58; EGPR-NEXT:    # encoding: [0x48,0x89,0x8c,0x24,0xb8,0x03,0x00,0x00]59; EGPR-NEXT:    movl %esi, %eax # encoding: [0x89,0xf0]60; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload61; EGPR-NEXT:    # encoding: [0x48,0x8b,0xb4,0x24,0xb8,0x03,0x00,0x00]62; EGPR-NEXT:    movw %ax, %cx # encoding: [0x66,0x89,0xc1]63; EGPR-NEXT:    movw %di, %ax # encoding: [0x66,0x89,0xf8]64; EGPR-NEXT:    # implicit-def: $al65; EGPR-NEXT:    movb %al, {{[0-9]+}}(%rsp) # encoding: [0x88,0x84,0x24,0xf0,0x03,0x00,0x00]66; EGPR-NEXT:    movw %cx, {{[0-9]+}}(%rsp) # encoding: [0x66,0x89,0x8c,0x24,0xd0,0x03,0x00,0x00]67; EGPR-NEXT:    ldtilecfg {{[0-9]+}}(%rsp) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x78,0x49,0x84,0x24,0xc0,0x03,0x00,0x00]68; EGPR-NEXT:    tileloaddrs (%rdx,%rsi), %tmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7b,0x4a,0x04,0x32]69; EGPR-NEXT:    movl $64, %esi # encoding: [0xbe,0x40,0x00,0x00,0x00]70; EGPR-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx # encoding: [0x48,0x8d,0x94,0x24,0x00,0x04,0x00,0x00]71; EGPR-NEXT:    tilestored %tmm0, (%rdx,%rsi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7a,0x4b,0x04,0x32]72; EGPR-NEXT:    movq %rbp, %rsp # encoding: [0x48,0x89,0xec]73; EGPR-NEXT:    popq %rbp # encoding: [0x5d]74; EGPR-NEXT:    .cfi_def_cfa %rsp, 875; EGPR-NEXT:    tilerelease # encoding: [0xc4,0xe2,0x78,0x49,0xc0]76; EGPR-NEXT:    retq # encoding: [0xc3]77entry:78  %t1 = call x86_amx @llvm.x86.tileloaddrs64.internal(i16 %m, i16 %n, ptr %buf, i64 %s)79  %t2 = call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %t1)80  ret void81}82declare x86_amx @llvm.x86.tileloaddrs64.internal(i16, i16, ptr, i64)83 84define void @test_amx_old(i16 %m, i16 %n, ptr %buf) {85; CHECK-LABEL: test_amx_old:86; CHECK:       # %bb.0: # %entry87; CHECK-NEXT:    movl $32, %eax88; CHECK-NEXT:    tileloaddrs (%rdx,%rax), %tmm289; CHECK-NEXT:    retq90;91; EGPR-LABEL: test_amx_old:92; EGPR:       # %bb.0: # %entry93; EGPR-NEXT:    movl $32, %eax # encoding: [0xb8,0x20,0x00,0x00,0x00]94; EGPR-NEXT:    tileloaddrs (%rdx,%rax), %tmm2 # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7b,0x4a,0x14,0x02]95; EGPR-NEXT:    retq # encoding: [0xc3]96entry:97  call void @llvm.x86.tileloaddrs64(i8 2, ptr %buf, i64 32)98  ret void99}100declare void @llvm.x86.tileloaddrs64(i8 immarg, ptr, i64)101 102define void @test_amx_t1_internal(i16 %m, i16 %n, ptr %buf, i64 %s) {103; CHECK-LABEL: test_amx_t1_internal:104; CHECK:       # %bb.0: # %entry105; CHECK-NEXT:    pushq %rbp106; CHECK-NEXT:    .cfi_def_cfa_offset 16107; CHECK-NEXT:    .cfi_offset %rbp, -16108; CHECK-NEXT:    movq %rsp, %rbp109; CHECK-NEXT:    .cfi_def_cfa_register %rbp110; CHECK-NEXT:    andq $-1024, %rsp # imm = 0xFC00111; CHECK-NEXT:    subq $3072, %rsp # imm = 0xC00112; CHECK-NEXT:    xorps %xmm0, %xmm0113; CHECK-NEXT:    movups %xmm0, {{[0-9]+}}(%rsp)114; CHECK-NEXT:    movups %xmm0, {{[0-9]+}}(%rsp)115; CHECK-NEXT:    movups %xmm0, {{[0-9]+}}(%rsp)116; CHECK-NEXT:    movups %xmm0, {{[0-9]+}}(%rsp)117; CHECK-NEXT:    movb $1, {{[0-9]+}}(%rsp)118; CHECK-NEXT:    movq %rcx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill119; CHECK-NEXT:    movl %esi, %eax120; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload121; CHECK-NEXT:    movw %ax, %cx122; CHECK-NEXT:    movw %di, %ax123; CHECK-NEXT:    # implicit-def: $al124; CHECK-NEXT:    movb %al, {{[0-9]+}}(%rsp)125; CHECK-NEXT:    movw %cx, {{[0-9]+}}(%rsp)126; CHECK-NEXT:    ldtilecfg {{[0-9]+}}(%rsp)127; CHECK-NEXT:    tileloaddrst1 (%rdx,%rsi), %tmm0128; CHECK-NEXT:    movl $64, %esi129; CHECK-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx130; CHECK-NEXT:    tilestored %tmm0, (%rdx,%rsi)131; CHECK-NEXT:    movq %rbp, %rsp132; CHECK-NEXT:    popq %rbp133; CHECK-NEXT:    .cfi_def_cfa %rsp, 8134; CHECK-NEXT:    tilerelease135; CHECK-NEXT:    retq136;137; EGPR-LABEL: test_amx_t1_internal:138; EGPR:       # %bb.0: # %entry139; EGPR-NEXT:    pushq %rbp # encoding: [0x55]140; EGPR-NEXT:    .cfi_def_cfa_offset 16141; EGPR-NEXT:    .cfi_offset %rbp, -16142; EGPR-NEXT:    movq %rsp, %rbp # encoding: [0x48,0x89,0xe5]143; EGPR-NEXT:    .cfi_def_cfa_register %rbp144; EGPR-NEXT:    andq $-1024, %rsp # encoding: [0x48,0x81,0xe4,0x00,0xfc,0xff,0xff]145; EGPR-NEXT:    # imm = 0xFC00146; EGPR-NEXT:    subq $3072, %rsp # encoding: [0x48,0x81,0xec,0x00,0x0c,0x00,0x00]147; EGPR-NEXT:    # imm = 0xC00148; EGPR-NEXT:    xorps %xmm0, %xmm0 # encoding: [0x0f,0x57,0xc0]149; EGPR-NEXT:    movups %xmm0, {{[0-9]+}}(%rsp) # encoding: [0x0f,0x11,0x84,0x24,0xc0,0x03,0x00,0x00]150; EGPR-NEXT:    movups %xmm0, {{[0-9]+}}(%rsp) # encoding: [0x0f,0x11,0x84,0x24,0xd0,0x03,0x00,0x00]151; EGPR-NEXT:    movups %xmm0, {{[0-9]+}}(%rsp) # encoding: [0x0f,0x11,0x84,0x24,0xe0,0x03,0x00,0x00]152; EGPR-NEXT:    movups %xmm0, {{[0-9]+}}(%rsp) # encoding: [0x0f,0x11,0x84,0x24,0xf0,0x03,0x00,0x00]153; EGPR-NEXT:    movb $1, {{[0-9]+}}(%rsp) # encoding: [0xc6,0x84,0x24,0xc0,0x03,0x00,0x00,0x01]154; EGPR-NEXT:    movq %rcx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill155; EGPR-NEXT:    # encoding: [0x48,0x89,0x8c,0x24,0xb8,0x03,0x00,0x00]156; EGPR-NEXT:    movl %esi, %eax # encoding: [0x89,0xf0]157; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload158; EGPR-NEXT:    # encoding: [0x48,0x8b,0xb4,0x24,0xb8,0x03,0x00,0x00]159; EGPR-NEXT:    movw %ax, %cx # encoding: [0x66,0x89,0xc1]160; EGPR-NEXT:    movw %di, %ax # encoding: [0x66,0x89,0xf8]161; EGPR-NEXT:    # implicit-def: $al162; EGPR-NEXT:    movb %al, {{[0-9]+}}(%rsp) # encoding: [0x88,0x84,0x24,0xf0,0x03,0x00,0x00]163; EGPR-NEXT:    movw %cx, {{[0-9]+}}(%rsp) # encoding: [0x66,0x89,0x8c,0x24,0xd0,0x03,0x00,0x00]164; EGPR-NEXT:    ldtilecfg {{[0-9]+}}(%rsp) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x78,0x49,0x84,0x24,0xc0,0x03,0x00,0x00]165; EGPR-NEXT:    tileloaddrst1 (%rdx,%rsi), %tmm0 # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x4a,0x04,0x32]166; EGPR-NEXT:    movl $64, %esi # encoding: [0xbe,0x40,0x00,0x00,0x00]167; EGPR-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx # encoding: [0x48,0x8d,0x94,0x24,0x00,0x04,0x00,0x00]168; EGPR-NEXT:    tilestored %tmm0, (%rdx,%rsi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7a,0x4b,0x04,0x32]169; EGPR-NEXT:    movq %rbp, %rsp # encoding: [0x48,0x89,0xec]170; EGPR-NEXT:    popq %rbp # encoding: [0x5d]171; EGPR-NEXT:    .cfi_def_cfa %rsp, 8172; EGPR-NEXT:    tilerelease # encoding: [0xc4,0xe2,0x78,0x49,0xc0]173; EGPR-NEXT:    retq # encoding: [0xc3]174entry:175  %t1 = call x86_amx @llvm.x86.tileloaddrst164.internal(i16 %m, i16 %n, ptr %buf, i64 %s)176  %t2 = call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %t1)177  ret void178}179declare x86_amx @llvm.x86.tileloaddrst164.internal(i16, i16, ptr, i64)180 181define void @test_amx_t1_old(i16 %m, i16 %n, ptr %buf) {182; CHECK-LABEL: test_amx_t1_old:183; CHECK:       # %bb.0: # %entry184; CHECK-NEXT:    movl $32, %eax185; CHECK-NEXT:    tileloaddrst1 (%rdx,%rax), %tmm2186; CHECK-NEXT:    retq187;188; EGPR-LABEL: test_amx_t1_old:189; EGPR:       # %bb.0: # %entry190; EGPR-NEXT:    movl $32, %eax # encoding: [0xb8,0x20,0x00,0x00,0x00]191; EGPR-NEXT:    tileloaddrst1 (%rdx,%rax), %tmm2 # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x4a,0x14,0x02]192; EGPR-NEXT:    retq # encoding: [0xc3]193entry:194  call void @llvm.x86.tileloaddrst164(i8 2, ptr %buf, i64 32)195  ret void196}197declare void @llvm.x86.tileloaddrst164(i8 immarg, ptr, i64)198