// RUN: %clang_cc1 %s -triple=x86_64-unknown-unknown -target-feature +3dnowa -emit-llvm -o - -Werror | FileCheck %s

// 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) {
  // CHECK-LABEL: define i64 @test_m_pavgusb
  // CHECK: @llvm.x86.3dnow.pavgusb
  return _m_pavgusb(m1, m2);
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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