// RUN: %clang_cc1 %s -triple=x86_64-unknown-unknown -target-feature +3dnowa -emit-llvm -o - -Wall -Werror | FileCheck %s -check-prefix=GCC -check-prefix=CHECK
// RUN: %clang_cc1 %s -triple=x86_64-scei-ps4 -target-feature +3dnowa -emit-llvm -o - -Wall -Werror | FileCheck %s -check-prefix=PS4 -check-prefix=CHECK

// Don't include mm_malloc.h, it's system specific.
#define __MM_MALLOC_H

#include <x86intrin.h>

__m64 test_m_pavgusb(__m64 m1, __m64 m2) {
  // PS4-LABEL: define i64 @test_m_pavgusb
  // GCC-LABEL: define double @test_m_pavgusb
  // CHECK: @llvm.x86.3dnow.pavgusb
  return _m_pavgusb(m1, m2);
}

__m64 test_m_pf2id(__m64 m) {
  // PS4-LABEL: define i64 @test_m_pf2id
  // GCC-LABEL: define double @test_m_pf2id
  // CHECK: @llvm.x86.3dnow.pf2id
  return _m_pf2id(m);
}

__m64 test_m_pfacc(__m64 m1, __m64 m2) {
  // PS4-LABEL: define i64 @test_m_pfacc
  // GCC-LABEL: define double @test_m_pfacc
  // CHECK: @llvm.x86.3dnow.pfacc
  return _m_pfacc(m1, m2);
}

__m64 test_m_pfadd(__m64 m1, __m64 m2) {
  // PS4-LABEL: define i64 @test_m_pfadd
  // GCC-LABEL: define double @test_m_pfadd
  // CHECK: @llvm.x86.3dnow.pfadd
  return _m_pfadd(m1, m2);
}

__m64 test_m_pfcmpeq(__m64 m1, __m64 m2) {
  // PS4-LABEL: define i64 @test_m_pfcmpeq
  // GCC-LABEL: define double @test_m_pfcmpeq
  // CHECK: @llvm.x86.3dnow.pfcmpeq
  return _m_pfcmpeq(m1, m2);
}

__m64 test_m_pfcmpge(__m64 m1, __m64 m2) {
  // PS4-LABEL: define i64 @test_m_pfcmpge
  // GCC-LABEL: define double @test_m_pfcmpge
  // CHECK: @llvm.x86.3dnow.pfcmpge
  return _m_pfcmpge(m1, m2);
}

__m64 test_m_pfcmpgt(__m64 m1, __m64 m2) {
  // PS4-LABEL: define i64 @test_m_pfcmpgt
  // GCC-LABEL: define double @test_m_pfcmpgt
  // CHECK: @llvm.x86.3dnow.pfcmpgt
  return _m_pfcmpgt(m1, m2);
}

__m64 test_m_pfmax(__m64 m1, __m64 m2) {
  // PS4-LABEL: define i64 @test_m_pfmax
  // GCC-LABEL: define double @test_m_pfmax
  // CHECK: @llvm.x86.3dnow.pfmax
  return _m_pfmax(m1, m2);
}

__m64 test_m_pfmin(__m64 m1, __m64 m2) {
  // PS4-LABEL: define i64 @test_m_pfmin
  // GCC-LABEL: define double @test_m_pfmin
  // CHECK: @llvm.x86.3dnow.pfmin
  return _m_pfmin(m1, m2);
}

__m64 test_m_pfmul(__m64 m1, __m64 m2) {
  // PS4-LABEL: define i64 @test_m_pfmul
  // GCC-LABEL: define double @test_m_pfmul
  // CHECK: @llvm.x86.3dnow.pfmul
  return _m_pfmul(m1, m2);
}

__m64 test_m_pfrcp(__m64 m) {
  // PS4-LABEL: define i64 @test_m_pfrcp
  // GCC-LABEL: define double @test_m_pfrcp
  // CHECK: @llvm.x86.3dnow.pfrcp
  return _m_pfrcp(m);
}

__m64 test_m_pfrcpit1(__m64 m1, __m64 m2) {
  // PS4-LABEL: define i64 @test_m_pfrcpit1
  // GCC-LABEL: define double @test_m_pfrcpit1
  // CHECK: @llvm.x86.3dnow.pfrcpit1
  return _m_pfrcpit1(m1, m2);
}

