# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=x86_64-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=CHECK

--- |
  define i8 @const_i8() {
    ret i8 2
  }

  define i16 @const_i16() {
    ret i16 3
  }

  define i32 @const_i32() {
    ret i32 4
  }

  define i32 @const_i32_0() {
    ret i32 0
  }

  define i64 @const_i64() {
    ret i64 68719476720
  }

  define i64 @const_i64_u32() {
    ret i64 1879048192
  }

  define i64 @const_i64_i32() {
    ret i64 -1
  }

  define void @main(i32** %data) {
    store i32* null, i32** %data, align 8
    ret void
  }

...
---
name:            const_i8
legalized:       true
regBankSelected: true
selected:        false
registers:
  - { id: 0, class: gpr }
body:             |
  bb.1 (%ir-block.0):
    ; CHECK-LABEL: name: const_i8
    ; CHECK: [[MOV8ri:%[0-9]+]]:gr8 = MOV8ri 2
    ; CHECK: $al = COPY [[MOV8ri]]
    ; CHECK: RET 0, implicit $al
    %0(s8) = G_CONSTANT i8 2
    $al = COPY %0(s8)
    RET 0, implicit $al

...
---
name:            const_i16
legalized:       true
regBankSelected: true
selected:        false
registers:
  - { id: 0, class: gpr }
body:             |
  bb.1 (%ir-block.0):
    ; CHECK-LABEL: name: const_i16
    ; CHECK: [[MOV16ri:%[0-9]+]]:gr16 = MOV16ri 3
    ; CHECK: $ax = COPY [[MOV16ri]]
    ; CHECK: RET 0, implicit $ax
    %0(s16) = G_CONSTANT i16 3
    $ax = COPY %0(s16)
    RET 0, implicit $ax

...
---
name:            const_i32
legalized:       true
regBankSelected: true
selected:        false
registers:
  - { id: 0, class: gpr }
body:             |
  bb.1 (%ir-block.0):
    ; CHECK-LABEL: name: const_i32
    ; CHECK: [[MOV32ri:%[0-9]+]]:gr32 = MOV32ri 4
    ; CHECK: $eax = COPY [[MOV32ri]]
    ; CHECK: RET 0, implicit $eax
    %0(s32) = G_CONSTANT i32 4
    $eax = COPY %0(s32)
    RET 0, implicit $eax

...
---
name:            const_i32_0
legalized:       true
regBankSelected: true
registers:
  - { id: 0, class: gpr }
body:             |
  bb.1 (%ir-block.0):
    ; CHECK-LABEL: name: const_i32_0
    ; CHECK: [[MOV32r0_:%[0-9]+]]:gr32 = MOV32r0 implicit-def $eflags
    ; CHECK: $eax = COPY [[MOV32r0_]]
    ; CHECK: RET 0, implicit $eax
    %0(s32) = G_CONSTANT i32 0
    $eax = COPY %0(s32)
    RET 0, implicit $eax

...
---
name:            const_i64
legalized:       true
regBankSelected: true
selected:        false
registers:
  - { id: 0, class: gpr }
body:             |
  bb.1 (%ir-block.0):
    ; CHECK-LABEL: name: const_i64
    ; CHECK: [[MOV64ri:%[0-9]+]]:gr64 = MOV64ri 68719476720
    ; CHECK: $rax = COPY [[MOV64ri]]
    ; CHECK: RET 0, implicit $rax
    %0(s64) = G_CONSTANT i64 68719476720
    $rax = COPY %0(s64)
    RET 0, implicit $rax

...
---
name:            const_i64_u32
alignment:       4
legalized:       true
regBankSelected: true
selected:        false
registers:
  - { id: 0, class: gpr }
body:             |
  bb.1 (%ir-block.0):
    ; CHECK-LABEL: name: const_i64_u32
    ; CHECK: [[MOV64ri32_:%[0-9]+]]:gr64 = MOV64ri32 1879048192
    ; CHECK: $rax = COPY [[MOV64ri32_]]
    ; CHECK: RET 0, implicit $rax
    %0(s64) = G_CONSTANT i64 1879048192
    $rax = COPY %0(s64)
    RET 0, implicit $rax

...
---
name:            const_i64_i32
legalized:       true
regBankSelected: true
selected:        false
registers:
  - { id: 0, class: gpr }
body:             |
  bb.1 (%ir-block.0):
    ; CHECK-LABEL: name: const_i64_i32
    ; CHECK: [[MOV64ri32_:%[0-9]+]]:gr64 = MOV64ri32 -1
    ; CHECK: $rax = COPY [[MOV64ri32_]]
    ; CHECK: RET 0, implicit $rax
    %0(s64) = G_CONSTANT i64 -1
    $rax = COPY %0(s64)
    RET 0, implicit $rax

...
---
name:            main
alignment:       4
legalized:       true
regBankSelected: true
registers:
  - { id: 0, class: gpr, preferred-register: '' }
  - { id: 1, class: gpr, preferred-register: '' }
body:             |
  bb.1 (%ir-block.0):
    liveins: $rdi

    ; CHECK-LABEL: name: main
    ; CHECK: [[COPY:%[0-9]+]]:gr64 = COPY $rdi
    ; CHECK: [[MOV64ri32_:%[0-9]+]]:gr64 = MOV64ri32 0
    ; CHECK: MOV64mr [[COPY]], 1, $noreg, 0, $noreg, [[MOV64ri32_]] :: (store 8 into %ir.data)
    ; CHECK: RET 0
    %0(p0) = COPY $rdi
    %1(p0) = G_CONSTANT i64 0
    G_STORE %1(p0), %0(p0) :: (store 8 into %ir.data)
    RET 0

...
