1*36b4b9d9SFreddy Ye# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 3 2*36b4b9d9SFreddy Ye# RUN: llc -mtriple=x86_64-- -run-pass=peephole-opt %s -o - | FileCheck %s 3*36b4b9d9SFreddy Ye--- | 4*36b4b9d9SFreddy Ye define void @foldImmediate() { ret void } 5*36b4b9d9SFreddy Ye... 6*36b4b9d9SFreddy Ye--- 7*36b4b9d9SFreddy Ye# Check that immediates can be folded into ALU instructions. 8*36b4b9d9SFreddy Yename: foldImmediate 9*36b4b9d9SFreddy Yeregisters: 10*36b4b9d9SFreddy Ye - { id: 0, class: gr32 } 11*36b4b9d9SFreddy Ye - { id: 1, class: gr32 } 12*36b4b9d9SFreddy Ye - { id: 2, class: gr32 } 13*36b4b9d9SFreddy Ye - { id: 3, class: gr32 } 14*36b4b9d9SFreddy Ye - { id: 4, class: gr32 } 15*36b4b9d9SFreddy Ye - { id: 5, class: gr32 } 16*36b4b9d9SFreddy Ye - { id: 6, class: gr32 } 17*36b4b9d9SFreddy Ye - { id: 7, class: gr64 } 18*36b4b9d9SFreddy Ye - { id: 8, class: gr64 } 19*36b4b9d9SFreddy Ye - { id: 9, class: gr64 } 20*36b4b9d9SFreddy Ye - { id: 10, class: gr64 } 21*36b4b9d9SFreddy Ye - { id: 11, class: gr64 } 22*36b4b9d9SFreddy Ye - { id: 12, class: gr64 } 23*36b4b9d9SFreddy Ye - { id: 13, class: gr64 } 24*36b4b9d9SFreddy Ye - { id: 14, class: gr64 } 25*36b4b9d9SFreddy Ye - { id: 15, class: gr64 } 26*36b4b9d9SFreddy Ye - { id: 16, class: gr32 } 27*36b4b9d9SFreddy Ye - { id: 17, class: gr64 } 28*36b4b9d9SFreddy Ye - { id: 18, class: gr32 } 29*36b4b9d9SFreddy Ye 30*36b4b9d9SFreddy Yebody: | 31*36b4b9d9SFreddy Ye bb.0: 32*36b4b9d9SFreddy Ye liveins: $rdi, $rsi 33*36b4b9d9SFreddy Ye 34*36b4b9d9SFreddy Ye ; CHECK-LABEL: name: foldImmediate 35*36b4b9d9SFreddy Ye ; CHECK: liveins: $rdi, $rsi 36*36b4b9d9SFreddy Ye ; CHECK-NEXT: {{ $}} 37*36b4b9d9SFreddy Ye ; CHECK-NEXT: [[MOV32ri:%[0-9]+]]:gr32 = MOV32ri 81 38*36b4b9d9SFreddy Ye ; CHECK-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY $edi 39*36b4b9d9SFreddy Ye ; CHECK-NEXT: CTEST32ri [[COPY]], 81, 2, 10, implicit-def $eflags, implicit $eflags 40*36b4b9d9SFreddy Ye ; CHECK-NEXT: NOOP implicit $eflags 41*36b4b9d9SFreddy Ye ; CHECK-NEXT: CCMP32ri [[COPY]], 81, 2, 10, implicit-def $eflags, implicit $eflags 42*36b4b9d9SFreddy Ye ; CHECK-NEXT: NOOP implicit $eflags 43*36b4b9d9SFreddy Ye ; CHECK-NEXT: [[SUBREG_TO_REG:%[0-9]+]]:gr64 = SUBREG_TO_REG 0, killed [[MOV32ri]], %subreg.sub_32bit 44*36b4b9d9SFreddy Ye ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gr64 = COPY $rsi 45*36b4b9d9SFreddy Ye ; CHECK-NEXT: CTEST64ri32 [[COPY1]], 81, 2, 10, implicit-def $eflags, implicit $eflags 46*36b4b9d9SFreddy Ye ; CHECK-NEXT: NOOP implicit $eflags 47*36b4b9d9SFreddy Ye ; CHECK-NEXT: CCMP64ri32 [[COPY1]], 81, 2, 10, implicit-def $eflags, implicit $eflags 48*36b4b9d9SFreddy Ye ; CHECK-NEXT: NOOP implicit $eflags 49*36b4b9d9SFreddy Ye ; CHECK-NEXT: CCMP64rr [[SUBREG_TO_REG]], [[COPY1]], 2, 10, implicit-def $eflags, implicit $eflags 50*36b4b9d9SFreddy Ye ; CHECK-NEXT: NOOP implicit $eflags 51*36b4b9d9SFreddy Ye %0 = MOV32ri 81 52*36b4b9d9SFreddy Ye %1 = COPY $edi 53*36b4b9d9SFreddy Ye 54*36b4b9d9SFreddy Ye CTEST32rr %0, %1, 2, 10, implicit-def $eflags, implicit $eflags 55*36b4b9d9SFreddy Ye NOOP implicit $eflags 56*36b4b9d9SFreddy Ye 57*36b4b9d9SFreddy Ye CCMP32rr %1, %0, 2, 10, implicit-def $eflags, implicit $eflags 58*36b4b9d9SFreddy Ye NOOP implicit $eflags 59*36b4b9d9SFreddy Ye 60*36b4b9d9SFreddy Ye %7 = SUBREG_TO_REG 0, killed %0:gr32, %subreg.sub_32bit 61*36b4b9d9SFreddy Ye %8 = COPY $rsi 62*36b4b9d9SFreddy Ye 63*36b4b9d9SFreddy Ye CTEST64rr %8, %7, 2, 10, implicit-def $eflags, implicit $eflags 64*36b4b9d9SFreddy Ye NOOP implicit $eflags 65*36b4b9d9SFreddy Ye 66*36b4b9d9SFreddy Ye CCMP64rr %8, %7, 2, 10, implicit-def $eflags, implicit $eflags 67*36b4b9d9SFreddy Ye NOOP implicit $eflags 68*36b4b9d9SFreddy Ye CCMP64rr %7, %8, 2, 10, implicit-def $eflags, implicit $eflags 69*36b4b9d9SFreddy Ye NOOP implicit $eflags 70*36b4b9d9SFreddy Ye... 71