1 // RUN: %clang_cc1 %s -triple=x86_64-unknown-unknown -target-feature +3dnowa -emit-llvm -o - -Werror | FileCheck %s -check-prefix=GCC -check-prefix=CHECK 2 // RUN: %clang_cc1 %s -triple=x86_64-scei-ps4 -target-feature +3dnowa -emit-llvm -o - -Werror | FileCheck %s -check-prefix=PS4 -check-prefix=CHECK 3 4 // Don't include mm_malloc.h, it's system specific. 5 #define __MM_MALLOC_H 6 7 #include <x86intrin.h> 8 9 __m64 test_m_pavgusb(__m64 m1, __m64 m2) { 10 // PS4-LABEL: define i64 @test_m_pavgusb 11 // GCC-LABEL: define double @test_m_pavgusb 12 // CHECK: @llvm.x86.3dnow.pavgusb 13 return _m_pavgusb(m1, m2); 14 } 15 16 __m64 test_m_pf2id(__m64 m) { 17 // PS4-LABEL: define i64 @test_m_pf2id 18 // GCC-LABEL: define double @test_m_pf2id 19 // CHECK: @llvm.x86.3dnow.pf2id 20 return _m_pf2id(m); 21 } 22 23 __m64 test_m_pfacc(__m64 m1, __m64 m2) { 24 // PS4-LABEL: define i64 @test_m_pfacc 25 // GCC-LABEL: define double @test_m_pfacc 26 // CHECK: @llvm.x86.3dnow.pfacc 27 return _m_pfacc(m1, m2); 28 } 29 30 __m64 test_m_pfadd(__m64 m1, __m64 m2) { 31 // PS4-LABEL: define i64 @test_m_pfadd 32 // GCC-LABEL: define double @test_m_pfadd 33 // CHECK: @llvm.x86.3dnow.pfadd 34 return _m_pfadd(m1, m2); 35 } 36 37 __m64 test_m_pfcmpeq(__m64 m1, __m64 m2) { 38 // PS4-LABEL: define i64 @test_m_pfcmpeq 39 // GCC-LABEL: define double @test_m_pfcmpeq 40 // CHECK: @llvm.x86.3dnow.pfcmpeq 41 return _m_pfcmpeq(m1, m2); 42 } 43 44 __m64 test_m_pfcmpge(__m64 m1, __m64 m2) { 45 // PS4-LABEL: define i64 @test_m_pfcmpge 46 // GCC-LABEL: define double @test_m_pfcmpge 47 // CHECK: @llvm.x86.3dnow.pfcmpge 48 return _m_pfcmpge(m1, m2); 49 } 50 51 __m64 test_m_pfcmpgt(__m64 m1, __m64 m2) { 52 // PS4-LABEL: define i64 @test_m_pfcmpgt 53 // GCC-LABEL: define double @test_m_pfcmpgt 54 // CHECK: @llvm.x86.3dnow.pfcmpgt 55 return _m_pfcmpgt(m1, m2); 56 } 57 58 __m64 test_m_pfmax(__m64 m1, __m64 m2) { 59 // PS4-LABEL: define i64 @test_m_pfmax 60 // GCC-LABEL: define double @test_m_pfmax 61 // CHECK: @llvm.x86.3dnow.pfmax 62 return _m_pfmax(m1, m2); 63 } 64 65 __m64 test_m_pfmin(__m64 m1, __m64 m2) { 66 // PS4-LABEL: define i64 @test_m_pfmin 67 // GCC-LABEL: define double @test_m_pfmin 68 // CHECK: @llvm.x86.3dnow.pfmin 69 return _m_pfmin(m1, m2); 70 } 71 72 __m64 test_m_pfmul(__m64 m1, __m64 m2) { 73 // PS4-LABEL: define i64 @test_m_pfmul 74 // GCC-LABEL: define double @test_m_pfmul 75 // CHECK: @llvm.x86.3dnow.pfmul 76 return _m_pfmul(m1, m2); 77 } 78 79 __m64 test_m_pfrcp(__m64 m) { 80 // PS4-LABEL: define i64 @test_m_pfrcp 81 // GCC-LABEL: define double @test_m_pfrcp 82 // CHECK: @llvm.x86.3dnow.pfrcp 83 return _m_pfrcp(m); 84 } 85 86 __m64 test_m_pfrcpit1(__m64 m1, __m64 m2) { 87 // PS4-LABEL: define i64 @test_m_pfrcpit1 88 // GCC-LABEL: define double @test_m_pfrcpit1 89 // CHECK: @llvm.x86.3dnow.pfrcpit1 90 return _m_pfrcpit1(m1, m2); 91 } 92 93 __m64 test_m_pfrcpit2(__m64 m1, __m64 m2) { 94 // PS4-LABEL: define i64 @test_m_pfrcpit2 95 // GCC-LABEL: define double @test_m_pfrcpit2 96 // CHECK: @llvm.x86.3dnow.pfrcpit2 97 return _m_pfrcpit2(m1, m2); 98 } 99 100 __m64 test_m_pfrsqrt(__m64 m) { 101 // PS4-LABEL: define i64 @test_m_pfrsqrt 102 // GCC-LABEL: define double @test_m_pfrsqrt 103 // CHECK: @llvm.x86.3dnow.pfrsqrt 104 return _m_pfrsqrt(m); 105 } 106 107 __m64 test_m_pfrsqrtit1(__m64 m1, __m64 m2) { 108 // PS4-LABEL: define i64 @test_m_pfrsqrtit1 109 // GCC-LABEL: define double @test_m_pfrsqrtit1 110 // CHECK: @llvm.x86.3dnow.pfrsqit1 111 return _m_pfrsqrtit1(m1, m2); 112 } 113 114 __m64 test_m_pfsub(__m64 m1, __m64 m2) { 115 // PS4-LABEL: define i64 @test_m_pfsub 116 // GCC-LABEL: define double @test_m_pfsub 117 // CHECK: @llvm.x86.3dnow.pfsub 118 return _m_pfsub(m1, m2); 119 } 120 121 __m64 test_m_pfsubr(__m64 m1, __m64 m2) { 122 // PS4-LABEL: define i64 @test_m_pfsubr 123 // GCC-LABEL: define double @test_m_pfsubr 124 // CHECK: @llvm.x86.3dnow.pfsubr 125 return _m_pfsubr(m1, m2); 126 } 127 128 __m64 test_m_pi2fd(__m64 m) { 129 // PS4-LABEL: define i64 @test_m_pi2fd 130 // GCC-LABEL: define double @test_m_pi2fd 131 // CHECK: @llvm.x86.3dnow.pi2fd 132 return _m_pi2fd(m); 133 } 134 135 __m64 test_m_pmulhrw(__m64 m1, __m64 m2) { 136 // PS4-LABEL: define i64 @test_m_pmulhrw 137 // GCC-LABEL: define double @test_m_pmulhrw 138 // CHECK: @llvm.x86.3dnow.pmulhrw 139 return _m_pmulhrw(m1, m2); 140 } 141 142 __m64 test_m_pf2iw(__m64 m) { 143 // PS4-LABEL: define i64 @test_m_pf2iw 144 // GCC-LABEL: define double @test_m_pf2iw 145 // CHECK: @llvm.x86.3dnowa.pf2iw 146 return _m_pf2iw(m); 147 } 148 149 __m64 test_m_pfnacc(__m64 m1, __m64 m2) { 150 // PS4-LABEL: define i64 @test_m_pfnacc 151 // GCC-LABEL: define double @test_m_pfnacc 152 // CHECK: @llvm.x86.3dnowa.pfnacc 153 return _m_pfnacc(m1, m2); 154 } 155 156 __m64 test_m_pfpnacc(__m64 m1, __m64 m2) { 157 // PS4-LABEL: define i64 @test_m_pfpnacc 158 // GCC-LABEL: define double @test_m_pfpnacc 159 // CHECK: @llvm.x86.3dnowa.pfpnacc 160 return _m_pfpnacc(m1, m2); 161 } 162 163 __m64 test_m_pi2fw(__m64 m) { 164 // PS4-LABEL: define i64 @test_m_pi2fw 165 // GCC-LABEL: define double @test_m_pi2fw 166 // CHECK: @llvm.x86.3dnowa.pi2fw 167 return _m_pi2fw(m); 168 } 169 170 __m64 test_m_pswapdsf(__m64 m) { 171 // PS4-LABEL: define i64 @test_m_pswapdsf 172 // GCC-LABEL: define double @test_m_pswapdsf 173 // CHECK: @llvm.x86.3dnowa.pswapd 174 return _m_pswapdsf(m); 175 } 176 177 __m64 test_m_pswapdsi(__m64 m) { 178 // PS4-LABEL: define i64 @test_m_pswapdsi 179 // GCC-LABEL: define double @test_m_pswapdsi 180 // CHECK: @llvm.x86.3dnowa.pswapd 181 return _m_pswapdsi(m); 182 } 183