brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.5 KiB · b331ae7 Raw
143 lines · plain
1; RUN: llc < %s -march=bpfel -mcpu=v4 -verify-machineinstrs -show-mc-encoding \2; RUN:   | FileCheck -check-prefixes=CHECK-LE %s3; RUN: llc < %s -march=bpfeb -mcpu=v4 -verify-machineinstrs -show-mc-encoding \4; RUN:   | FileCheck -check-prefixes=CHECK-BE %s5 6; Source:7;   void atomic_load_i8(char *p) {8;     (void)__atomic_load_n(p, __ATOMIC_RELAXED);9;     (void)__atomic_load_n(p, __ATOMIC_ACQUIRE);10;   }11;   void atomic_load_i16(short *p) {12;     (void)__atomic_load_n(p, __ATOMIC_RELAXED);13;     (void)__atomic_load_n(p, __ATOMIC_ACQUIRE);14;   }15;   void atomic_load_i32(int *p) {16;     (void)__atomic_load_n(p, __ATOMIC_RELAXED);17;     (void)__atomic_load_n(p, __ATOMIC_ACQUIRE);18;   }19;   void atomic_load_i64(long *p) {20;     (void)__atomic_load_n(p, __ATOMIC_RELAXED);21;     (void)__atomic_load_n(p, __ATOMIC_ACQUIRE);22;   }23;   void atomic_store_i8(char *p, char v) {24;     __atomic_store_n(p, v, __ATOMIC_RELAXED);25;     __atomic_store_n(p, v, __ATOMIC_RELEASE);26;   }27;   void atomic_store_i16(short *p, short v) {28;     __atomic_store_n(p, v, __ATOMIC_RELAXED);29;     __atomic_store_n(p, v, __ATOMIC_RELEASE);30;   }31;   void atomic_store_i32(int *p, int v) {32;     __atomic_store_n(p, v, __ATOMIC_RELAXED);33;     __atomic_store_n(p, v, __ATOMIC_RELEASE);34;   }35;   void atomic_store_i64(long *p, long v) {36;     __atomic_store_n(p, v, __ATOMIC_RELAXED);37;     __atomic_store_n(p, v, __ATOMIC_RELEASE);38;   }39 40define dso_local void @atomic_load_i8(ptr nocapture noundef readonly %p) local_unnamed_addr #0 {41; CHECK-LABEL: atomic_load_i842; CHECK-LE:      w2 = *(u8 *)(r1 + 0) # encoding: [0x71,0x12,0x00,0x00,0x00,0x00,0x00,0x00]43; CHECK-LE-NEXT: w1 = load_acquire((u8 *)(r1 + 0)) # encoding: [0xd3,0x11,0x00,0x00,0x00,0x01,0x00,0x00]44;45; CHECK-BE:      w2 = *(u8 *)(r1 + 0) # encoding: [0x71,0x21,0x00,0x00,0x00,0x00,0x00,0x00]46; CHECK-BE-NEXT: w1 = load_acquire((u8 *)(r1 + 0)) # encoding: [0xd3,0x11,0x00,0x00,0x00,0x00,0x01,0x00]47entry:48  %0 = load atomic i8, ptr %p monotonic, align 149  %1 = load atomic i8, ptr %p acquire, align 150  ret void51}52 53define dso_local void @atomic_load_i16(ptr nocapture noundef readonly %p) local_unnamed_addr #0 {54; CHECK-LABEL: atomic_load_i1655; CHECK-LE:      w2 = *(u16 *)(r1 + 0) # encoding: [0x69,0x12,0x00,0x00,0x00,0x00,0x00,0x00]56; CHECK-LE-NEXT: w1 = load_acquire((u16 *)(r1 + 0)) # encoding: [0xcb,0x11,0x00,0x00,0x00,0x01,0x00,0x00]57;58; CHECK-BE:      w2 = *(u16 *)(r1 + 0) # encoding: [0x69,0x21,0x00,0x00,0x00,0x00,0x00,0x00]59; CHECK-BE-NEXT: w1 = load_acquire((u16 *)(r1 + 0)) # encoding: [0xcb,0x11,0x00,0x00,0x00,0x00,0x01,0x00]60entry:61  %0 = load atomic i16, ptr %p monotonic, align 262  %1 = load atomic i16, ptr %p acquire, align 263  ret void64}65 66define dso_local void @atomic_load_i32(ptr nocapture noundef readonly %p) local_unnamed_addr #0 {67; CHECK-LABEL: atomic_load_i3268; CHECK-LE:      w2 = *(u32 *)(r1 + 0) # encoding: [0x61,0x12,0x00,0x00,0x00,0x00,0x00,0x00]69; CHECK-LE-NEXT: w1 = load_acquire((u32 *)(r1 + 0)) # encoding: [0xc3,0x11,0x00,0x00,0x00,0x01,0x00,0x00]70;71; CHECK-BE:      w2 = *(u32 *)(r1 + 0) # encoding: [0x61,0x21,0x00,0x00,0x00,0x00,0x00,0x00]72; CHECK-BE-NEXT: w1 = load_acquire((u32 *)(r1 + 0)) # encoding: [0xc3,0x11,0x00,0x00,0x00,0x00,0x01,0x00]73entry:74  %0 = load atomic i32, ptr %p monotonic, align 475  %1 = load atomic i32, ptr %p acquire, align 476  ret void77}78 79define dso_local void @atomic_load_i64(ptr nocapture noundef readonly %p) local_unnamed_addr #0 {80; CHECK-LABEL: atomic_load_i6481; CHECK-LE:      r2 = *(u64 *)(r1 + 0) # encoding: [0x79,0x12,0x00,0x00,0x00,0x00,0x00,0x00]82; CHECK-LE-NEXT: r1 = load_acquire((u64 *)(r1 + 0)) # encoding: [0xdb,0x11,0x00,0x00,0x00,0x01,0x00,0x00]83;84; CHECK-BE:      r2 = *(u64 *)(r1 + 0) # encoding: [0x79,0x21,0x00,0x00,0x00,0x00,0x00,0x00]85; CHECK-BE-NEXT: r1 = load_acquire((u64 *)(r1 + 0)) # encoding: [0xdb,0x11,0x00,0x00,0x00,0x00,0x01,0x00]86entry:87  %0 = load atomic i64, ptr %p monotonic, align 888  %1 = load atomic i64, ptr %p acquire, align 889  ret void90}91 92define dso_local void @atomic_store_i8(ptr nocapture noundef writeonly %p, i8 noundef signext %v) local_unnamed_addr #0 {93; CHECK-LABEL: atomic_store_i894; CHECK-LE:      *(u8 *)(r1 + 0) = w2 # encoding: [0x73,0x21,0x00,0x00,0x00,0x00,0x00,0x00]95; CHECK-LE-NEXT: store_release((u8 *)(r1 + 0), w2) # encoding: [0xd3,0x21,0x00,0x00,0x10,0x01,0x00,0x00]96;97; CHECK-BE:      *(u8 *)(r1 + 0) = w2 # encoding: [0x73,0x12,0x00,0x00,0x00,0x00,0x00,0x00]98; CHECK-BE-NEXT: store_release((u8 *)(r1 + 0), w2) # encoding: [0xd3,0x12,0x00,0x00,0x00,0x00,0x01,0x10]99entry:100  store atomic i8 %v, ptr %p monotonic, align 1101  store atomic i8 %v, ptr %p release, align 1102  ret void103}104 105define dso_local void @atomic_store_i16(ptr nocapture noundef writeonly %p, i16 noundef signext %v) local_unnamed_addr #0 {106; CHECK-LABEL: atomic_store_i16107; CHECK-LE:      *(u16 *)(r1 + 0) = w2 # encoding: [0x6b,0x21,0x00,0x00,0x00,0x00,0x00,0x00]108; CHECK-LE-NEXT: store_release((u16 *)(r1 + 0), w2) # encoding: [0xcb,0x21,0x00,0x00,0x10,0x01,0x00,0x00]109;110; CHECK-BE:      *(u16 *)(r1 + 0) = w2 # encoding: [0x6b,0x12,0x00,0x00,0x00,0x00,0x00,0x00]111; CHECK-BE-NEXT: store_release((u16 *)(r1 + 0), w2) # encoding: [0xcb,0x12,0x00,0x00,0x00,0x00,0x01,0x10]112entry:113  store atomic i16 %v, ptr %p monotonic, align 2114  store atomic i16 %v, ptr %p release, align 2115  ret void116}117 118define dso_local void @atomic_store_i32(ptr nocapture noundef writeonly %p, i32 noundef %v) local_unnamed_addr #0 {119; CHECK-LABEL: atomic_store_i32120; CHECK-LE:      *(u32 *)(r1 + 0) = w2 # encoding: [0x63,0x21,0x00,0x00,0x00,0x00,0x00,0x00]121; CHECK-LE-NEXT: store_release((u32 *)(r1 + 0), w2) # encoding: [0xc3,0x21,0x00,0x00,0x10,0x01,0x00,0x00]122;123; CHECK-BE:      *(u32 *)(r1 + 0) = w2 # encoding: [0x63,0x12,0x00,0x00,0x00,0x00,0x00,0x00]124; CHECK-BE-NEXT: store_release((u32 *)(r1 + 0), w2) # encoding: [0xc3,0x12,0x00,0x00,0x00,0x00,0x01,0x10]125entry:126  store atomic i32 %v, ptr %p monotonic, align 4127  store atomic i32 %v, ptr %p release, align 4128  ret void129}130 131define dso_local void @atomic_store_i64(ptr nocapture noundef writeonly %p, i64 noundef %v) local_unnamed_addr #0 {132; CHECK-LABEL: atomic_store_i64133; CHECK-LE:      *(u64 *)(r1 + 0) = r2 # encoding: [0x7b,0x21,0x00,0x00,0x00,0x00,0x00,0x00]134; CHECK-LE-NEXT: store_release((u64 *)(r1 + 0), r2) # encoding: [0xdb,0x21,0x00,0x00,0x10,0x01,0x00,0x00]135;136; CHECK-BE:      *(u64 *)(r1 + 0) = r2 # encoding: [0x7b,0x12,0x00,0x00,0x00,0x00,0x00,0x00]137; CHECK-BE-NEXT: store_release((u64 *)(r1 + 0), r2) # encoding: [0xdb,0x12,0x00,0x00,0x00,0x00,0x01,0x10]138entry:139  store atomic i64 %v, ptr %p monotonic, align 8140  store atomic i64 %v, ptr %p release, align 8141  ret void142}143