xref: /llvm-project/llvm/test/CodeGen/X86/apx/domain-reassignment.mir (revision c91f2a259f378a9a4817c675b9a01557fcf7cae8)
107a5e31cSFreddy Ye# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
23e4caa9dSFreddy Ye# RUN: llc -run-pass x86-domain-reassignment -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw,+avx512dq,+ndd -o - %s | FileCheck %s
307a5e31cSFreddy Ye--- |
407a5e31cSFreddy Ye  ; ModuleID = '../test/CodeGen/X86/gpr-to-mask.ll'
507a5e31cSFreddy Ye  source_filename = "../test/CodeGen/X86/gpr-to-mask.ll"
607a5e31cSFreddy Ye  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
707a5e31cSFreddy Ye  target triple = "x86_64-unknown-unknown"
807a5e31cSFreddy Ye
907a5e31cSFreddy Ye  define void @test_fcmp_storefloat(i1 %cond, ptr %fptr, float %f1, float %f2, float %f3, float %f4, float %f5, float %f6) #0 {
1007a5e31cSFreddy Ye  entry:
1107a5e31cSFreddy Ye    br i1 %cond, label %if, label %else
1207a5e31cSFreddy Ye
1307a5e31cSFreddy Ye  if:                                               ; preds = %entry
1407a5e31cSFreddy Ye    %cmp1 = fcmp oeq float %f3, %f4
1507a5e31cSFreddy Ye    br label %exit
1607a5e31cSFreddy Ye
1707a5e31cSFreddy Ye  else:                                             ; preds = %entry
1807a5e31cSFreddy Ye    %cmp2 = fcmp oeq float %f5, %f6
1907a5e31cSFreddy Ye    br label %exit
2007a5e31cSFreddy Ye
2107a5e31cSFreddy Ye  exit:                                             ; preds = %else, %if
2207a5e31cSFreddy Ye    %val = phi i1 [ %cmp1, %if ], [ %cmp2, %else ]
2307a5e31cSFreddy Ye    %selected = select i1 %val, float %f1, float %f2
2407a5e31cSFreddy Ye    store float %selected, ptr %fptr
2507a5e31cSFreddy Ye    ret void
2607a5e31cSFreddy Ye  }
2707a5e31cSFreddy Ye
2807a5e31cSFreddy Ye  define void @test_8bitops() #0 {
2907a5e31cSFreddy Ye    ret void
3007a5e31cSFreddy Ye  }
3107a5e31cSFreddy Ye  define void @test_16bitops() #0 {
3207a5e31cSFreddy Ye    ret void
3307a5e31cSFreddy Ye  }
3407a5e31cSFreddy Ye  define void @test_32bitops() #0 {
3507a5e31cSFreddy Ye    ret void
3607a5e31cSFreddy Ye  }
3707a5e31cSFreddy Ye  define void @test_64bitops() #0 {
3807a5e31cSFreddy Ye    ret void
3907a5e31cSFreddy Ye  }
4007a5e31cSFreddy Ye  define void @test_16bitext() #0 {
4107a5e31cSFreddy Ye    ret void
4207a5e31cSFreddy Ye  }
4307a5e31cSFreddy Ye  define void @test_32bitext() #0 {
4407a5e31cSFreddy Ye    ret void
4507a5e31cSFreddy Ye  }
4607a5e31cSFreddy Ye  define void @test_64bitext() #0 {
4707a5e31cSFreddy Ye    ret void
4807a5e31cSFreddy Ye  }
4907a5e31cSFreddy Ye  ; Note that this function need to be compiled with -global-isel
5007a5e31cSFreddy Ye  ; to obtain testable MIR
5107a5e31cSFreddy Ye  define void @test_unused(i64 %0) #0 {
5207a5e31cSFreddy Ye    %unused = lshr i64 %0, 7
5307a5e31cSFreddy Ye    ret void
5407a5e31cSFreddy Ye  }
5507a5e31cSFreddy Ye...
5607a5e31cSFreddy Ye---
5707a5e31cSFreddy Yename:            test_fcmp_storefloat
5807a5e31cSFreddy Yealignment:       16
5907a5e31cSFreddy YeexposesReturnsTwice: false
6007a5e31cSFreddy Yelegalized:       false
6107a5e31cSFreddy YeregBankSelected: false
6207a5e31cSFreddy Yeselected:        false
6307a5e31cSFreddy YetracksRegLiveness: true
6407a5e31cSFreddy Yeregisters:
6507a5e31cSFreddy Ye  - { id: 0, class: gr8, preferred-register: '' }
6607a5e31cSFreddy Ye  - { id: 1, class: gr8, preferred-register: '' }
6707a5e31cSFreddy Ye  - { id: 2, class: gr8, preferred-register: '' }
6807a5e31cSFreddy Ye  - { id: 3, class: gr32, preferred-register: '' }
6907a5e31cSFreddy Ye  - { id: 4, class: gr64, preferred-register: '' }
7007a5e31cSFreddy Ye  - { id: 5, class: vr128x, preferred-register: '' }
7107a5e31cSFreddy Ye  - { id: 6, class: fr32x, preferred-register: '' }
7207a5e31cSFreddy Ye  - { id: 7, class: fr32x, preferred-register: '' }
7307a5e31cSFreddy Ye  - { id: 8, class: fr32x, preferred-register: '' }
7407a5e31cSFreddy Ye  - { id: 9, class: fr32x, preferred-register: '' }
7507a5e31cSFreddy Ye  - { id: 10, class: fr32x, preferred-register: '' }
7607a5e31cSFreddy Ye  - { id: 11, class: gr8, preferred-register: '' }
7707a5e31cSFreddy Ye  - { id: 12, class: vk1, preferred-register: '' }
7807a5e31cSFreddy Ye  - { id: 13, class: gr32, preferred-register: '' }
7907a5e31cSFreddy Ye  - { id: 14, class: vk1, preferred-register: '' }
8007a5e31cSFreddy Ye  - { id: 15, class: gr32, preferred-register: '' }
8107a5e31cSFreddy Ye  - { id: 16, class: gr32, preferred-register: '' }
8207a5e31cSFreddy Ye  - { id: 17, class: gr32, preferred-register: '' }
8307a5e31cSFreddy Ye  - { id: 18, class: vk1wm, preferred-register: '' }
8407a5e31cSFreddy Ye  - { id: 19, class: vr128x, preferred-register: '' }
8507a5e31cSFreddy Ye  - { id: 20, class: vr128, preferred-register: '' }
8607a5e31cSFreddy Ye  - { id: 21, class: vr128, preferred-register: '' }
8707a5e31cSFreddy Ye  - { id: 22, class: fr32x, preferred-register: '' }
8807a5e31cSFreddy Yeliveins:
8907a5e31cSFreddy Ye  - { reg: '$edi', virtual-reg: '%3' }
9007a5e31cSFreddy Ye  - { reg: '$rsi', virtual-reg: '%4' }
9107a5e31cSFreddy Ye  - { reg: '$xmm0', virtual-reg: '%5' }
9207a5e31cSFreddy Ye  - { reg: '$xmm1', virtual-reg: '%6' }
9307a5e31cSFreddy Ye  - { reg: '$xmm2', virtual-reg: '%7' }
9407a5e31cSFreddy Ye  - { reg: '$xmm3', virtual-reg: '%8' }
9507a5e31cSFreddy Ye  - { reg: '$xmm4', virtual-reg: '%9' }
9607a5e31cSFreddy Ye  - { reg: '$xmm5', virtual-reg: '%10' }
9707a5e31cSFreddy YeframeInfo:
9807a5e31cSFreddy Ye  isFrameAddressTaken: false
9907a5e31cSFreddy Ye  isReturnAddressTaken: false
10007a5e31cSFreddy Ye  hasStackMap:     false
10107a5e31cSFreddy Ye  hasPatchPoint:   false
10207a5e31cSFreddy Ye  stackSize:       0
10307a5e31cSFreddy Ye  offsetAdjustment: 0
10407a5e31cSFreddy Ye  maxAlignment:    0
10507a5e31cSFreddy Ye  adjustsStack:    false
10607a5e31cSFreddy Ye  hasCalls:        false
10707a5e31cSFreddy Ye  stackProtector:  ''
10807a5e31cSFreddy Ye  maxCallFrameSize: 4294967295
10907a5e31cSFreddy Ye  hasOpaqueSPAdjustment: false
11007a5e31cSFreddy Ye  hasVAStart:      false
11107a5e31cSFreddy Ye  hasMustTailInVarArgFunc: false
11207a5e31cSFreddy Ye  savePoint:       ''
11307a5e31cSFreddy Ye  restorePoint:    ''
11407a5e31cSFreddy YefixedStack:
11507a5e31cSFreddy Yestack:
11607a5e31cSFreddy Yeconstants:
11707a5e31cSFreddy Yebody:             |
11807a5e31cSFreddy Ye  ; CHECK-LABEL: name: test_fcmp_storefloat
11907a5e31cSFreddy Ye  ; CHECK: bb.0.entry:
12007a5e31cSFreddy Ye  ; CHECK:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
12107a5e31cSFreddy Ye  ; CHECK:   liveins: $edi, $rsi, $xmm0, $xmm1, $xmm2, $xmm3, $xmm4, $xmm5
12207a5e31cSFreddy Ye  ; CHECK:   [[COPY:%[0-9]+]]:fr32x = COPY $xmm5
12307a5e31cSFreddy Ye  ; CHECK:   [[COPY1:%[0-9]+]]:fr32x = COPY $xmm4
12407a5e31cSFreddy Ye  ; CHECK:   [[COPY2:%[0-9]+]]:fr32x = COPY $xmm3
12507a5e31cSFreddy Ye  ; CHECK:   [[COPY3:%[0-9]+]]:fr32x = COPY $xmm2
12607a5e31cSFreddy Ye  ; CHECK:   [[COPY4:%[0-9]+]]:fr32x = COPY $xmm1
12707a5e31cSFreddy Ye  ; CHECK:   [[COPY5:%[0-9]+]]:vr128x = COPY $xmm0
12807a5e31cSFreddy Ye  ; CHECK:   [[COPY6:%[0-9]+]]:gr64 = COPY $rsi
12907a5e31cSFreddy Ye  ; CHECK:   [[COPY7:%[0-9]+]]:gr32 = COPY $edi
13007a5e31cSFreddy Ye  ; CHECK:   [[COPY8:%[0-9]+]]:gr8 = COPY [[COPY7]].sub_8bit
13107a5e31cSFreddy Ye  ; CHECK:   TEST8ri killed [[COPY8]], 1, implicit-def $eflags
13207a5e31cSFreddy Ye  ; CHECK:   JCC_1 %bb.2, 4, implicit $eflags
13307a5e31cSFreddy Ye  ; CHECK:   JMP_1 %bb.1
13407a5e31cSFreddy Ye  ; CHECK: bb.1.if:
13507a5e31cSFreddy Ye  ; CHECK:   successors: %bb.3(0x80000000)
13607a5e31cSFreddy Ye  ; CHECK:   [[VCMPSSZrri:%[0-9]+]]:vk1 = VCMPSSZrri [[COPY3]], [[COPY2]], 0
13707a5e31cSFreddy Ye  ; CHECK:   [[COPY9:%[0-9]+]]:vk32 = COPY [[VCMPSSZrri]]
13807a5e31cSFreddy Ye  ; CHECK:   [[COPY10:%[0-9]+]]:vk8 = COPY [[COPY9]]
13907a5e31cSFreddy Ye  ; CHECK:   JMP_1 %bb.3
14007a5e31cSFreddy Ye  ; CHECK: bb.2.else:
14107a5e31cSFreddy Ye  ; CHECK:   successors: %bb.3(0x80000000)
14207a5e31cSFreddy Ye  ; CHECK:   [[VCMPSSZrri1:%[0-9]+]]:vk1 = VCMPSSZrri [[COPY1]], [[COPY]], 0
14307a5e31cSFreddy Ye  ; CHECK:   [[COPY11:%[0-9]+]]:vk32 = COPY [[VCMPSSZrri1]]
14407a5e31cSFreddy Ye  ; CHECK:   [[COPY12:%[0-9]+]]:vk8 = COPY [[COPY11]]
14507a5e31cSFreddy Ye  ; CHECK: bb.3.exit:
14607a5e31cSFreddy Ye  ; CHECK:   [[PHI:%[0-9]+]]:vk8 = PHI [[COPY12]], %bb.2, [[COPY10]], %bb.1
14707a5e31cSFreddy Ye  ; CHECK:   [[DEF:%[0-9]+]]:vk32 = IMPLICIT_DEF
14807a5e31cSFreddy Ye  ; CHECK:   [[COPY13:%[0-9]+]]:vk32 = COPY [[PHI]]
14907a5e31cSFreddy Ye  ; CHECK:   [[COPY14:%[0-9]+]]:vk1wm = COPY [[COPY13]]
15007a5e31cSFreddy Ye  ; CHECK:   [[COPY15:%[0-9]+]]:vr128x = COPY [[COPY4]]
15107a5e31cSFreddy Ye  ; CHECK:   [[DEF1:%[0-9]+]]:vr128 = IMPLICIT_DEF
15207a5e31cSFreddy Ye  ; CHECK:   [[VMOVSSZrrk:%[0-9]+]]:vr128 = VMOVSSZrrk [[COPY15]], killed [[COPY14]], killed [[DEF1]], [[COPY5]]
15307a5e31cSFreddy Ye  ; CHECK:   [[COPY16:%[0-9]+]]:fr32x = COPY [[VMOVSSZrrk]]
15407a5e31cSFreddy Ye  ; CHECK:   VMOVSSZmr [[COPY6]], 1, $noreg, 0, $noreg, killed [[COPY16]] :: (store (s32) into %ir.fptr)
15507a5e31cSFreddy Ye  ; CHECK:   RET 0
15607a5e31cSFreddy Ye  bb.0.entry:
15707a5e31cSFreddy Ye    successors: %bb.1(0x40000000), %bb.2(0x40000000)
15807a5e31cSFreddy Ye    liveins: $edi, $rsi, $xmm0, $xmm1, $xmm2, $xmm3, $xmm4, $xmm5
15907a5e31cSFreddy Ye
16007a5e31cSFreddy Ye    %10 = COPY $xmm5
16107a5e31cSFreddy Ye    %9 = COPY $xmm4
16207a5e31cSFreddy Ye    %8 = COPY $xmm3
16307a5e31cSFreddy Ye    %7 = COPY $xmm2
16407a5e31cSFreddy Ye    %6 = COPY $xmm1
16507a5e31cSFreddy Ye    %5 = COPY $xmm0
16607a5e31cSFreddy Ye    %4 = COPY $rsi
16707a5e31cSFreddy Ye    %3 = COPY $edi
16807a5e31cSFreddy Ye    %11 = COPY %3.sub_8bit
16907a5e31cSFreddy Ye    TEST8ri killed %11, 1, implicit-def $eflags
17007a5e31cSFreddy Ye    JCC_1 %bb.2, 4, implicit $eflags
17107a5e31cSFreddy Ye    JMP_1 %bb.1
17207a5e31cSFreddy Ye
17307a5e31cSFreddy Ye  bb.1.if:
17407a5e31cSFreddy Ye    successors: %bb.3(0x80000000)
17507a5e31cSFreddy Ye
17607a5e31cSFreddy Ye    %14 = VCMPSSZrri %7, %8, 0, implicit $mxcsr
17707a5e31cSFreddy Ye
17807a5e31cSFreddy Ye    ; check that cross domain copies are replaced with same domain copies.
17907a5e31cSFreddy Ye
18007a5e31cSFreddy Ye    %15 = COPY %14
18107a5e31cSFreddy Ye    %0 = COPY %15.sub_8bit
18207a5e31cSFreddy Ye    JMP_1 %bb.3
18307a5e31cSFreddy Ye
18407a5e31cSFreddy Ye  bb.2.else:
18507a5e31cSFreddy Ye    successors: %bb.3(0x80000000)
18607a5e31cSFreddy Ye    %12 = VCMPSSZrri %9, %10, 0, implicit $mxcsr
18707a5e31cSFreddy Ye
18807a5e31cSFreddy Ye    ; check that cross domain copies are replaced with same domain copies.
18907a5e31cSFreddy Ye
19007a5e31cSFreddy Ye    %13 = COPY %12
19107a5e31cSFreddy Ye    %1 = COPY %13.sub_8bit
19207a5e31cSFreddy Ye
19307a5e31cSFreddy Ye  bb.3.exit:
19407a5e31cSFreddy Ye
19507a5e31cSFreddy Ye    ; check PHI, IMPLICIT_DEF, and INSERT_SUBREG replacers.
19607a5e31cSFreddy Ye
19707a5e31cSFreddy Ye    %2 = PHI %1, %bb.2, %0, %bb.1
19807a5e31cSFreddy Ye    %17 = IMPLICIT_DEF
19907a5e31cSFreddy Ye    %16 = INSERT_SUBREG %17, %2, %subreg.sub_8bit_hi
20007a5e31cSFreddy Ye    %18 = COPY %16
20107a5e31cSFreddy Ye    %19 = COPY %6
20207a5e31cSFreddy Ye    %21 = IMPLICIT_DEF
20307a5e31cSFreddy Ye    %20 = VMOVSSZrrk %19, killed %18, killed %21, %5
20407a5e31cSFreddy Ye    %22 = COPY %20
20507a5e31cSFreddy Ye    VMOVSSZmr %4, 1, $noreg, 0, $noreg, killed %22 :: (store (s32) into %ir.fptr)
20607a5e31cSFreddy Ye    RET 0
20707a5e31cSFreddy Ye
20807a5e31cSFreddy Ye...
20907a5e31cSFreddy Ye---
21007a5e31cSFreddy Yename:            test_8bitops
21107a5e31cSFreddy Yealignment:       16
21207a5e31cSFreddy YeexposesReturnsTwice: false
21307a5e31cSFreddy Yelegalized:       false
21407a5e31cSFreddy YeregBankSelected: false
21507a5e31cSFreddy Yeselected:        false
21607a5e31cSFreddy YetracksRegLiveness: true
21707a5e31cSFreddy Yeregisters:
21807a5e31cSFreddy Ye  - { id: 0, class: gr64, preferred-register: '' }
21907a5e31cSFreddy Ye  - { id: 1, class: vr512, preferred-register: '' }
22007a5e31cSFreddy Ye  - { id: 2, class: vr512, preferred-register: '' }
22107a5e31cSFreddy Ye  - { id: 3, class: vr512, preferred-register: '' }
22207a5e31cSFreddy Ye  - { id: 4, class: vr512, preferred-register: '' }
22307a5e31cSFreddy Ye  - { id: 5, class: vk8, preferred-register: '' }
22407a5e31cSFreddy Ye  - { id: 6, class: gr32, preferred-register: '' }
22507a5e31cSFreddy Ye  - { id: 7, class: gr8, preferred-register: '' }
22607a5e31cSFreddy Ye  - { id: 8, class: gr32, preferred-register: '' }
22707a5e31cSFreddy Ye  - { id: 9, class: gr32, preferred-register: '' }
22807a5e31cSFreddy Ye  - { id: 10, class: vk8wm, preferred-register: '' }
22907a5e31cSFreddy Ye  - { id: 11, class: vr512, preferred-register: '' }
23007a5e31cSFreddy Ye  - { id: 12, class: gr8, preferred-register: '' }
23107a5e31cSFreddy Ye  - { id: 13, class: gr8, preferred-register: '' }
23207a5e31cSFreddy Ye  - { id: 14, class: gr8, preferred-register: '' }
23307a5e31cSFreddy Ye  - { id: 15, class: gr8, preferred-register: '' }
23407a5e31cSFreddy Ye  - { id: 16, class: gr8, preferred-register: '' }
23507a5e31cSFreddy Ye  - { id: 17, class: gr8, preferred-register: '' }
23607a5e31cSFreddy Ye  - { id: 18, class: gr8, preferred-register: '' }
23707a5e31cSFreddy Yeliveins:
23807a5e31cSFreddy Ye  - { reg: '$rdi', virtual-reg: '%0' }
23907a5e31cSFreddy Ye  - { reg: '$zmm0', virtual-reg: '%1' }
24007a5e31cSFreddy Ye  - { reg: '$zmm1', virtual-reg: '%2' }
24107a5e31cSFreddy Ye  - { reg: '$zmm2', virtual-reg: '%3' }
24207a5e31cSFreddy Ye  - { reg: '$zmm3', virtual-reg: '%4' }
24307a5e31cSFreddy YeframeInfo:
24407a5e31cSFreddy Ye  isFrameAddressTaken: false
24507a5e31cSFreddy Ye  isReturnAddressTaken: false
24607a5e31cSFreddy Ye  hasStackMap:     false
24707a5e31cSFreddy Ye  hasPatchPoint:   false
24807a5e31cSFreddy Ye  stackSize:       0
24907a5e31cSFreddy Ye  offsetAdjustment: 0
25007a5e31cSFreddy Ye  maxAlignment:    0
25107a5e31cSFreddy Ye  adjustsStack:    false
25207a5e31cSFreddy Ye  hasCalls:        false
25307a5e31cSFreddy Ye  stackProtector:  ''
25407a5e31cSFreddy Ye  maxCallFrameSize: 4294967295
25507a5e31cSFreddy Ye  hasOpaqueSPAdjustment: false
25607a5e31cSFreddy Ye  hasVAStart:      false
25707a5e31cSFreddy Ye  hasMustTailInVarArgFunc: false
25807a5e31cSFreddy Ye  savePoint:       ''
25907a5e31cSFreddy Ye  restorePoint:    ''
26007a5e31cSFreddy YefixedStack:
26107a5e31cSFreddy Yestack:
26207a5e31cSFreddy Yeconstants:
26307a5e31cSFreddy Yebody:             |
26407a5e31cSFreddy Ye  ; CHECK-LABEL: name: test_8bitops
26507a5e31cSFreddy Ye  ; CHECK: bb.0:
26607a5e31cSFreddy Ye  ; CHECK:   successors: %bb.1(0x80000000)
26707a5e31cSFreddy Ye  ; CHECK:   liveins: $rdi, $zmm0, $zmm1, $zmm2, $zmm3
26807a5e31cSFreddy Ye  ; CHECK:   [[COPY:%[0-9]+]]:gr64 = COPY $rdi
26907a5e31cSFreddy Ye  ; CHECK:   [[COPY1:%[0-9]+]]:vr512 = COPY $zmm0
27007a5e31cSFreddy Ye  ; CHECK:   [[COPY2:%[0-9]+]]:vr512 = COPY $zmm1
27107a5e31cSFreddy Ye  ; CHECK:   [[COPY3:%[0-9]+]]:vr512 = COPY $zmm2
27207a5e31cSFreddy Ye  ; CHECK:   [[COPY4:%[0-9]+]]:vr512 = COPY $zmm3
27307a5e31cSFreddy Ye  ; CHECK:   [[VCMPPDZrri:%[0-9]+]]:vk8 = VCMPPDZrri [[COPY3]], [[COPY4]], 0
27407a5e31cSFreddy Ye  ; CHECK:   [[COPY5:%[0-9]+]]:vk32 = COPY [[VCMPPDZrri]]
27507a5e31cSFreddy Ye  ; CHECK:   [[COPY6:%[0-9]+]]:vk8 = COPY [[COPY5]]
276*c91f2a25SSimon Pilgrim  ; CHECK:   [[KSHIFTRBki:%[0-9]+]]:vk8 = KSHIFTRBki [[COPY6]], 2
277*c91f2a25SSimon Pilgrim  ; CHECK:   [[KSHIFTLBki:%[0-9]+]]:vk8 = KSHIFTLBki [[KSHIFTRBki]], 1
278*c91f2a25SSimon Pilgrim  ; CHECK:   [[KNOTBkk:%[0-9]+]]:vk8 = KNOTBkk [[KSHIFTLBki]]
279*c91f2a25SSimon Pilgrim  ; CHECK:   [[KORBkk:%[0-9]+]]:vk8 = KORBkk [[KNOTBkk]], [[KSHIFTRBki]]
280*c91f2a25SSimon Pilgrim  ; CHECK:   [[KANDBkk:%[0-9]+]]:vk8 = KANDBkk [[KORBkk]], [[KSHIFTLBki]]
281*c91f2a25SSimon Pilgrim  ; CHECK:   [[KXORBkk:%[0-9]+]]:vk8 = KXORBkk [[KANDBkk]], [[KSHIFTRBki]]
282*c91f2a25SSimon Pilgrim  ; CHECK:   [[KADDBkk:%[0-9]+]]:vk8 = KADDBkk [[KXORBkk]], [[KNOTBkk]]
28307a5e31cSFreddy Ye  ; CHECK:   [[DEF:%[0-9]+]]:vk32 = IMPLICIT_DEF
284*c91f2a25SSimon Pilgrim  ; CHECK:   [[COPY7:%[0-9]+]]:vk32 = COPY [[KADDBkk]]
28507a5e31cSFreddy Ye  ; CHECK:   [[COPY8:%[0-9]+]]:vk8wm = COPY [[COPY7]]
28607a5e31cSFreddy Ye  ; CHECK:   [[VMOVAPDZrrk:%[0-9]+]]:vr512 = VMOVAPDZrrk [[COPY2]], killed [[COPY8]], [[COPY1]]
28707a5e31cSFreddy Ye  ; CHECK:   VMOVAPDZmr [[COPY]], 1, $noreg, 0, $noreg, killed [[VMOVAPDZrrk]]
28807a5e31cSFreddy Ye  ; CHECK: bb.1:
28907a5e31cSFreddy Ye  ; CHECK:   successors: %bb.2(0x80000000)
29007a5e31cSFreddy Ye  ; CHECK: bb.2:
29107a5e31cSFreddy Ye  ; CHECK:   RET 0
29207a5e31cSFreddy Ye  bb.0:
29307a5e31cSFreddy Ye    liveins: $rdi, $zmm0, $zmm1, $zmm2, $zmm3
29407a5e31cSFreddy Ye
29507a5e31cSFreddy Ye    %0 = COPY $rdi
29607a5e31cSFreddy Ye    %1 = COPY $zmm0
29707a5e31cSFreddy Ye    %2 = COPY $zmm1
29807a5e31cSFreddy Ye    %3 = COPY $zmm2
29907a5e31cSFreddy Ye    %4 = COPY $zmm3
30007a5e31cSFreddy Ye
30107a5e31cSFreddy Ye    %5 = VCMPPDZrri %3, %4, 0, implicit $mxcsr
30207a5e31cSFreddy Ye    %6 = COPY %5
30307a5e31cSFreddy Ye    %7 = COPY %6.sub_8bit
30407a5e31cSFreddy Ye
3053e4caa9dSFreddy Ye    %12 = SHR8ri_ND %7, 2, implicit-def dead $eflags
3063e4caa9dSFreddy Ye    %13 = SHL8ri_ND %12, 1, implicit-def dead $eflags
3073e4caa9dSFreddy Ye    %14 = NOT8r_ND %13
3083e4caa9dSFreddy Ye    %15 = OR8rr_ND %14, %12, implicit-def dead $eflags
3093e4caa9dSFreddy Ye    %16 = AND8rr_ND %15, %13, implicit-def dead $eflags
3103e4caa9dSFreddy Ye    %17 = XOR8rr_ND %16, %12, implicit-def dead $eflags
3113e4caa9dSFreddy Ye    %18 = ADD8rr_ND %17, %14, implicit-def dead $eflags
31207a5e31cSFreddy Ye
31307a5e31cSFreddy Ye    %8 = IMPLICIT_DEF
31407a5e31cSFreddy Ye    %9 = INSERT_SUBREG %8, %18, %subreg.sub_8bit_hi
31507a5e31cSFreddy Ye    %10 = COPY %9
31607a5e31cSFreddy Ye    %11 = VMOVAPDZrrk %2, killed %10, %1
31707a5e31cSFreddy Ye    VMOVAPDZmr %0, 1, $noreg, 0, $noreg, killed %11
31807a5e31cSFreddy Ye
31907a5e31cSFreddy Ye    ; FIXME We can't replace TEST with KTEST due to flag differences
32007a5e31cSFreddy Ye    ; TEST8rr %18, %18, implicit-def $eflags
32107a5e31cSFreddy Ye    ; JCC_1 %bb.1, 4, implicit $eflags
32207a5e31cSFreddy Ye    ; JMP_1 %bb.2
32307a5e31cSFreddy Ye
32407a5e31cSFreddy Ye  bb.1:
32507a5e31cSFreddy Ye
32607a5e31cSFreddy Ye  bb.2:
32707a5e31cSFreddy Ye    RET 0
32807a5e31cSFreddy Ye
32907a5e31cSFreddy Ye...
33007a5e31cSFreddy Ye---
33107a5e31cSFreddy Yename:            test_16bitops
33207a5e31cSFreddy Yealignment:       16
33307a5e31cSFreddy YeexposesReturnsTwice: false
33407a5e31cSFreddy Yelegalized:       false
33507a5e31cSFreddy YeregBankSelected: false
33607a5e31cSFreddy Yeselected:        false
33707a5e31cSFreddy YetracksRegLiveness: true
33807a5e31cSFreddy Yeregisters:
33907a5e31cSFreddy Ye  - { id: 0, class: gr64, preferred-register: '' }
34007a5e31cSFreddy Ye  - { id: 1, class: vr512, preferred-register: '' }
34107a5e31cSFreddy Ye  - { id: 2, class: vr512, preferred-register: '' }
34207a5e31cSFreddy Ye  - { id: 3, class: vr512, preferred-register: '' }
34307a5e31cSFreddy Ye  - { id: 4, class: vr512, preferred-register: '' }
34407a5e31cSFreddy Ye  - { id: 5, class: vk16, preferred-register: '' }
34507a5e31cSFreddy Ye  - { id: 6, class: gr32, preferred-register: '' }
34607a5e31cSFreddy Ye  - { id: 7, class: gr16, preferred-register: '' }
34707a5e31cSFreddy Ye  - { id: 8, class: gr32, preferred-register: '' }
34807a5e31cSFreddy Ye  - { id: 9, class: gr32, preferred-register: '' }
34907a5e31cSFreddy Ye  - { id: 10, class: vk16wm, preferred-register: '' }
35007a5e31cSFreddy Ye  - { id: 11, class: vr512, preferred-register: '' }
35107a5e31cSFreddy Ye  - { id: 12, class: gr16, preferred-register: '' }
35207a5e31cSFreddy Ye  - { id: 13, class: gr16, preferred-register: '' }
35307a5e31cSFreddy Ye  - { id: 14, class: gr16, preferred-register: '' }
35407a5e31cSFreddy Ye  - { id: 15, class: gr16, preferred-register: '' }
35507a5e31cSFreddy Ye  - { id: 16, class: gr16, preferred-register: '' }
35607a5e31cSFreddy Ye  - { id: 17, class: gr16, preferred-register: '' }
35707a5e31cSFreddy Yeliveins:
35807a5e31cSFreddy Ye  - { reg: '$rdi', virtual-reg: '%0' }
35907a5e31cSFreddy Ye  - { reg: '$zmm0', virtual-reg: '%1' }
36007a5e31cSFreddy Ye  - { reg: '$zmm1', virtual-reg: '%2' }
36107a5e31cSFreddy Ye  - { reg: '$zmm2', virtual-reg: '%3' }
36207a5e31cSFreddy Ye  - { reg: '$zmm3', virtual-reg: '%4' }
36307a5e31cSFreddy YeframeInfo:
36407a5e31cSFreddy Ye  isFrameAddressTaken: false
36507a5e31cSFreddy Ye  isReturnAddressTaken: false
36607a5e31cSFreddy Ye  hasStackMap:     false
36707a5e31cSFreddy Ye  hasPatchPoint:   false
36807a5e31cSFreddy Ye  stackSize:       0
36907a5e31cSFreddy Ye  offsetAdjustment: 0
37007a5e31cSFreddy Ye  maxAlignment:    0
37107a5e31cSFreddy Ye  adjustsStack:    false
37207a5e31cSFreddy Ye  hasCalls:        false
37307a5e31cSFreddy Ye  stackProtector:  ''
37407a5e31cSFreddy Ye  maxCallFrameSize: 4294967295
37507a5e31cSFreddy Ye  hasOpaqueSPAdjustment: false
37607a5e31cSFreddy Ye  hasVAStart:      false
37707a5e31cSFreddy Ye  hasMustTailInVarArgFunc: false
37807a5e31cSFreddy Ye  savePoint:       ''
37907a5e31cSFreddy Ye  restorePoint:    ''
38007a5e31cSFreddy YefixedStack:
38107a5e31cSFreddy Yestack:
38207a5e31cSFreddy Yeconstants:
38307a5e31cSFreddy Yebody:             |
38407a5e31cSFreddy Ye  ; CHECK-LABEL: name: test_16bitops
38507a5e31cSFreddy Ye  ; CHECK: bb.0:
38607a5e31cSFreddy Ye  ; CHECK:   successors: %bb.1(0x80000000)
38707a5e31cSFreddy Ye  ; CHECK:   liveins: $rdi, $zmm0, $zmm1, $zmm2, $zmm3
38807a5e31cSFreddy Ye  ; CHECK:   [[COPY:%[0-9]+]]:gr64 = COPY $rdi
38907a5e31cSFreddy Ye  ; CHECK:   [[COPY1:%[0-9]+]]:vr512 = COPY $zmm0
39007a5e31cSFreddy Ye  ; CHECK:   [[COPY2:%[0-9]+]]:vr512 = COPY $zmm1
39107a5e31cSFreddy Ye  ; CHECK:   [[COPY3:%[0-9]+]]:vr512 = COPY $zmm2
39207a5e31cSFreddy Ye  ; CHECK:   [[COPY4:%[0-9]+]]:vr512 = COPY $zmm3
39307a5e31cSFreddy Ye  ; CHECK:   [[VCMPPSZrri:%[0-9]+]]:vk16 = VCMPPSZrri [[COPY3]], [[COPY4]], 0
39407a5e31cSFreddy Ye  ; CHECK:   [[COPY5:%[0-9]+]]:vk32 = COPY [[VCMPPSZrri]]
39507a5e31cSFreddy Ye  ; CHECK:   [[COPY6:%[0-9]+]]:vk16 = COPY [[COPY5]]
396*c91f2a25SSimon Pilgrim  ; CHECK:   [[KSHIFTRWki:%[0-9]+]]:vk16 = KSHIFTRWki [[COPY6]], 2
397*c91f2a25SSimon Pilgrim  ; CHECK:   [[KSHIFTLWki:%[0-9]+]]:vk16 = KSHIFTLWki [[KSHIFTRWki]], 1
398*c91f2a25SSimon Pilgrim  ; CHECK:   [[KNOTWkk:%[0-9]+]]:vk16 = KNOTWkk [[KSHIFTLWki]]
399*c91f2a25SSimon Pilgrim  ; CHECK:   [[KORWkk:%[0-9]+]]:vk16 = KORWkk [[KNOTWkk]], [[KSHIFTRWki]]
400*c91f2a25SSimon Pilgrim  ; CHECK:   [[KANDWkk:%[0-9]+]]:vk16 = KANDWkk [[KORWkk]], [[KSHIFTLWki]]
401*c91f2a25SSimon Pilgrim  ; CHECK:   [[KXORWkk:%[0-9]+]]:vk16 = KXORWkk [[KANDWkk]], [[KSHIFTRWki]]
40207a5e31cSFreddy Ye  ; CHECK:   [[DEF:%[0-9]+]]:vk32 = IMPLICIT_DEF
403*c91f2a25SSimon Pilgrim  ; CHECK:   [[COPY7:%[0-9]+]]:vk32 = COPY [[KXORWkk]]
40407a5e31cSFreddy Ye  ; CHECK:   [[COPY8:%[0-9]+]]:vk16wm = COPY [[COPY7]]
40507a5e31cSFreddy Ye  ; CHECK:   [[VMOVAPSZrrk:%[0-9]+]]:vr512 = VMOVAPSZrrk [[COPY2]], killed [[COPY8]], [[COPY1]]
40607a5e31cSFreddy Ye  ; CHECK:   VMOVAPSZmr [[COPY]], 1, $noreg, 0, $noreg, killed [[VMOVAPSZrrk]]
40707a5e31cSFreddy Ye  ; CHECK: bb.1:
40807a5e31cSFreddy Ye  ; CHECK:   successors: %bb.2(0x80000000)
40907a5e31cSFreddy Ye  ; CHECK: bb.2:
41007a5e31cSFreddy Ye  ; CHECK:   RET 0
41107a5e31cSFreddy Ye  bb.0:
41207a5e31cSFreddy Ye    liveins: $rdi, $zmm0, $zmm1, $zmm2, $zmm3
41307a5e31cSFreddy Ye
41407a5e31cSFreddy Ye    %0 = COPY $rdi
41507a5e31cSFreddy Ye    %1 = COPY $zmm0
41607a5e31cSFreddy Ye    %2 = COPY $zmm1
41707a5e31cSFreddy Ye    %3 = COPY $zmm2
41807a5e31cSFreddy Ye    %4 = COPY $zmm3
41907a5e31cSFreddy Ye
42007a5e31cSFreddy Ye    %5 = VCMPPSZrri %3, %4, 0, implicit $mxcsr
42107a5e31cSFreddy Ye    %6 = COPY %5
42207a5e31cSFreddy Ye    %7 = COPY %6.sub_16bit
42307a5e31cSFreddy Ye
4243e4caa9dSFreddy Ye    %12 = SHR16ri_ND %7, 2, implicit-def dead $eflags
4253e4caa9dSFreddy Ye    %13 = SHL16ri_ND %12, 1, implicit-def dead $eflags
4263e4caa9dSFreddy Ye    %14 = NOT16r_ND %13
4273e4caa9dSFreddy Ye    %15 = OR16rr_ND %14, %12, implicit-def dead $eflags
4283e4caa9dSFreddy Ye    %16 = AND16rr_ND %15, %13, implicit-def dead $eflags
4293e4caa9dSFreddy Ye    %17 = XOR16rr_ND %16, %12, implicit-def dead $eflags
43007a5e31cSFreddy Ye
43107a5e31cSFreddy Ye    %8 = IMPLICIT_DEF
43207a5e31cSFreddy Ye    %9 = INSERT_SUBREG %8, %17, %subreg.sub_16bit
43307a5e31cSFreddy Ye    %10 = COPY %9
43407a5e31cSFreddy Ye    %11 = VMOVAPSZrrk %2, killed %10, %1
43507a5e31cSFreddy Ye    VMOVAPSZmr %0, 1, $noreg, 0, $noreg, killed %11
43607a5e31cSFreddy Ye
43707a5e31cSFreddy Ye    ; FIXME We can't replace TEST with KTEST due to flag differences
43807a5e31cSFreddy Ye    ; FIXME TEST16rr %17, %17, implicit-def $eflags
43907a5e31cSFreddy Ye    ; FIXME JCC_1 %bb.1, 4, implicit $eflags
44007a5e31cSFreddy Ye    ; FIXME JMP_1 %bb.2
44107a5e31cSFreddy Ye
44207a5e31cSFreddy Ye  bb.1:
44307a5e31cSFreddy Ye
44407a5e31cSFreddy Ye  bb.2:
44507a5e31cSFreddy Ye    RET 0
44607a5e31cSFreddy Ye
44707a5e31cSFreddy Ye...
44807a5e31cSFreddy Ye---
44907a5e31cSFreddy Yename:            test_32bitops
45007a5e31cSFreddy Yealignment:       16
45107a5e31cSFreddy YeexposesReturnsTwice: false
45207a5e31cSFreddy Yelegalized:       false
45307a5e31cSFreddy YeregBankSelected: false
45407a5e31cSFreddy Yeselected:        false
45507a5e31cSFreddy YetracksRegLiveness: true
45607a5e31cSFreddy Yeregisters:
45707a5e31cSFreddy Ye  - { id: 0, class: gr64, preferred-register: '' }
45807a5e31cSFreddy Ye  - { id: 1, class: vr512, preferred-register: '' }
45907a5e31cSFreddy Ye  - { id: 2, class: vr512, preferred-register: '' }
46007a5e31cSFreddy Ye  - { id: 3, class: vk32wm, preferred-register: '' }
46107a5e31cSFreddy Ye  - { id: 4, class: vr512, preferred-register: '' }
46207a5e31cSFreddy Ye  - { id: 5, class: gr32, preferred-register: '' }
46307a5e31cSFreddy Ye  - { id: 6, class: gr32, preferred-register: '' }
46407a5e31cSFreddy Ye  - { id: 7, class: gr32, preferred-register: '' }
46507a5e31cSFreddy Ye  - { id: 8, class: gr32, preferred-register: '' }
46607a5e31cSFreddy Ye  - { id: 9, class: gr32, preferred-register: '' }
46707a5e31cSFreddy Ye  - { id: 10, class: gr32, preferred-register: '' }
46807a5e31cSFreddy Ye  - { id: 11, class: gr32, preferred-register: '' }
46907a5e31cSFreddy Ye  - { id: 12, class: gr32, preferred-register: '' }
47007a5e31cSFreddy Ye  - { id: 13, class: gr32, preferred-register: '' }
47107a5e31cSFreddy Yeliveins:
47207a5e31cSFreddy Ye  - { reg: '$rdi', virtual-reg: '%0' }
47307a5e31cSFreddy Ye  - { reg: '$zmm0', virtual-reg: '%1' }
47407a5e31cSFreddy Ye  - { reg: '$zmm1', virtual-reg: '%2' }
47507a5e31cSFreddy YeframeInfo:
47607a5e31cSFreddy Ye  isFrameAddressTaken: false
47707a5e31cSFreddy Ye  isReturnAddressTaken: false
47807a5e31cSFreddy Ye  hasStackMap:     false
47907a5e31cSFreddy Ye  hasPatchPoint:   false
48007a5e31cSFreddy Ye  stackSize:       0
48107a5e31cSFreddy Ye  offsetAdjustment: 0
48207a5e31cSFreddy Ye  maxAlignment:    0
48307a5e31cSFreddy Ye  adjustsStack:    false
48407a5e31cSFreddy Ye  hasCalls:        false
48507a5e31cSFreddy Ye  stackProtector:  ''
48607a5e31cSFreddy Ye  maxCallFrameSize: 4294967295
48707a5e31cSFreddy Ye  hasOpaqueSPAdjustment: false
48807a5e31cSFreddy Ye  hasVAStart:      false
48907a5e31cSFreddy Ye  hasMustTailInVarArgFunc: false
49007a5e31cSFreddy Ye  savePoint:       ''
49107a5e31cSFreddy Ye  restorePoint:    ''
49207a5e31cSFreddy YefixedStack:
49307a5e31cSFreddy Yestack:
49407a5e31cSFreddy Yeconstants:
49507a5e31cSFreddy Yebody:             |
49607a5e31cSFreddy Ye  ; CHECK-LABEL: name: test_32bitops
49707a5e31cSFreddy Ye  ; CHECK: bb.0:
49807a5e31cSFreddy Ye  ; CHECK:   successors: %bb.1(0x80000000)
49907a5e31cSFreddy Ye  ; CHECK:   liveins: $rdi, $zmm0, $zmm1
50007a5e31cSFreddy Ye  ; CHECK:   [[COPY:%[0-9]+]]:gr64 = COPY $rdi
50107a5e31cSFreddy Ye  ; CHECK:   [[COPY1:%[0-9]+]]:vr512 = COPY $zmm0
50207a5e31cSFreddy Ye  ; CHECK:   [[COPY2:%[0-9]+]]:vr512 = COPY $zmm1
50307a5e31cSFreddy Ye  ; CHECK:   [[KMOVDkm:%[0-9]+]]:vk32 = KMOVDkm [[COPY]], 1, $noreg, 0, $noreg
504*c91f2a25SSimon Pilgrim  ; CHECK:   [[KSHIFTRDki:%[0-9]+]]:vk32 = KSHIFTRDki [[KMOVDkm]], 2
505*c91f2a25SSimon Pilgrim  ; CHECK:   [[KSHIFTLDki:%[0-9]+]]:vk32 = KSHIFTLDki [[KSHIFTRDki]], 1
506*c91f2a25SSimon Pilgrim  ; CHECK:   [[KNOTDkk:%[0-9]+]]:vk32 = KNOTDkk [[KSHIFTLDki]]
507*c91f2a25SSimon Pilgrim  ; CHECK:   [[KORDkk:%[0-9]+]]:vk32 = KORDkk [[KNOTDkk]], [[KSHIFTRDki]]
508*c91f2a25SSimon Pilgrim  ; CHECK:   [[KANDDkk:%[0-9]+]]:vk32 = KANDDkk [[KORDkk]], [[KSHIFTLDki]]
509*c91f2a25SSimon Pilgrim  ; CHECK:   [[KXORDkk:%[0-9]+]]:vk32 = KXORDkk [[KANDDkk]], [[KSHIFTRDki]]
510*c91f2a25SSimon Pilgrim  ; CHECK:   [[KANDNDkk:%[0-9]+]]:vk32 = KANDNDkk [[KXORDkk]], [[KORDkk]]
511*c91f2a25SSimon Pilgrim  ; CHECK:   [[KADDDkk:%[0-9]+]]:vk32 = KADDDkk [[KANDNDkk]], [[KXORDkk]]
512*c91f2a25SSimon Pilgrim  ; CHECK:   [[COPY3:%[0-9]+]]:vk32wm = COPY [[KADDDkk]]
51307a5e31cSFreddy Ye  ; CHECK:   [[VMOVDQU16Zrrk:%[0-9]+]]:vr512 = VMOVDQU16Zrrk [[COPY2]], killed [[COPY3]], [[COPY1]]
51407a5e31cSFreddy Ye  ; CHECK:   VMOVDQA32Zmr [[COPY]], 1, $noreg, 0, $noreg, killed [[VMOVDQU16Zrrk]]
51507a5e31cSFreddy Ye  ; CHECK: bb.1:
51607a5e31cSFreddy Ye  ; CHECK:   successors: %bb.2(0x80000000)
51707a5e31cSFreddy Ye  ; CHECK: bb.2:
51807a5e31cSFreddy Ye  ; CHECK:   RET 0
51907a5e31cSFreddy Ye  bb.0:
52007a5e31cSFreddy Ye    liveins: $rdi, $zmm0, $zmm1
52107a5e31cSFreddy Ye
52207a5e31cSFreddy Ye    %0 = COPY $rdi
52307a5e31cSFreddy Ye    %1 = COPY $zmm0
52407a5e31cSFreddy Ye    %2 = COPY $zmm1
52507a5e31cSFreddy Ye
52607a5e31cSFreddy Ye    %5 = MOV32rm %0, 1, $noreg, 0, $noreg
5273e4caa9dSFreddy Ye    %6 = SHR32ri_ND %5, 2, implicit-def dead $eflags
5283e4caa9dSFreddy Ye    %7 = SHL32ri_ND %6, 1, implicit-def dead $eflags
5293e4caa9dSFreddy Ye    %8 = NOT32r_ND %7
5303e4caa9dSFreddy Ye    %9 = OR32rr_ND %8, %6, implicit-def dead $eflags
5313e4caa9dSFreddy Ye    %10 = AND32rr_ND %9, %7, implicit-def dead $eflags
5323e4caa9dSFreddy Ye    %11 = XOR32rr_ND %10, %6, implicit-def dead $eflags
53307a5e31cSFreddy Ye    %12 = ANDN32rr %11, %9, implicit-def dead $eflags
5343e4caa9dSFreddy Ye    %13 = ADD32rr_ND %12, %11, implicit-def dead $eflags
53507a5e31cSFreddy Ye
53607a5e31cSFreddy Ye    %3 = COPY %13
53707a5e31cSFreddy Ye    %4 = VMOVDQU16Zrrk %2, killed %3, %1
53807a5e31cSFreddy Ye    VMOVDQA32Zmr %0, 1, $noreg, 0, $noreg, killed %4
53907a5e31cSFreddy Ye
54007a5e31cSFreddy Ye    ; FIXME We can't replace TEST with KTEST due to flag differences
54107a5e31cSFreddy Ye    ; FIXME TEST32rr %13, %13, implicit-def $eflags
54207a5e31cSFreddy Ye    ; FIXME JCC_1 %bb.1, 4, implicit $eflags
54307a5e31cSFreddy Ye    ; FIXME JMP_1 %bb.2
54407a5e31cSFreddy Ye
54507a5e31cSFreddy Ye  bb.1:
54607a5e31cSFreddy Ye
54707a5e31cSFreddy Ye  bb.2:
54807a5e31cSFreddy Ye    RET 0
54907a5e31cSFreddy Ye
55007a5e31cSFreddy Ye...
55107a5e31cSFreddy Ye---
55207a5e31cSFreddy Yename:            test_64bitops
55307a5e31cSFreddy Yealignment:       16
55407a5e31cSFreddy YeexposesReturnsTwice: false
55507a5e31cSFreddy Yelegalized:       false
55607a5e31cSFreddy YeregBankSelected: false
55707a5e31cSFreddy Yeselected:        false
55807a5e31cSFreddy YetracksRegLiveness: true
55907a5e31cSFreddy Yeregisters:
56007a5e31cSFreddy Ye  - { id: 0, class: gr64, preferred-register: '' }
56107a5e31cSFreddy Ye  - { id: 1, class: vr512, preferred-register: '' }
56207a5e31cSFreddy Ye  - { id: 2, class: vr512, preferred-register: '' }
56307a5e31cSFreddy Ye  - { id: 3, class: vk64wm, preferred-register: '' }
56407a5e31cSFreddy Ye  - { id: 4, class: vr512, preferred-register: '' }
56507a5e31cSFreddy Ye  - { id: 5, class: gr64, preferred-register: '' }
56607a5e31cSFreddy Ye  - { id: 6, class: gr64, preferred-register: '' }
56707a5e31cSFreddy Ye  - { id: 7, class: gr64, preferred-register: '' }
56807a5e31cSFreddy Ye  - { id: 8, class: gr64, preferred-register: '' }
56907a5e31cSFreddy Ye  - { id: 9, class: gr64, preferred-register: '' }
57007a5e31cSFreddy Ye  - { id: 10, class: gr64, preferred-register: '' }
57107a5e31cSFreddy Ye  - { id: 11, class: gr64, preferred-register: '' }
57207a5e31cSFreddy Ye  - { id: 12, class: gr64, preferred-register: '' }
57307a5e31cSFreddy Ye  - { id: 13, class: gr64, preferred-register: '' }
57407a5e31cSFreddy Yeliveins:
57507a5e31cSFreddy Ye  - { reg: '$rdi', virtual-reg: '%0' }
57607a5e31cSFreddy Ye  - { reg: '$zmm0', virtual-reg: '%1' }
57707a5e31cSFreddy Ye  - { reg: '$zmm1', virtual-reg: '%2' }
57807a5e31cSFreddy YeframeInfo:
57907a5e31cSFreddy Ye  isFrameAddressTaken: false
58007a5e31cSFreddy Ye  isReturnAddressTaken: false
58107a5e31cSFreddy Ye  hasStackMap:     false
58207a5e31cSFreddy Ye  hasPatchPoint:   false
58307a5e31cSFreddy Ye  stackSize:       0
58407a5e31cSFreddy Ye  offsetAdjustment: 0
58507a5e31cSFreddy Ye  maxAlignment:    0
58607a5e31cSFreddy Ye  adjustsStack:    false
58707a5e31cSFreddy Ye  hasCalls:        false
58807a5e31cSFreddy Ye  stackProtector:  ''
58907a5e31cSFreddy Ye  maxCallFrameSize: 4294967295
59007a5e31cSFreddy Ye  hasOpaqueSPAdjustment: false
59107a5e31cSFreddy Ye  hasVAStart:      false
59207a5e31cSFreddy Ye  hasMustTailInVarArgFunc: false
59307a5e31cSFreddy Ye  savePoint:       ''
59407a5e31cSFreddy Ye  restorePoint:    ''
59507a5e31cSFreddy YefixedStack:
59607a5e31cSFreddy Yestack:
59707a5e31cSFreddy Yeconstants:
59807a5e31cSFreddy Yebody:             |
59907a5e31cSFreddy Ye  ; CHECK-LABEL: name: test_64bitops
60007a5e31cSFreddy Ye  ; CHECK: bb.0:
60107a5e31cSFreddy Ye  ; CHECK:   successors: %bb.1(0x80000000)
60207a5e31cSFreddy Ye  ; CHECK:   liveins: $rdi, $zmm0, $zmm1
60307a5e31cSFreddy Ye  ; CHECK:   [[COPY:%[0-9]+]]:gr64 = COPY $rdi
60407a5e31cSFreddy Ye  ; CHECK:   [[COPY1:%[0-9]+]]:vr512 = COPY $zmm0
60507a5e31cSFreddy Ye  ; CHECK:   [[COPY2:%[0-9]+]]:vr512 = COPY $zmm1
60607a5e31cSFreddy Ye  ; CHECK:   [[KMOVQkm:%[0-9]+]]:vk64 = KMOVQkm [[COPY]], 1, $noreg, 0, $noreg
607*c91f2a25SSimon Pilgrim  ; CHECK:   [[KSHIFTRQki:%[0-9]+]]:vk64 = KSHIFTRQki [[KMOVQkm]], 2
608*c91f2a25SSimon Pilgrim  ; CHECK:   [[KSHIFTLQki:%[0-9]+]]:vk64 = KSHIFTLQki [[KSHIFTRQki]], 1
609*c91f2a25SSimon Pilgrim  ; CHECK:   [[KNOTQkk:%[0-9]+]]:vk64 = KNOTQkk [[KSHIFTLQki]]
610*c91f2a25SSimon Pilgrim  ; CHECK:   [[KORQkk:%[0-9]+]]:vk64 = KORQkk [[KNOTQkk]], [[KSHIFTRQki]]
611*c91f2a25SSimon Pilgrim  ; CHECK:   [[KANDQkk:%[0-9]+]]:vk64 = KANDQkk [[KORQkk]], [[KSHIFTLQki]]
612*c91f2a25SSimon Pilgrim  ; CHECK:   [[KXORQkk:%[0-9]+]]:vk64 = KXORQkk [[KANDQkk]], [[KSHIFTRQki]]
613*c91f2a25SSimon Pilgrim  ; CHECK:   [[KANDNQkk:%[0-9]+]]:vk64 = KANDNQkk [[KXORQkk]], [[KORQkk]]
614*c91f2a25SSimon Pilgrim  ; CHECK:   [[KADDQkk:%[0-9]+]]:vk64 = KADDQkk [[KANDNQkk]], [[KXORQkk]]
615*c91f2a25SSimon Pilgrim  ; CHECK:   [[COPY3:%[0-9]+]]:vk64wm = COPY [[KADDQkk]]
61607a5e31cSFreddy Ye  ; CHECK:   [[VMOVDQU8Zrrk:%[0-9]+]]:vr512 = VMOVDQU8Zrrk [[COPY2]], killed [[COPY3]], [[COPY1]]
61707a5e31cSFreddy Ye  ; CHECK:   VMOVDQA32Zmr [[COPY]], 1, $noreg, 0, $noreg, killed [[VMOVDQU8Zrrk]]
61807a5e31cSFreddy Ye  ; CHECK: bb.1:
61907a5e31cSFreddy Ye  ; CHECK:   successors: %bb.2(0x80000000)
62007a5e31cSFreddy Ye  ; CHECK: bb.2:
62107a5e31cSFreddy Ye  ; CHECK:   RET 0
62207a5e31cSFreddy Ye  bb.0:
62307a5e31cSFreddy Ye    liveins: $rdi, $zmm0, $zmm1
62407a5e31cSFreddy Ye
62507a5e31cSFreddy Ye    %0 = COPY $rdi
62607a5e31cSFreddy Ye    %1 = COPY $zmm0
62707a5e31cSFreddy Ye    %2 = COPY $zmm1
62807a5e31cSFreddy Ye
62907a5e31cSFreddy Ye    %5 = MOV64rm %0, 1, $noreg, 0, $noreg
6303e4caa9dSFreddy Ye    %6 = SHR64ri_ND %5, 2, implicit-def dead $eflags
6313e4caa9dSFreddy Ye    %7 = SHL64ri_ND %6, 1, implicit-def dead $eflags
6323e4caa9dSFreddy Ye    %8 = NOT64r_ND %7
6333e4caa9dSFreddy Ye    %9 = OR64rr_ND %8, %6, implicit-def dead $eflags
6343e4caa9dSFreddy Ye    %10 = AND64rr_ND %9, %7, implicit-def dead $eflags
6353e4caa9dSFreddy Ye    %11 = XOR64rr_ND %10, %6, implicit-def dead $eflags
63607a5e31cSFreddy Ye    %12 = ANDN64rr %11, %9, implicit-def dead $eflags
6373e4caa9dSFreddy Ye    %13 = ADD64rr_ND %12, %11, implicit-def dead $eflags
63807a5e31cSFreddy Ye
63907a5e31cSFreddy Ye    %3 = COPY %13
64007a5e31cSFreddy Ye    %4 = VMOVDQU8Zrrk %2, killed %3, %1
64107a5e31cSFreddy Ye    VMOVDQA32Zmr %0, 1, $noreg, 0, $noreg, killed %4
64207a5e31cSFreddy Ye
64307a5e31cSFreddy Ye    ; FIXME We can't replace TEST with KTEST due to flag differences
64407a5e31cSFreddy Ye    ; FIXME TEST64rr %13, %13, implicit-def $eflags
64507a5e31cSFreddy Ye    ; FIXME JCC_1 %bb.1, 4, implicit $eflags
64607a5e31cSFreddy Ye    ; FIXME JMP_1 %bb.2
64707a5e31cSFreddy Ye
64807a5e31cSFreddy Ye  bb.1:
64907a5e31cSFreddy Ye
65007a5e31cSFreddy Ye  bb.2:
65107a5e31cSFreddy Ye    RET 0
65207a5e31cSFreddy Ye
65307a5e31cSFreddy Ye...
65407a5e31cSFreddy Ye---
65507a5e31cSFreddy Yename:            test_16bitext
65607a5e31cSFreddy Yealignment:       16
65707a5e31cSFreddy YeexposesReturnsTwice: false
65807a5e31cSFreddy Yelegalized:       false
65907a5e31cSFreddy YeregBankSelected: false
66007a5e31cSFreddy Yeselected:        false
66107a5e31cSFreddy YetracksRegLiveness: true
66207a5e31cSFreddy Yeregisters:
66307a5e31cSFreddy Ye  - { id: 0, class: gr64, preferred-register: '' }
66407a5e31cSFreddy Ye  - { id: 1, class: vr512, preferred-register: '' }
66507a5e31cSFreddy Ye  - { id: 2, class: vr512, preferred-register: '' }
66607a5e31cSFreddy Ye  - { id: 3, class: vk16wm, preferred-register: '' }
66707a5e31cSFreddy Ye  - { id: 4, class: vr512, preferred-register: '' }
66807a5e31cSFreddy Ye  - { id: 5, class: gr16, preferred-register: '' }
66907a5e31cSFreddy Ye  - { id: 6, class: gr16, preferred-register: '' }
67007a5e31cSFreddy Yeliveins:
67107a5e31cSFreddy Ye  - { reg: '$rdi', virtual-reg: '%0' }
67207a5e31cSFreddy Ye  - { reg: '$zmm0', virtual-reg: '%1' }
67307a5e31cSFreddy Ye  - { reg: '$zmm1', virtual-reg: '%2' }
67407a5e31cSFreddy YeframeInfo:
67507a5e31cSFreddy Ye  isFrameAddressTaken: false
67607a5e31cSFreddy Ye  isReturnAddressTaken: false
67707a5e31cSFreddy Ye  hasStackMap:     false
67807a5e31cSFreddy Ye  hasPatchPoint:   false
67907a5e31cSFreddy Ye  stackSize:       0
68007a5e31cSFreddy Ye  offsetAdjustment: 0
68107a5e31cSFreddy Ye  maxAlignment:    0
68207a5e31cSFreddy Ye  adjustsStack:    false
68307a5e31cSFreddy Ye  hasCalls:        false
68407a5e31cSFreddy Ye  stackProtector:  ''
68507a5e31cSFreddy Ye  maxCallFrameSize: 4294967295
68607a5e31cSFreddy Ye  hasOpaqueSPAdjustment: false
68707a5e31cSFreddy Ye  hasVAStart:      false
68807a5e31cSFreddy Ye  hasMustTailInVarArgFunc: false
68907a5e31cSFreddy Ye  savePoint:       ''
69007a5e31cSFreddy Ye  restorePoint:    ''
69107a5e31cSFreddy YefixedStack:
69207a5e31cSFreddy Yestack:
69307a5e31cSFreddy Yeconstants:
69407a5e31cSFreddy Yebody:             |
69507a5e31cSFreddy Ye  bb.0:
69607a5e31cSFreddy Ye    liveins: $rdi, $zmm0, $zmm1
69707a5e31cSFreddy Ye
69807a5e31cSFreddy Ye    ; CHECK-LABEL: name: test_16bitext
69907a5e31cSFreddy Ye    ; CHECK: liveins: $rdi, $zmm0, $zmm1
70007a5e31cSFreddy Ye    ; CHECK: [[COPY:%[0-9]+]]:gr64 = COPY $rdi
70107a5e31cSFreddy Ye    ; CHECK: [[COPY1:%[0-9]+]]:vr512 = COPY $zmm0
70207a5e31cSFreddy Ye    ; CHECK: [[COPY2:%[0-9]+]]:vr512 = COPY $zmm1
70307a5e31cSFreddy Ye    ; CHECK: [[KMOVBkm:%[0-9]+]]:vk8 = KMOVBkm [[COPY]], 1, $noreg, 0, $noreg
70407a5e31cSFreddy Ye    ; CHECK: [[COPY3:%[0-9]+]]:vk16 = COPY [[KMOVBkm]]
705*c91f2a25SSimon Pilgrim    ; CHECK: [[KNOTWkk:%[0-9]+]]:vk16 = KNOTWkk [[COPY3]]
706*c91f2a25SSimon Pilgrim    ; CHECK: [[COPY4:%[0-9]+]]:vk16wm = COPY [[KNOTWkk]]
70707a5e31cSFreddy Ye    ; CHECK: [[VMOVAPSZrrk:%[0-9]+]]:vr512 = VMOVAPSZrrk [[COPY2]], killed [[COPY4]], [[COPY1]]
70807a5e31cSFreddy Ye    ; CHECK: VMOVAPSZmr [[COPY]], 1, $noreg, 0, $noreg, killed [[VMOVAPSZrrk]]
70907a5e31cSFreddy Ye    ; CHECK: RET 0
71007a5e31cSFreddy Ye    %0 = COPY $rdi
71107a5e31cSFreddy Ye    %1 = COPY $zmm0
71207a5e31cSFreddy Ye    %2 = COPY $zmm1
71307a5e31cSFreddy Ye
71407a5e31cSFreddy Ye    %5 = MOVZX16rm8 %0, 1, $noreg, 0, $noreg
7153e4caa9dSFreddy Ye    %6 = NOT16r_ND %5
71607a5e31cSFreddy Ye
71707a5e31cSFreddy Ye    %3 = COPY %6
71807a5e31cSFreddy Ye    %4 = VMOVAPSZrrk %2, killed %3, %1
71907a5e31cSFreddy Ye    VMOVAPSZmr %0, 1, $noreg, 0, $noreg, killed %4
72007a5e31cSFreddy Ye    RET 0
72107a5e31cSFreddy Ye
72207a5e31cSFreddy Ye...
72307a5e31cSFreddy Ye---
72407a5e31cSFreddy Yename:            test_32bitext
72507a5e31cSFreddy Yealignment:       16
72607a5e31cSFreddy YeexposesReturnsTwice: false
72707a5e31cSFreddy Yelegalized:       false
72807a5e31cSFreddy YeregBankSelected: false
72907a5e31cSFreddy Yeselected:        false
73007a5e31cSFreddy YetracksRegLiveness: true
73107a5e31cSFreddy Yeregisters:
73207a5e31cSFreddy Ye  - { id: 0, class: gr64, preferred-register: '' }
73307a5e31cSFreddy Ye  - { id: 1, class: vr512, preferred-register: '' }
73407a5e31cSFreddy Ye  - { id: 2, class: vr512, preferred-register: '' }
73507a5e31cSFreddy Ye  - { id: 3, class: vk64wm, preferred-register: '' }
73607a5e31cSFreddy Ye  - { id: 4, class: vr512, preferred-register: '' }
73707a5e31cSFreddy Ye  - { id: 5, class: gr32, preferred-register: '' }
73807a5e31cSFreddy Ye  - { id: 6, class: gr32, preferred-register: '' }
73907a5e31cSFreddy Ye  - { id: 7, class: gr32, preferred-register: '' }
74007a5e31cSFreddy Yeliveins:
74107a5e31cSFreddy Ye  - { reg: '$rdi', virtual-reg: '%0' }
74207a5e31cSFreddy Ye  - { reg: '$zmm0', virtual-reg: '%1' }
74307a5e31cSFreddy Ye  - { reg: '$zmm1', virtual-reg: '%2' }
74407a5e31cSFreddy YeframeInfo:
74507a5e31cSFreddy Ye  isFrameAddressTaken: false
74607a5e31cSFreddy Ye  isReturnAddressTaken: false
74707a5e31cSFreddy Ye  hasStackMap:     false
74807a5e31cSFreddy Ye  hasPatchPoint:   false
74907a5e31cSFreddy Ye  stackSize:       0
75007a5e31cSFreddy Ye  offsetAdjustment: 0
75107a5e31cSFreddy Ye  maxAlignment:    0
75207a5e31cSFreddy Ye  adjustsStack:    false
75307a5e31cSFreddy Ye  hasCalls:        false
75407a5e31cSFreddy Ye  stackProtector:  ''
75507a5e31cSFreddy Ye  maxCallFrameSize: 4294967295
75607a5e31cSFreddy Ye  hasOpaqueSPAdjustment: false
75707a5e31cSFreddy Ye  hasVAStart:      false
75807a5e31cSFreddy Ye  hasMustTailInVarArgFunc: false
75907a5e31cSFreddy Ye  savePoint:       ''
76007a5e31cSFreddy Ye  restorePoint:    ''
76107a5e31cSFreddy YefixedStack:
76207a5e31cSFreddy Yestack:
76307a5e31cSFreddy Yeconstants:
76407a5e31cSFreddy Yebody:             |
76507a5e31cSFreddy Ye  bb.0:
76607a5e31cSFreddy Ye    liveins: $rdi, $zmm0, $zmm1
76707a5e31cSFreddy Ye
76807a5e31cSFreddy Ye    ; CHECK-LABEL: name: test_32bitext
76907a5e31cSFreddy Ye    ; CHECK: liveins: $rdi, $zmm0, $zmm1
77007a5e31cSFreddy Ye    ; CHECK: [[COPY:%[0-9]+]]:gr64 = COPY $rdi
77107a5e31cSFreddy Ye    ; CHECK: [[COPY1:%[0-9]+]]:vr512 = COPY $zmm0
77207a5e31cSFreddy Ye    ; CHECK: [[COPY2:%[0-9]+]]:vr512 = COPY $zmm1
77307a5e31cSFreddy Ye    ; CHECK: [[KMOVBkm:%[0-9]+]]:vk8 = KMOVBkm [[COPY]], 1, $noreg, 0, $noreg
77407a5e31cSFreddy Ye    ; CHECK: [[COPY3:%[0-9]+]]:vk32 = COPY [[KMOVBkm]]
77507a5e31cSFreddy Ye    ; CHECK: [[KMOVWkm:%[0-9]+]]:vk16 = KMOVWkm [[COPY]], 1, $noreg, 0, $noreg
77607a5e31cSFreddy Ye    ; CHECK: [[COPY4:%[0-9]+]]:vk32 = COPY [[KMOVWkm]]
777*c91f2a25SSimon Pilgrim    ; CHECK: [[KADDDkk:%[0-9]+]]:vk32 = KADDDkk [[COPY3]], [[COPY4]]
778*c91f2a25SSimon Pilgrim    ; CHECK: [[COPY5:%[0-9]+]]:vk64wm = COPY [[KADDDkk]]
77907a5e31cSFreddy Ye    ; CHECK: [[VMOVDQU16Zrrk:%[0-9]+]]:vr512 = VMOVDQU16Zrrk [[COPY2]], killed [[COPY5]], [[COPY1]]
78007a5e31cSFreddy Ye    ; CHECK: VMOVDQA32Zmr [[COPY]], 1, $noreg, 0, $noreg, killed [[VMOVDQU16Zrrk]]
78107a5e31cSFreddy Ye    ; CHECK: RET 0
78207a5e31cSFreddy Ye    %0 = COPY $rdi
78307a5e31cSFreddy Ye    %1 = COPY $zmm0
78407a5e31cSFreddy Ye    %2 = COPY $zmm1
78507a5e31cSFreddy Ye
78607a5e31cSFreddy Ye    %5 = MOVZX32rm8 %0, 1, $noreg, 0, $noreg
78707a5e31cSFreddy Ye    %6 = MOVZX32rm16 %0, 1, $noreg, 0, $noreg
7883e4caa9dSFreddy Ye    %7 = ADD32rr_ND %5, %6, implicit-def dead $eflags
78907a5e31cSFreddy Ye
79007a5e31cSFreddy Ye    %3 = COPY %7
79107a5e31cSFreddy Ye    %4 = VMOVDQU16Zrrk %2, killed %3, %1
79207a5e31cSFreddy Ye    VMOVDQA32Zmr %0, 1, $noreg, 0, $noreg, killed %4
79307a5e31cSFreddy Ye    RET 0
79407a5e31cSFreddy Ye
79507a5e31cSFreddy Ye...
79607a5e31cSFreddy Ye---
79707a5e31cSFreddy Yename:            test_64bitext
79807a5e31cSFreddy Yealignment:       16
79907a5e31cSFreddy YeexposesReturnsTwice: false
80007a5e31cSFreddy Yelegalized:       false
80107a5e31cSFreddy YeregBankSelected: false
80207a5e31cSFreddy Yeselected:        false
80307a5e31cSFreddy YetracksRegLiveness: true
80407a5e31cSFreddy Yeregisters:
80507a5e31cSFreddy Ye  - { id: 0, class: gr64, preferred-register: '' }
80607a5e31cSFreddy Ye  - { id: 1, class: vr512, preferred-register: '' }
80707a5e31cSFreddy Ye  - { id: 2, class: vr512, preferred-register: '' }
80807a5e31cSFreddy Ye  - { id: 3, class: vk64wm, preferred-register: '' }
80907a5e31cSFreddy Ye  - { id: 4, class: vr512, preferred-register: '' }
81007a5e31cSFreddy Ye  - { id: 5, class: gr64, preferred-register: '' }
81107a5e31cSFreddy Ye  - { id: 6, class: gr64, preferred-register: '' }
81207a5e31cSFreddy Ye  - { id: 7, class: gr64, preferred-register: '' }
81307a5e31cSFreddy Yeliveins:
81407a5e31cSFreddy Ye  - { reg: '$rdi', virtual-reg: '%0' }
81507a5e31cSFreddy Ye  - { reg: '$zmm0', virtual-reg: '%1' }
81607a5e31cSFreddy Ye  - { reg: '$zmm1', virtual-reg: '%2' }
81707a5e31cSFreddy YeframeInfo:
81807a5e31cSFreddy Ye  isFrameAddressTaken: false
81907a5e31cSFreddy Ye  isReturnAddressTaken: false
82007a5e31cSFreddy Ye  hasStackMap:     false
82107a5e31cSFreddy Ye  hasPatchPoint:   false
82207a5e31cSFreddy Ye  stackSize:       0
82307a5e31cSFreddy Ye  offsetAdjustment: 0
82407a5e31cSFreddy Ye  maxAlignment:    0
82507a5e31cSFreddy Ye  adjustsStack:    false
82607a5e31cSFreddy Ye  hasCalls:        false
82707a5e31cSFreddy Ye  stackProtector:  ''
82807a5e31cSFreddy Ye  maxCallFrameSize: 4294967295
82907a5e31cSFreddy Ye  hasOpaqueSPAdjustment: false
83007a5e31cSFreddy Ye  hasVAStart:      false
83107a5e31cSFreddy Ye  hasMustTailInVarArgFunc: false
83207a5e31cSFreddy Ye  savePoint:       ''
83307a5e31cSFreddy Ye  restorePoint:    ''
83407a5e31cSFreddy YefixedStack:
83507a5e31cSFreddy Yestack:
83607a5e31cSFreddy Yeconstants:
83707a5e31cSFreddy Yebody:             |
83807a5e31cSFreddy Ye  bb.0:
83907a5e31cSFreddy Ye    liveins: $rdi, $zmm0, $zmm1
84007a5e31cSFreddy Ye
84107a5e31cSFreddy Ye    ; CHECK-LABEL: name: test_64bitext
84207a5e31cSFreddy Ye    ; CHECK: liveins: $rdi, $zmm0, $zmm1
84307a5e31cSFreddy Ye    ; CHECK: [[COPY:%[0-9]+]]:gr64 = COPY $rdi
84407a5e31cSFreddy Ye    ; CHECK: [[COPY1:%[0-9]+]]:vr512 = COPY $zmm0
84507a5e31cSFreddy Ye    ; CHECK: [[COPY2:%[0-9]+]]:vr512 = COPY $zmm1
84607a5e31cSFreddy Ye    ; CHECK: [[KMOVBkm:%[0-9]+]]:vk8 = KMOVBkm [[COPY]], 1, $noreg, 0, $noreg
84707a5e31cSFreddy Ye    ; CHECK: [[COPY3:%[0-9]+]]:vk64 = COPY [[KMOVBkm]]
84807a5e31cSFreddy Ye    ; CHECK: [[KMOVWkm:%[0-9]+]]:vk16 = KMOVWkm [[COPY]], 1, $noreg, 0, $noreg
84907a5e31cSFreddy Ye    ; CHECK: [[COPY4:%[0-9]+]]:vk64 = COPY [[KMOVWkm]]
850*c91f2a25SSimon Pilgrim    ; CHECK: [[KADDQkk:%[0-9]+]]:vk64 = KADDQkk [[COPY3]], [[COPY4]]
851*c91f2a25SSimon Pilgrim    ; CHECK: [[COPY5:%[0-9]+]]:vk64wm = COPY [[KADDQkk]]
85207a5e31cSFreddy Ye    ; CHECK: [[VMOVDQU8Zrrk:%[0-9]+]]:vr512 = VMOVDQU8Zrrk [[COPY2]], killed [[COPY5]], [[COPY1]]
85307a5e31cSFreddy Ye    ; CHECK: VMOVDQA32Zmr [[COPY]], 1, $noreg, 0, $noreg, killed [[VMOVDQU8Zrrk]]
85407a5e31cSFreddy Ye    ; CHECK: RET 0
85507a5e31cSFreddy Ye    %0 = COPY $rdi
85607a5e31cSFreddy Ye    %1 = COPY $zmm0
85707a5e31cSFreddy Ye    %2 = COPY $zmm1
85807a5e31cSFreddy Ye
85907a5e31cSFreddy Ye    %5 = MOVZX64rm8 %0, 1, $noreg, 0, $noreg
86007a5e31cSFreddy Ye    %6 = MOVZX64rm16 %0, 1, $noreg, 0, $noreg
8613e4caa9dSFreddy Ye    %7 = ADD64rr_ND %5, %6, implicit-def dead $eflags
86207a5e31cSFreddy Ye
86307a5e31cSFreddy Ye    %3 = COPY %7
86407a5e31cSFreddy Ye    %4 = VMOVDQU8Zrrk %2, killed %3, %1
86507a5e31cSFreddy Ye    VMOVDQA32Zmr %0, 1, $noreg, 0, $noreg, killed %4
86607a5e31cSFreddy Ye    RET 0
86707a5e31cSFreddy Ye
86807a5e31cSFreddy Ye...
86907a5e31cSFreddy Ye---
87007a5e31cSFreddy Yename:            test_unused
87107a5e31cSFreddy Yealignment:       16
87207a5e31cSFreddy YeexposesReturnsTwice: false
87307a5e31cSFreddy Yelegalized:       true
87407a5e31cSFreddy YeregBankSelected: true
87507a5e31cSFreddy Yeselected:        true
87607a5e31cSFreddy YefailedISel:      false
87707a5e31cSFreddy YetracksRegLiveness: true
87807a5e31cSFreddy YehasWinCFI:       false
87907a5e31cSFreddy YecallsEHReturn:   false
88007a5e31cSFreddy YecallsUnwindInit: false
88107a5e31cSFreddy YehasEHCatchret:   false
88207a5e31cSFreddy YehasEHScopes:     false
88307a5e31cSFreddy YehasEHFunclets:   false
88407a5e31cSFreddy YeisOutlined:      false
88507a5e31cSFreddy YedebugInstrRef:   false
88607a5e31cSFreddy YefailsVerification: false
88707a5e31cSFreddy YetracksDebugUserValues: false
88807a5e31cSFreddy Yeregisters:
88907a5e31cSFreddy Ye# Note that this test is supposed to have registers without classes
89007a5e31cSFreddy Ye  - { id: 0, class: _, preferred-register: '' }
89107a5e31cSFreddy Ye  - { id: 1, class: _, preferred-register: '' }
89207a5e31cSFreddy Ye  - { id: 2, class: _, preferred-register: '' }
89307a5e31cSFreddy Yeliveins:
89407a5e31cSFreddy Ye  - { reg: '$rdi', virtual-reg: '' }
89507a5e31cSFreddy YeframeInfo:
89607a5e31cSFreddy Ye  isFrameAddressTaken: false
89707a5e31cSFreddy Ye  isReturnAddressTaken: false
89807a5e31cSFreddy Ye  hasStackMap:     false
89907a5e31cSFreddy Ye  hasPatchPoint:   false
90007a5e31cSFreddy Ye  stackSize:       0
90107a5e31cSFreddy Ye  offsetAdjustment: 0
90207a5e31cSFreddy Ye  maxAlignment:    1
90307a5e31cSFreddy Ye  adjustsStack:    false
90407a5e31cSFreddy Ye  hasCalls:        false
90507a5e31cSFreddy Ye  stackProtector:  ''
90607a5e31cSFreddy Ye  functionContext: ''
90707a5e31cSFreddy Ye  maxCallFrameSize: 4294967295
90807a5e31cSFreddy Ye  cvBytesOfCalleeSavedRegisters: 0
90907a5e31cSFreddy Ye  hasOpaqueSPAdjustment: false
91007a5e31cSFreddy Ye  hasVAStart:      false
91107a5e31cSFreddy Ye  hasMustTailInVarArgFunc: false
91207a5e31cSFreddy Ye  hasTailCall:     false
91307a5e31cSFreddy Ye  localFrameSize:  0
91407a5e31cSFreddy Ye  savePoint:       ''
91507a5e31cSFreddy Ye  restorePoint:    ''
91607a5e31cSFreddy YefixedStack:      []
91707a5e31cSFreddy Yestack:           []
91807a5e31cSFreddy Yeentry_values:    []
91907a5e31cSFreddy YecallSites:       []
92007a5e31cSFreddy YedebugValueSubstitutions: []
92107a5e31cSFreddy Yeconstants:       []
92207a5e31cSFreddy YemachineFunctionInfo: {}
92307a5e31cSFreddy Yebody:             |
92407a5e31cSFreddy Ye  bb.1 (%ir-block.1):
92507a5e31cSFreddy Ye    liveins: $rdi
92607a5e31cSFreddy Ye
92707a5e31cSFreddy Ye    RET 0
92807a5e31cSFreddy Ye
92907a5e31cSFreddy Ye...
930