We require d/q suffixes on the memory form of these instructions to disambiguate the memory size. We don't require it on the register forms, but need to support parsing both with and without it. Previously we always printed the d/q suffix on the register forms, but it's redundant and inconsistent with gcc and objdump. After this patch we should support the d/q for parsing, but not print it when its unneeded. llvm-svn: 360085
20 lines
677 B
LLVM
20 lines
677 B
LLVM
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
|
; RUN: llc -O3 < %s -mtriple=x86_64-apple-darwin -mattr=+avx512bw | FileCheck %s
|
|
|
|
define double @foo(i32** nocapture readonly) #0 {
|
|
; CHECK-LABEL: foo:
|
|
; CHECK: ## %bb.0:
|
|
; CHECK-NEXT: movq (%rax), %rax
|
|
; CHECK-NEXT: vcvtsi2sd %rax, %xmm0, %xmm1
|
|
; CHECK-NEXT: kmovd %eax, %k1
|
|
; CHECK-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
|
|
; CHECK-NEXT: vmovsd %xmm1, %xmm0, %xmm0 {%k1}
|
|
; CHECK-NEXT: retq
|
|
%2 = load i64, i64* undef, align 8
|
|
%3 = and i64 %2, 1
|
|
%4 = icmp eq i64 %3, 0
|
|
%5 = sitofp i64 %2 to double
|
|
%6 = select i1 %4, double 1.000000e+00, double %5
|
|
ret double %6
|
|
}
|