__m64 test_m_pfrcpit2(__m64 m1, __m64 m2) {
  // PS4-LABEL: define i64 @test_m_pfrcpit2
  // GCC-LABEL: define double @test_m_pfrcpit2
  // CHECK: @llvm.x86.3dnow.pfrcpit2
  return _m_pfrcpit2(m1, m2);
}

__m64 test_m_pfrsqrt(__m64 m) {
  // PS4-LABEL: define i64 @test_m_pfrsqrt
  // GCC-LABEL: define double @test_m_pfrsqrt
  // CHECK: @llvm.x86.3dnow.pfrsqrt
  return _m_pfrsqrt(m);
}

__m64 test_m_pfrsqrtit1(__m64 m1, __m64 m2) {
  // PS4-LABEL: define i64 @test_m_pfrsqrtit1
  // GCC-LABEL: define double @test_m_pfrsqrtit1
  // CHECK: @llvm.x86.3dnow.pfrsqit1
  return _m_pfrsqrtit1(m1, m2);
}

__m64 test_m_pfsub(__m64 m1, __m64 m2) {
  // PS4-LABEL: define i64 @test_m_pfsub
  // GCC-LABEL: define double @test_m_pfsub
  // CHECK: @llvm.x86.3dnow.pfsub
  return _m_pfsub(m1, m2);
}

__m64 test_m_pfsubr(__m64 m1, __m64 m2) {
  // PS4-LABEL: define i64 @test_m_pfsubr
  // GCC-LABEL: define double @test_m_pfsubr
  // CHECK: @llvm.x86.3dnow.pfsubr
  return _m_pfsubr(m1, m2);
}

__m64 test_m_pi2fd(__m64 m) {
  // PS4-LABEL: define i64 @test_m_pi2fd
  // GCC-LABEL: define double @test_m_pi2fd
  // CHECK: @llvm.x86.3dnow.pi2fd
  return _m_pi2fd(m);
}

__m64 test_m_pmulhrw(__m64 m1, __m64 m2) {
  // PS4-LABEL: define i64 @test_m_pmulhrw
  // GCC-LABEL: define double @test_m_pmulhrw
  // CHECK: @llvm.x86.3dnow.pmulhrw
  return _m_pmulhrw(m1, m2);
}

__m64 test_m_pf2iw(__m64 m) {
  // PS4-LABEL: define i64 @test_m_pf2iw
  // GCC-LABEL: define double @test_m_pf2iw
  // CHECK: @llvm.x86.3dnowa.pf2iw
  return _m_pf2iw(m);
}

__m64 test_m_pfnacc(__m64 m1, __m64 m2) {
  // PS4-LABEL: define i64 @test_m_pfnacc
  // GCC-LABEL: define double @test_m_pfnacc
  // CHECK: @llvm.x86.3dnowa.pfnacc
  return _m_pfnacc(m1, m2);
}

__m64 test_m_pfpnacc(__m64 m1, __m64 m2) {
  // PS4-LABEL: define i64 @test_m_pfpnacc
  // GCC-LABEL: define double @test_m_pfpnacc
  // CHECK: @llvm.x86.3dnowa.pfpnacc
  return _m_pfpnacc(m1, m2);
}

__m64 test_m_pi2fw(__m64 m) {
  // PS4-LABEL: define i64 @test_m_pi2fw
  // GCC-LABEL: define double @test_m_pi2fw
  // CHECK: @llvm.x86.3dnowa.pi2fw
  return _m_pi2fw(m);
}

__m64 test_m_pswapdsf(__m64 m) {
  // PS4-LABEL: define i64 @test_m_pswapdsf
  // GCC-LABEL: define double @test_m_pswapdsf
  // CHECK: @llvm.x86.3dnowa.pswapd
  return _m_pswapdsf(m);
}

__m64 test_m_pswapdsi(__m64 m) {
  // PS4-LABEL: define i64 @test_m_pswapdsi
  // GCC-LABEL: define double @test_m_pswapdsi
  // CHECK: @llvm.x86.3dnowa.pswapd
  return _m_pswapdsi(m);
}
