brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.8 KiB · f058dc9 Raw
198 lines · c
1// RUN: %clang_cc1 %s -ffreestanding -triple=x86_64-unknown-unknown -target-feature +cmpccxadd \2// RUN: -emit-llvm -o - -Wall -Werror -pedantic -Wno-gnu-statement-expression | FileCheck %s3 4#include <immintrin.h>5#include <stddef.h>6 7int test_cmpbexadd32(void *__A, int __B, int __C) {8  // CHECK-LABEL: @test_cmpbexadd32(9  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 0)10  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_O);11}12 13long long test_cmpbexadd64(void *__A, long long __B, long long __C) {14  // CHECK-LABEL: @test_cmpbexadd64(15  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 0)16  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_O);17}18 19int test_cmpbxadd32(void *__A, int __B, int __C) {20  // CHECK-LABEL: @test_cmpbxadd32(21  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 1)22  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_NO);23}24 25long long test_cmpbxadd64(void *__A, long long __B, long long __C) {26  // CHECK-LABEL: @test_cmpbxadd64(27  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 1)28  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_NO);29}30 31int test_cmplexadd32(void *__A, int __B, int __C) {32  // CHECK-LABEL: @test_cmplexadd32(33  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 2)34  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_B);35}36 37long long test_cmplexadd64(void *__A, long long __B, long long __C) {38  // CHECK-LABEL: @test_cmplexadd64(39  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 2)40  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_B);41}42 43int test_cmplxadd32(void *__A, int __B, int __C) {44  // CHECK-LABEL: @test_cmplxadd32(45  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 3)46  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_NB);47}48 49long long test_cmplxadd64(void *__A, long long __B, long long __C) {50  // CHECK-LABEL: @test_cmplxadd64(51  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 3)52  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_NB);53}54 55int test_cmpaxadd32(void *__A, int __B, int __C) {56  // CHECK-LABEL: @test_cmpaxadd32(57  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 4)58  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_Z);59}60 61long long test_cmpaxadd64(void *__A, long long __B, long long __C) {62  // CHECK-LABEL: @test_cmpaxadd64(63  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 4)64  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_Z);65}66 67int test_cmpaexadd32(void *__A, int __B, int __C) {68  // CHECK-LABEL: @test_cmpaexadd32(69  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 5)70  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_NZ);71}72 73long long test_cmpaexadd64(void *__A, long long __B, long long __C) {74  // CHECK-LABEL: @test_cmpaexadd64(75  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 5)76  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_NZ);77}78 79int test_cmpgxadd32(void *__A, int __B, int __C) {80  // CHECK-LABEL: @test_cmpgxadd32(81  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 6)82  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_BE);83}84 85long long test_cmpgxadd64(void *__A, long long __B, long long __C) {86  // CHECK-LABEL: @test_cmpgxadd64(87  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 6)88  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_BE);89}90 91int test_cmpgexadd32(void *__A, int __B, int __C) {92  // CHECK-LABEL: @test_cmpgexadd32(93  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 7)94  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_NBE);95}96 97long long test_cmpgexadd64(void *__A, long long __B, long long __C) {98  // CHECK-LABEL: @test_cmpgexadd64(99  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 7)100  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_NBE);101}102 103int test_cmpnoxadd32(void *__A, int __B, int __C) {104  // CHECK-LABEL: @test_cmpnoxadd32(105  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 8)106  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_S);107}108 109long long test_cmpnoxadd64(void *__A, long long __B, long long __C) {110  // CHECK-LABEL: @test_cmpnoxadd64(111  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 8)112  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_S);113}114 115int test_cmpnpxadd32(void *__A, int __B, int __C) {116  // CHECK-LABEL: @test_cmpnpxadd32(117  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 9)118  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_NS);119}120 121long long test_cmpnpxadd64(void *__A, long long __B, long long __C) {122  // CHECK-LABEL: @test_cmpnpxadd64(123  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 9)124  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_NS);125}126 127int test_cmpnsxadd32(void *__A, int __B, int __C) {128  // CHECK-LABEL: @test_cmpnsxadd32(129  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 10)130  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_P);131}132 133long long test_cmpnsxadd64(void *__A, long long __B, long long __C) {134  // CHECK-LABEL: @test_cmpnsxadd64(135  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 10)136  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_P);137}138 139int test_cmpnexadd32(void *__A, int __B, int __C) {140  // CHECK-LABEL: @test_cmpnexadd32(141  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 11)142  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_NP);143}144 145long long test_cmpnexadd64(void *__A, long long __B, long long __C) {146  // CHECK-LABEL: @test_cmpnexadd64(147  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 11)148  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_NP);149}150 151int test_cmpoxadd32(void *__A, int __B, int __C) {152  // CHECK-LABEL: @test_cmpoxadd32(153  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 12)154  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_L);155}156 157long long test_cmpoxadd64(void *__A, long long __B, long long __C) {158  // CHECK-LABEL: @test_cmpoxadd64(159  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 12)160  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_L);161}162 163int test_cmppxadd32(void *__A, int __B, int __C) {164  // CHECK-LABEL: @test_cmppxadd32(165  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 13)166  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_NL);167}168 169long long test_cmppxadd64(void *__A, long long __B, long long __C) {170  // CHECK-LABEL: @test_cmppxadd64(171  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 13)172  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_NL);173}174 175int test_cmpsxadd32(void *__A, int __B, int __C) {176  // CHECK-LABEL: @test_cmpsxadd32(177  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 14)178  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_LE);179}180 181long long test_cmpsxadd64(void *__A, long long __B, long long __C) {182  // CHECK-LABEL: @test_cmpsxadd64(183  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 14)184  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_LE);185}186 187int test_cmpexadd32(void *__A, int __B, int __C) {188  // CHECK-LABEL: @test_cmpexadd32(189  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 15)190  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_NLE);191}192 193long long test_cmpexadd64(void *__A, long long __B, long long __C) {194  // CHECK-LABEL: @test_cmpexadd64(195  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 15)196  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_NLE);197}198